登录
首页 PLC论坛 欧姆龙OMRON
回帖 发帖
正文

主题:pycathiu machelec 進來

点击:1025 回复:5

我在
http://www.cx-programmer.com/thread.php?fid=79 這裡發起 OMRON Structured Text Instruction Function Block .........不知是懂的人不多還是啥?
您兩位進來玩玩,同時探討一下吧。
06-06-24 23:06
這一段您倆位看一下;當做好玩:
附件
這是用 OMRON Structured Text Instruction(結構化文字)所編寫的一段判斷一個數值是否為可整除數值。若無法整除;允許使用者自訂放大被除數倍率再進行除算。
判斷一個數值是否為可整除數值;自然是以2來除它了。但是;OMRON Structured Text Instruction的 FUNCTION中並無類似C語言的"%"取餘數COMMEND FUNCTION可以運用;因此;寫了一連串IF ELSE END_IF 判斷式來加工它。
實際輸入輸出變數名稱:
[quote]StratRun (*啟動位元*)
Amplification(*放大倍率*)
EstimateVariables_1(*被除數輸入;INT類型*)
MathematicsDivided(*可整除輸出位元*)
UnMathematicsDivided(*不可整除輸出位元*)
NullComputation(*被除數為零;警告位元*)
IntraEstimateVariablesDub(*放大計算後結果*)[/quote]
實際運用中;可使用於無法整除數值;將目前數值左移4位元(乘100倍);再進行計算!因此;利用它!隨時自動判斷數值狀態並調整數值成為可能。
[color=red]具體做法為:[/color]
除數固定為2;被除數(變數為 EstimateVariables_1)經過除算之後;商再乘回除數(IntraEstimateVariables_1 * 2)。
若EstimateVariables_1 與 (IntraEstimateVariables_1 * 2)數值相同!代表為可整除數值。
以下為完整源碼:
[quote]IF StratRun THEN
       IntraEstimateVariables_1  := EstimateVariables_1;
    EstimateVariables_2 := 2;
    END_IF;
IF StratRun THEN
   BosomVariables := IntraEstimateVariables_1 / 2;
   IF BosomVariables *2 <>IntraEstimateVariables_1 THEN
       MathematicsDivided :=FALSE;
       UnMathematicsDivided :=TRUE;        
       ELSE
       UnMathematicsDivided :=FALSE;
       MathematicsDivided :=TRUE;
   END_IF;
       
END_IF;
   NullComputation :=FALSE;
ELSE
   NullComputation :=TRUE;
END_IF;
(*若無法整除;除數數值使用自定義倍數計算*)
(*====================================*)
IF NaughtBalance <> 0 AND UnMathematicsDivided THEN    
   IntraEstimateVariablesDub := ((NaughtBalance *Amplification)/2)/10;
END_IF;
(*====================================*)
[/quote]
06-06-24 23:10
看不懂呀
06-06-25 01:07
思路是这样的没错。
ST中,对于整型数A,B,如果(A/B)*B=A,那么就表示A能被B整除。这是普适的。好像也只能这样。
当然对于特殊的除数不用那么麻烦,如果除数是2,只要判断A的个位(最低位)是否为0即可。呵呵。
不过那个啟動位元应该是StartRun。
06-06-25 23:38
我不知道样判断的实际意义在哪儿,我做工程的经验实在很少,不能理解这种应用。麻烦利昌大哥给个解释吧
06-06-26 16:16
自己學著用;算它是命令概念習作。
06-06-26 19:40

工控新闻

更多新闻资讯