SCL編譯過來的STL。
劉玉蓉
發(fā)布于2014-11-05 17:34
4
0
標(biāo)簽:
SET
SAVE
= L 10.2
L #lastvalue
L #NumberOfRejectBits
>I
JCN A7d0
L 1
T #lastvalue
A7d0: L #NumberOfRejectBits
L #lastvalue
T #index
TAK
T LW 12
TAK
A7d1: L #index
L LW 12
<=I
JCN A7d2
L #index
L 1
-I
T #bitvalue
L #bitvalue
ITD
DTR
L 8.000000e+000
/R
TRUNC
T #bytevalueDint
L #bytevalueDint
T #bytevalue
L #bytevalue
L 8
*I
L #bitvalue
TAK
-I
T #bitvalue
L #ByteOffset
L #bytevalue
+I
T #bytevalue
L #bytevalue
ITD
L L#0
+D
L L#8
*D
L #bitvalue
ITD
+D
L L#0
-D
L L#1
*D
LAR1
A M [AR1,P#0.0]
JCN A7d3
L #index
T #RejectMessageNumber
L #index
L 1
+I
T #lastvalue
JU A000
A7d3: L #index
L 1
+I
T #index
JU A7d1
A7d2: L 1
T #lastvalue
A000: SET
= #test
A L 10.2
SAVE
BE
其中 #NumberOfRejectBits為31,ByteOffset為42,RejectMessageNumber為輸出
請問這段程序的意圖是什么?
佳答案
看了一下程序,理解為:此NumberOfRejectBits為比較值,定義的初時值為31;存入地址寄存器中即為3.7,ByteOffset為偏移值,定義的初時值為42;如輸入lastvalue在1~31之間對應(yīng)地址就是0.1~3.7,加上偏移量即為42.0~45.7,程序中已經(jīng)定義為M區(qū)域?qū)ぶ?,即M42.0-M45.7;如輸入數(shù)值為1,程序的處理就是從M42.0開始往上逐位檢測到M45.7這一個32位數(shù)中個為1的信號將檢測的次數(shù)index賦給輸出;提外話,此程序有不嚴(yán)謹(jǐn)?shù)牡胤?,如果輸入的?shù)值超出了范圍,PLC將報錯,如未有相應(yīng)的組織塊,PLC將停機,除非將lastvalue定義為字節(jié);看程序的A7DX這種跳轉(zhuǎn)編號,像老外的程序,感覺老外編程應(yīng)該很嚴(yán)謹(jǐn)。