西門子plc代理商 西門子plc代理商
Address Decl. Symbol Data Type Initial Value Comment
0.0 In PIW_Addr INT
模入模塊通道起始地址
2.0 In CH_LEN INT
要讀入的通道數(shù)
4.0 In DB_No INT
存儲數(shù)據(jù)塊號
6.0 In DBW_Addr INT
存儲在數(shù)據(jù)塊中的字地址
Network 1
L #DB_No
T LW0
OPN DB[LW 0] 打開存儲數(shù)據(jù)塊
L #PIW_Addr
SLD 3 形成模入模塊地址指針
T LD4 在臨時本地數(shù)據(jù)雙字LD 4中存儲模入模塊地址指針
L #DBW_Addr
SLD 3 形成數(shù)據(jù)塊存儲地址指針
T LD8 在臨時本地數(shù)據(jù)雙字LD 8中存入數(shù)據(jù)塊存儲地址指針
L #CH_LEN 以要讀入的通道數(shù)為循環(huán)次數(shù),裝入累加器1
NEXT:T LW 0
將累加器1的值,裝入循環(huán)次數(shù)計數(shù)器LW0(臨時本地數(shù)據(jù)字)
L LD4
LARl 將模入模塊地址指針裝入地址寄存器1
L PIW[ARl,P#0.0] 讀模入模塊裝入累加器1
T LW2 將累加器1的內(nèi)容暫存入緩沖器LW2
L LD8
LARl 將數(shù)據(jù)塊存儲地址指針裝入地址寄存器1
L LW2 將數(shù)據(jù)緩沖器中的內(nèi)容裝入累加器1
T DBW[ARl,P#0.0] 將累加器的內(nèi)容存入數(shù)據(jù)塊中
L LD4 AR1+P#2.0→AR1
+ L#16 ACC1+(.._0001_0 000)
T LD4 調(diào)整模入模塊地址指針,指向下一通道Acc1+(bb bbbb bxxx)
L LD8
+ L#16
T LD8 調(diào)整數(shù)據(jù)塊存儲地址指針,指向下一存儲地址
L LW0 將循環(huán)次數(shù)計數(shù)器LW0的值裝入累加器1
LOOP NEXT 若累加器1的值不為0,將累加器減1繼續(xù)循環(huán);若累加
器為0,則結束
在FC100中,寄存器間接尋址指令OP NDB[LW0]使用了臨時本地數(shù)據(jù)LW0,變量表中定義的臨時變量雖然也在L堆棧中,但不能用于存儲器間接尋址,從這里也可看出臨時本地數(shù)據(jù)與臨時變量的區(qū)別。程序中LW2、LD4和LD8起的作用也可用臨時變量替代。
下面舉例說明如何使用FC100。在某應用中,機架0的4號槽位安裝了一個8模入模塊(地址256開始),若要將前6個模入模塊信號讀回,存入DB50.DBW10開始的6個字單元中,可按下列形式調(diào)用FC100:
CALL FC100
PIW_Add:= 256
CH_LEN:= 6
DB_No:= 50
DBW_Addr:= 10
數(shù)據(jù)塊
數(shù)據(jù)塊定義在S7 CPU存儲器中,用戶可在存儲器中建立一個或多個數(shù)據(jù)塊。每個數(shù)據(jù)塊可大可小,但CPU對數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制,如對于CPU314,用作數(shù)據(jù)塊的存儲器多為8 KB(8192 B),用戶定義的數(shù)據(jù)總量不能超出這個限制。對數(shù)據(jù)塊必須遵循先定義后使用的原則,否則,將造成系統(tǒng)錯誤。