這一段您倆位看一下;當做好玩:
這是用 OMRON Structured Text Instruction(結構化文字)所編寫的一段判斷一個數值是否為可整除數值。若無法整除;允許使用者自訂放大被除數倍率再進行除算。
判斷一個數值是否為可整除數值;自然是以2來除它了。但是;OMRON Structured Text Instruction的 FUNCTION中並無類似C語言的"%"取餘數COMMEND FUNCTION可以運用;因此;寫了一連串IF ELSE END_IF 判斷式來加工它。
實際輸入輸出變數名稱:
StratRun (*啟動位元*)
Amplification(*放大倍率*)
EstimateVariables_1(*被除數輸入;INT類型*)
MathematicsDivided(*可整除輸出位元*)
UnMathematicsDivided(*不可整除輸出位元*)
NullComputation(*被除數為零;警告位元*)
IntraEstimateVariablesDub(*放大計算後結果*)
實際運用中;可使用於無法整除數值;將目前數值左移4位元(乘100倍);再進行計算!因此;利用它!隨時自動判斷數值狀態並調整數值成為可能。
[color=red]具體做法為:[/color]
除數固定為2;被除數(變數為 EstimateVariables_1)經過除算之後;商再乘回除數(IntraEstimateVariables_1 * 2)。
若EstimateVariables_1 與 (IntraEstimateVariables_1 * 2)數值相同!代表為可整除數值。
以下為完整源碼:
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;
(*====================================*)