S7-200係列的基本邏輯指令與(yu) FX係列和CPM1A係列基本邏輯指令大體(ti) 相似,編程和梯形圖表達方式也相差不多,這裏列表表示S7-200係列的基本邏輯指令(見表)。
表 S7-200係列的基本邏輯指令
指令名稱 |
指令符 |
功能 |
操作數 |
取 |
LD bit |
讀入邏輯行或電路塊的**個(ge) 常開接點 |
Bit: I,Q,M,SM,T,C,V,S |
取反 |
LDN bit |
讀入邏輯行或電路塊的**個(ge) 常閉接點 | |
與(yu) |
A bit |
串聯一個(ge) 常開接點 | |
與(yu) 非 |
AN bit |
串聯一個(ge) 常閉接點 | |
或 |
O bit |
並聯一個(ge) 常開接點 | |
或非 |
ON bit |
並聯一個(ge) 常閉接點 | |
電路塊與(yu) |
ALD |
串聯一個(ge) 電路塊 |
無 |
電路塊或 |
OLD |
並聯一個(ge) 電路塊 | |
輸出 |
= bit |
輸出邏輯行的運算結果 |
Bit:Q,M,SM,T,C,V,S |
置位 |
S bit,N |
置繼電器狀態為(wei) 接通 |
Bit: Q,M,SM,V,S |
複位 |
R bit,N |
使繼電器複位為(wei) 斷開 |
S7-200係列PLC的比較指令
在SIEMENS S7-200的編程軟件STEP-7中,有專(zhuan) 門的比較指令:IN1與(yu) IN2比較,比較的數據類型可以是B、I(W)、D、R,即字節、字整數、雙字整數和實數;還可以有其他的比較式:>、<、≥、≤、<>等等。當滿足比較等式,則該觸點閉合。
與(yu) LMODSOFT指令對照:在LMODSOFT中,沒有直接的數的比較指令,但SUB指令可以通過其執行減法功能後的三個(ge) 輸出端的狀態實現整數的比較功能。
若與(yu) LMODSOFT 中的SUB指令對應,則在STEP-7中應有三個(ge) 比較指令: >、=、< 來分別對應SUB 指令的三個(ge) 輸出;若還要對應≥、≤、或<>,則根據SUB指令三個(ge) 輸出端的不同組合,均可找到對應的比較指令。
比如:①(30007)>(40030)
②(30007)=(40030)
③ (30007)<(40030)
①+②(30007)≥
②+③(30007)≤(40030)
①+③(30007)<>(40030)
S7-200係列PLC的定時器指令
類型、編號及分辨率
TON——接通延時
TONR——有記憶接通延時
TOF——斷開延時
3種分辨率(時基):1ms、10ms、100ms——分別對應不同的定時器號
定時器6個(ge) 要素:
指令格式(時基、編號等) 預置值——PT
使能——IN 複位——3種定時器不同
當前值——Txxx 定時器狀態(位)——可由觸點顯示
定時值=時基×預置值PT。由於(yu) 定時器的計時間隔與(yu) 程序的掃描周期並不同步,定時器可能在其時基(1ms、10ms、100ms)內(nei) 任何時間啟動,所以,未避免計時時間丟(diu) 失,一般要求設置PT預置值必須大於(yu) 最小需要的時間間隔。例如:使用10ms時基定時器實現140ms延時(時間間隔),則PT應設置為(wei) 15(10ms×15=150ms)。
2) 功能
(1) 接通延時定時器TON——一般用於(yu) 單一時間間隔的定時
指令格式:見圖,編號與(yu) 分辨率及定時器類型有關(guan) 。(見教材P221:Fig8-3-3a)
使能:——IN: I2.0 =“1”
當前值——T33,當在線(Online)時,此處顯示當前值
預置值——PT=3,即定時時間=10ms×3=30ms
複位——IN:I2.0 = “0”
定時器狀態(位)——“1”或“0”
與(yu) MODICON PLC的定時器指令對照:
區別:對MODICON PLC,當10001=“0” ,10002=“1”時,定時器當前值保持;當計時時間到,即(40040)= 30時,隻要10002=“1”,定時器也是保持
對S7-200 PLC, 隻要I0.0=“1”,即計時,當T33當前值=3時,定時器繼續計時,直至I0.0=“0”,定時器複位(相當於(yu) 10002=“0” )
(1) 斷開延時定時器TOF——一般用於(yu) 故障時間後的時間延時
指令格式:見圖,編號與(yu) 分辨率及定時器類型有關(guan) 。
注意: 定時器狀態(位)=“1”(置位)及當前值複0與(yu) 使能.I0.0=“1”同步;計時開始與(yu) 使能I0.0從(cong) “1”→“0”(斷開)同步,且當計時時間到而使能仍=“0”時,當前值保持。
(2) 有記憶接通延時定時器TONR——一般用於(yu) 累計許多時間間隔(指令功能及時序圖見教材P222:Fig8-3-3c)
指令格式:見圖,編號與(yu) 分辨率及定時器類型有關(guan) 。
注意: 定時器狀態(位)=“1”(置位)及當前值複0與(yu) 使能.I0.0=“1”同步;計時開始與(yu) 使能I0.0從(cong) “1”→“0”(斷開)同步,且當計時時間到而使能仍=“0”時,當前值保持。
(3) 有記憶接通延時定時器TONR——一般用於(yu) 累計許多時間間隔
S7-200係列PLC的計數器指令
1)類型及編號
CTU——增計數
CTD——減計數 C0~C255
CTUD——增減計數
計數器6個(ge) 要素: 指令格式(類型、編號等) 預置值——PV
使能——CU、CD 複位——R、LD
當前值——Cxxx 計數器狀態(位)——與(yu) 定時器類似
2)功能、時序圖及應用示例
此例為(wei) 一個(ge) 增減計數器的應用示例,其與(yu) MODICON PLC計數器指令的比較,同學可自己進行,並注意到,計數器指令的使能均是采樣上升沿(“0” →“1” )。
S7-200係列PLC其它常用指令
1.脈衝(chong) 產(chan) 生指令EU/ED的應用
EU指令在EU指令前的邏輯運算結果由OFF到ON時就產(chan) 生一個(ge) 寬度為(wei) 一個(ge) 掃描周期的脈衝(chong) ,驅動其後麵的輸出線圈。
2 .邏輯堆棧的操作
LPS為(wei) 進棧操作,LRD為(wei) 讀棧操作,LPP為(wei) 出棧操作。
S7-200係列PLC中有一個(ge) 9層堆棧,用於(yu) 處理邏輯運算結果,稱為(wei) 邏輯堆棧。
3 .NOT、NOP和MEND指令
NOT、NOP及MEND指令的形式及功能如表4-19所示。
表4-19 NOT、NOP及MEND指令的形式及功能
STL |
功能 |
操作數 |
NOT |
邏輯結果取反 |
— |
NOP |
空操作 |
— |
MEND |
無條件結束 |
— |
NOT為(wei) 邏輯結果取反指令,在複雜邏輯結果取反時為(wei) 用戶提供方便。NOP為(wei) 空操作,對程序沒有實質影響。MEND為(wei) 無條件結束指令,在編程結束時一定要寫(xie) 上該指令,否則會(hui) 出現編譯錯誤。調試程序時,在程序的適當位置插入MEND指令可以實現程序的分段調試。
4.比較指令
比較指令是將兩(liang) 個(ge) 操作數按規定的條件作比較,條件成立時,觸點就閉合。比較運算符有:=、>=、<=、>、<和<>。
(1)字節比較 字節比較用於(yu) 比較兩(liang) 個(ge) 字節型整數值INl和IN2的大小,字節比較是無符號的。比較式可以是LDB、AB或OB後直接加比較運算符構成。如:LDB=、AB<>、OB>=等。
整數INl和IN2的尋址範圍:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常數。
指令格式例如: LDB= VBl0,VBl2
(2)整數比較 整數比較用於(yu) 比較兩(liang) 個(ge) 一字長整數值INl和IN2的大小,整數比較是有符號的(整數範圍為(wei) 16#8000和16#7FFF之間)。比較式可以是LDW、AW或OW後直接加比較運算符構成。如:LDW=、AW<>。OW>=等。
整數INl和IN2的尋址範圍:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常數。
指令格式例如: LDW= VWl0,VWl2
(3)雙字整數比較 雙字整數比較用於(yu) 比較兩(liang) 個(ge) 雙字長整數值INl和IN2的大小,雙字整數比較是有符號的(雙字整數範圍為(wei) 16#80000000和16#7FFFFFFF之間)。比較式可以是LDD、AD或OD後直接加比較運算符構成。如:LDD=、AD<>、OD>=等。
雙字整數INl和IN2的尋址範圍:VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD和常數。
指令格式例如: LDD= VDl0,VDl2
(4)實數比較 實數比較用於(yu) 比較兩(liang) 個(ge) 雙字長實數值INl和IN2的大小,實數比較是有符號的(負實數範圍為(wei) -1.175495E-38和-3.402823E+38,正實數範圍為(wei) +1.175495E-38和+3.402823E+38)。比較式可以是LDR、AR或OR後直接加比較運算符構成。如:LDR=、AR<>、OR>=等。
實數INl和IN2的尋址範圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常數。
指令格式例如: LDR= VDl0,VDl2
S7-200PLC功能指令概述
般的邏輯控製係統用軟繼電器、定時器和計數器及基本指令就可以實現。利用功能指令可以開發出更複雜的控製係統,以致構成網絡控製係統。這些功能指令實際上是廠商為(wei) 滿足各種客戶的特殊需要而開發的通用子程序。功能指令的豐(feng) 富程度及其合用的方便程度是衡量PLC性能的一個(ge) 重要指標。
S7-200的功能指令很豐(feng) 富,大致包括這幾方麵:算術與(yu) 邏輯運算、傳(chuan) 送、移位與(yu) 循環移位、程序流控製、數據表處理、PID指令、數據格式變換、高速處理、通信以及實時時鍾等。
功能指令的助記符與(yu) 匯編語言相似,略具計算機知識的人學習(xi) 起來也不會(hui) 有太大困難。但S7-200係列PLC功能指令畢竟太多,一般讀者不必準確記憶其詳盡用法,需要時可可查閱產(chan) 品手冊(ce) 。
S7-200PLC四則運算指令介紹
四則運算指令如表4-20所示。
表4-20 四則運算指令
名稱 |
指令格式 (語句表) |
功能 |
操作數尋址範圍 |
加法指令 |
+I IN1,OUT |
兩(liang) 個(ge) 16位帶符號整數相加,得到一個(ge) 16位帶符號整數。 執行結果:IN1+OUT=OUT(在LAD和FBD中為(wei) :IN1+IN2=OUT) |
IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LD IN1和IN2還可以是AIW和常數 |
+D IN1,IN2 |
兩(liang) 個(ge) 32位帶符號整數相加,得到一個(ge) 32位帶符號整數。 執行結果:IN1+OUT=OUT(在LAD和FBD中為(wei) :IN1+IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是HC和常數 | |
+R IN1,OUT |
兩(liang) 個(ge) 32位實數相加,得到一個(ge) 32位實數。 執行結果:IN1+OUT=OUT(在LAD和FBD中為(wei) :IN1+IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以常數 | |
減法指令 |
-I IN1,OUT |
兩(liang) 個(ge) 16位帶符號整數相減,得到一個(ge) 16位帶符號整數。 執行結果:OUT-IN1=OUT(在LAD和FBD中為(wei) :IN1-IN2=OUT) |
IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LD IN1和IN2還可以是AIW和常數 |
-D IN1,OUT |
兩(liang) 個(ge) 32位帶符號整數相減,得到一個(ge) 32位帶符號整數。 執行結果:OUT-IN1=OUT(在LAD和FBD中為(wei) :IN1-IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是HC和常數 | |
-R IN1,OUT |
兩(liang) 個(ge) 32位實數相加,得到一個(ge) 32位實數。 執行結果:OUT-IN1=OUT(在LAD和FBD中為(wei) :IN1-IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以常數 | |
乘法指令 |
*I IN1,OUT |
兩(liang) 個(ge) 16位符號整數相乘,得到一個(ge) 16整數。 執行結果:IN1*OUT=OUT(在LAD和FBD中為(wei) :IN1*IN2=OUT) |
IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LD IN1和IN2還可以是AIW和常數 |
MUL IN1,OUT |
兩(liang) 個(ge) 16位帶符號整數相乘,得到一個(ge) 32位帶符號整數。 執行結果:IN1*OUT=OUT(在LAD和FBD中為(wei) :IN1*IN2=OUT) |
IN1,IN2:VW,IW,QW,MW,SW,SMW,LW,AIW,T,C,AC,*VD,*AC,*LD和常數 OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD | |
*D IN1,OUT |
兩(liang) 個(ge) 32位帶符號整數相乘,得到一個(ge) 32位帶符號整數。 執行結果:IN1*OUT=OUT(在LAD和FBD中為(wei) :IN1*IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是HC和常數 | |
*R IN1,OUT |
兩(liang) 個(ge) 32位實數相乘,得到一個(ge) 32位實數。 執行結果:IN1*OUT=OUT(在LAD和FBD中為(wei) :IN1*IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是常數 | |
除法指令 |
/I IN1,OUT |
兩(liang) 個(ge) 16位帶符號整數相除,得到一個(ge) 16位帶符號整數商,不保留餘(yu) 數。 執行結果:OUT/IN1=OUT(在LAD和FBD中為(wei) :IN1/IN2=OUT) |
IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LD IN1和IN2還可以是AIW和常數 |
DIV IN1,OUT |
兩(liang) 個(ge) 16位帶符號整數相除,得到一個(ge) 32位結果,其中低16位為(wei) 商,高16位為(wei) 結果。 執行結果:OUT/IN1=OUT(在LAD和FBD中為(wei) :IN1/IN2=OUT) |
IN1,IN2:VW,IW,QW,MW,SW,SMW,LW,AIW,T,C,AC,*VD,*AC,*LD和常數 OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD | |
/D IN1,OUT |
兩(liang) 個(ge) 32位帶符號整數相除,得到一個(ge) 32位整數商,不保留餘(yu) 數。 執行結果:OUT/IN1=OUT(在LAD和FBD中為(wei) :IN1/IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是HC和常數 | |
/R IN1,OUT |
兩(liang) 個(ge) 32位實數相除,得到一個(ge) 32位實數商。 執行結果:OUT/IN1=OUT(在LAD和FBD中為(wei) :IN1/IN2=OUT) |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是常數 | |
數學函數指令 |
SQRT IN,OUT |
把一個(ge) 32位實數(IN)開平方,得到32位實數結果(OUT) |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是常數 |
LN IN,OUT |
對一個(ge) 32位實數(IN)取自然對數,得到32位實數結果(OUT) | ||
EXP IN,OUT |
對一個(ge) 32位實數(IN)取以e為(wei) 底數的指數,得到32位實數結果(OUT) | ||
SIN IN,OUT |
分別對一個(ge) 32位實數弧度值(IN)取正弦、餘(yu) 弦、正切,得到32位實數結果(OUT) | ||
COS IN,OUT | |||
TAN IN,OUT | |||
增減指令 |
INCB OUT |
將字節無符號輸入數加1 執行結果:OUT+1=OUT(在LAD和FBD中為(wei) :IN+1=OUT) |
IN,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD IN還可以是常數 |
DECB OUT |
將字節無符號輸入數減1 執行結果:OUT-1=OUT(在LAD和FBD中為(wei) :IN-1=OUT) | ||
INCW OUT |
將字(16位)有符號輸入數加1 執行結果:OUT+1=OUT(在LAD和FBD中為(wei) :IN+1=OUT) |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN還可以是AIW和常數 | |
DECW OUT |
將字(16位)有符號輸入數減1 執行結果:OUT-1=OUT(在LAD和FBD中為(wei) :IN-1=OUT) | ||
INCD OUT |
將雙字(32位)有符號輸入數加1 執行結果:OUT+1=OUT(在LAD和FBD中為(wei) :IN+1=OUT) |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是HC和常數 | |
DECD OUT |
將字(32位)有符號輸入數減1 執行結果:OUT-1=OUT(在LAD和FBD中為(wei) :IN-1=OUT) |
S7-200PLC邏輯運算指令
邏輯運算指令如表4-21所示。
表4-21 邏輯運算指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
字節邏輯運算指令 |
ANDB IN1,OUT |
將字節IN1和OUT按位作邏輯與(yu) 運算,OUT輸出結果 |
IN1,IN2,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD IN1和IN2還可以是常數 |
ORB IN1,OUT |
將字節IN1和OUT按位作邏輯或運算,OUT輸出結果 | ||
XORB IN1,OUT |
將字節IN1和OUT按位作邏輯異或運算,OUT輸出結果 | ||
INVB OUT |
將字節OUT按位取反,OUT輸出結果 | ||
字邏輯運算指令 |
ANDW IN1,OUT |
將字IN1和OUT按位作邏輯與(yu) 運算,OUT輸出結果 |
IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN1和IN2還可以是AIW和常數 |
ORW IN1,OUT |
將字IN1和OUT按位作邏輯或運算,OUT輸出結果 | ||
XORW IN1,OUT |
將字IN1和OUT按位作邏輯異或運算,OUT輸出結果 | ||
INVW OUT |
將字OUT按位取反,OUT輸出結果 | ||
雙字邏輯運算指令 |
ANDD IN1,OUT |
將雙字IN1和OUT按位作邏輯與(yu) 運算,OUT輸出結果 |
IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN1和IN2還可以是HC和常數 |
ORD IN1,OUT |
將雙字IN1和OUT按位作邏輯或運算,OUT輸出結果 | ||
XORD IN1,OUT |
將雙字IN1和OUT按位作邏輯異或運算,OUT輸出結果 | ||
INVD OUT |
將雙字OUT按位取反,OUT輸出結果 |
S7-200PLC數據傳(chuan) 送指令
數據傳(chuan) 送指令如表4-22所示。
表4-22 數據傳(chuan) 送指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
|
單一傳(chuan) 送指令 |
MOVB IN,OUT |
將IN的內(nei) 容拷貝到OUT中 IN和OUT的數據類型應相同,可分別為(wei) 字,字節,雙字,實數 |
IN,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD IN還可以是常數 |
|
MOVW IN,OUT |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN還可以是AIW和常數 OUT還可以是AQW |
|||
MOVD IN,OUT |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是HC,常數,&VB,&IB,&QB,&MB,&T,&C |
|||
MOVR IN,OUT |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是常數 |
|||
BIR IN,OUT |
立即讀取輸入IN的值,將結果輸出到OUT |
IN:IB OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD |
||
BIW IN,OUT |
立即將IN單元的值寫(xie) 到OUT所指的物理輸出區 |
IN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常數 OUT:QB |
||
塊傳(chuan) 送指令 |
BMB IN,OUT,N |
將從(cong) IN開始的連續N個(ge) 字節數據拷貝到從(cong) OUT開始的數據塊 N的有效範圍是1~255 |
IN,OUT:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LD N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常數 |
|
BMW IN,OUT,N |
將從(cong) IN開始的連續N個(ge) 字數據拷貝到從(cong) OUT開始的數據塊 N的有效範圍是1~255 |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,*VD,*AC,*LD IN還可以是AIW OUT還可以是AQW N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常數 |
||
BMD IN,OUT,N |
將從(cong) IN開始的連續N個(ge) 雙字數據拷貝到從(cong) OUT開始的數據塊 N的有效範圍是1~255 |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD, *VD,*AC,*LD N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD和常數 |
S7-200PLC移位與(yu) 循環移位指令
移位與(yu) 循環移位指令如表4-23所示。
表4-23 移位與(yu) 循環移位指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
字節移位指令 |
SRB OUT,N |
將字節OUT右移N位,最左邊的位依次用0填充 |
IN,OUT,N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD IN和N還可以是常數 |
SLB OUT,N |
將字節OUT左移N位,最右邊的位依次用0填充 | ||
RRB OUT,N |
將字節OUT循環右移N位,從(cong) 最右邊移出的位送到OUT的最左位 | ||
RLB OUT,N |
將字節OUT循環左移N位,從(cong) 最左邊移出的位送到OUT的最右位 | ||
字移位指令 |
SRW OUT,N |
將字OUT右移N位,最左邊的位依次用0填充 |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN還可以是AIW和常數 N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 |
SLW OUT,N |
將字OUT左移N位,最右邊的位依次用0填充 | ||
RRW OUT,N |
將字OUT循環右移N位,從(cong) 最右邊移出的位送到OUT的最左位 | ||
RLW OUT,N |
將字OUT循環左移N位,從(cong) 最左邊移出的位送到OUT的最右位 | ||
雙字移位指令 |
SRD OUT,N |
將雙字OUT右移N位,最左邊的位依次用0填充 |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是HC和常數 N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 |
SLD OUT,N |
將雙字OUT左移N位,最右邊的位依次用0填充 | ||
RRD OUT,N |
將雙字OUT循環右移N位,從(cong) 最右邊移出的位送到OUT的最左位 | ||
RLD OUT,N |
將雙字OUT循環左移N位,從(cong) 最左邊移出的位送到OUT的最右位 | ||
位移位寄存器指令 |
SHRB DATA,S_BIT,N |
將DATA的值(位型)移入移位寄存器;S_BIT**移位寄存器的**位,N**移位寄存器的長度(正向移位=N,反向移位=-N) |
DATA,S_BIT:I,Q,M,SM,T,C,V,S,L N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 |
S7-200PLC交換和填充指令
交換和填充指令如表4-24所示。
表4-24 交換和填充指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
換字節指令 |
SWAP IN |
將輸入字IN的高位字節與(yu) 低位字節的內(nei) 容交換,結果放回IN中 |
IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD |
填充指令 |
FILL IN,OUT,N |
用輸入字IN填充從(cong) OUT開始的N個(ge) 字存儲(chu) 單元 N的範圍為(wei) 1~255 |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN還可以是AIW和常數 OUT還可以是AQW N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 |
S7-200PLC 表操作指令
表操作指令如表4-25所示。
表4-25 表操作指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
表存數指令 |
ATT DATA,TABLE |
將一個(ge) 字型數據DATA添加到表TABLE的末尾。EC值加1 |
DATA,TABLE:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD DATA還可以是AIW,AC和常數 |
表取數指令 |
FIFO TABLE,DATA |
將表TABLE的**個(ge) 字型數據刪除,並將它送到DATA**的單元。表中其餘(yu) 的數據項都向前移動一個(ge) 位置,同時實際填表數EC值減1 |
DATA,TABLE:VW,IW,QW,MW,SW,SMW,LW,T,C, *VD,*AC,*LD DATA還可以是AQW和AC |
LIFO TABLE,DATA |
將表TABLE的最後一個(ge) 字型數據刪除,並將它送到DATA**的單元。剩餘(yu) 數據位置保持不變,同時實際填表數EC值減1 | ||
表查找指令 |
FND= TBL,PTN,INDEX FND<> TBL,PTN,INDEX FND< TBL,PTN,INDEX FND> TBL,PTN,INDEX |
搜索表TBL,從(cong) INDEX**的數據項開始,用給定值PTN檢索出符合條件(=,<>,<,>)的數據項 如果找到一個(ge) 符合條件的數據項,則INDEX指明該數據項在表中的位置。如果一個(ge) 也找不到,則INDEX的值等於(yu) 數據表的長度。為(wei) 了搜索下一個(ge) 符合的值,在再次使用該指令之前,必須先將INDEX加1 |
TBL:VW,IW,QW,MW,SMW,LW,T,C, *VD,*AC,*LD PTN,INDEX:VW,IW,QW,MW,SW,SMW,LW,T,C,AC, *VD,*AC,*LD PTN還可以是AIW和AC |
S7-200PLC 數據轉換指令
數據轉換指令如表4-26所示。
表4-26 數據轉換指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
數據類型轉換指令 |
BTI IN,OUT |
將字節輸入數據IN轉換成整數類型,結果送到OUT,無符號擴展 |
IN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD |
ITB IN,OUT |
將整數輸入數據IN轉換成一個(ge) 字節,結果送到OUT。輸入數據超出字節範圍(0~255)則產(chan) 生溢出 |
IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,*VD,*AC,*LD,常數 OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD | |
DTI IN,OUT |
將雙整數輸入數據IN轉換成整數,結果送到OUT。 |
IN:VD,ID,QD,MD,SD,SMD,LD,HC,AC,*VD,*AC,*LD,常數 OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD | |
ITD IN,OUT |
將整數輸入數據IN轉換成雙整數(符號進行擴展),結果送到OUT |
IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,*VD,*AC,*LD,常數 OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD | |
ROUND IN,OUT |
將實數輸入數據IN轉換成雙整數,小數部分四舍五入,結果送到OUT |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是常數 在ROUND指令中IN還可以是HC | |
TRUNC IN,OUT |
將實數輸入數據IN轉換成雙整數,小數部分直接舍去,結果送到OUT | ||
DTR IN,OUT |
將雙整數輸入數據IN轉換成實數,結果送到OUT |
IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD IN還可以是HC和常數 | |
BCDI OUT |
將BCD碼輸入數據IN轉換成整數,結果送到OUT。IN的範圍為(wei) 0~9999 |
IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD IN還可以是AIW和常數 AC和常數 | |
IBCD OUT |
將整數輸入數據IN轉換成BCD碼,結果送到OUT。IN的範圍為(wei) 0~9999 | ||
編碼譯碼指令 |
ENCO IN,OUT |
將字節輸入數據IN的**有效位(值為(wei) 1的位)的位號輸出到OUT**的字節單元的低4位 |
IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,*VD,*AC,*LD,常數 OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD |
DECO IN,OUT |
根據字節輸入數據IN的低4位所表示的位號將OUT所**的字單元的相應位置1,其它位置0 |
IN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常數 IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AQW,AC,*VD,*AC,*LD | |
段碼指令 |
SEG IN,OUT |
根據字節輸入數據IN的低4位有效數字產(chan) 生相應的七段碼,結果輸出到OUT,OUT的**位恒為(wei) 0 |
IN,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD IN還可以是常數 |
字符串轉換指令 |
ATH IN,OUT,LEN |
把從(cong) IN開始的長度為(wei) LEN的ASCⅡ碼字符串轉換成16進製數,並存放在以OUT為(wei) 首地址的存儲(chu) 區中。合法的ASCⅡ碼字符的16進製值在30H~39H,41H~46H之間,字符串的**長度為(wei) 255個(ge) 字符 |
IN,OUT,LEN:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LD LEN還可以是AC和常數 |
S7-200PLC 特殊指令
特殊指令如表4-27所示。PLC中一些實現特殊功能的硬件需要通過特殊指令來使用,可實現特定的複雜的控製目的,同時程序的編製非常簡單。
表4-27 特殊指令
名稱 |
指令格式 (語句表) |
功能 |
操作數 |
中斷指令 |
ATCH INT,EVNT |
把一個(ge) 中斷事件(EVNT)和一個(ge) 中斷程序聯係起來,並允許該中斷事件 |
INT:常數 EVNT:常數(CPU221/222:0~12,19~23,27~33;CPU224:0~23,27~33;CPU226:0~33) |
DTCH EVNT |
截斷一個(ge) 中斷事件和所有中斷程序的聯係,並禁止該中斷事件 | ||
ENI |
全局地允許所有被連接的中斷事件 |
無 | |
DISI |
全局地關(guan) 閉所有被連接的中斷事件 | ||
CRETI |
根據邏輯操作的條件從(cong) 中斷程序中返回 | ||
RETI |
位於(yu) 中斷程序結束,是必選部分,程序編譯時軟件自動在程序結尾加入該指令 | ||
通信指令 |
NETR TBL,PORT |
初始化通訊操作,通過指令端口(PORT)從(cong) 遠程設備上接收數據並形成表(TBL)。可以從(cong) 遠程站點讀最多16個(ge) 字節的信息 |
TBL:VB,MB,*VD,*AC,*LD PORT:常數 |
NETW TBL,PORT |
初始化通訊操作,通過**端口(PORT)向遠程設備寫(xie) 表(TBL)中的數據,可以向遠程站點寫(xie) 最多16個(ge) 字節的信息 | ||
XMT TBL,PORT |
用於(yu) 自由端口模式。**激活發送數據緩衝(chong) 區(TBL)中的數據,數據緩衝(chong) 區的**個(ge) 數據指明了要發送的字節數,PORT**用於(yu) 發送的端口 |
TBL:VB,IB,QB,MB,SB,SMB,*VD,*AC,*LD PORT:常數(CPU221/222/224為(wei) 0;CPU226為(wei) 0或1) | |
RCV TBL,PORT |
激活初始化或結束接收信息的服務。通過**端口(PORT)接收的信息存儲(chu) 於(yu) 數據緩衝(chong) 區(TBL),數據緩衝(chong) 區的**個(ge) 數據指明了接收的字節數 | ||
GPA ADDR,PORT |
讀取PORT**的CPU口的站地址,將數值放入ADDR**的地址中 |
ADDR:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD 在SPA指令中ADDR還可以是常數 PORT:常數 | |
SPA ADDR,PORT |
將CPU口的站地址(PORT)設置為(wei) ADDR**的數值 | ||
時鍾指令 |
TODR T |
讀當前時間和日期並把它裝入一個(ge) 8字節的緩衝(chong) 區(起始地址為(wei) T) |
T:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LD |
TODW T |
將包含當前時間和日期的一個(ge) 8字節的緩衝(chong) 區(起始地址是T)裝入時鍾 | ||
高速計數器指令 |
HDEF HSC,MODE |
為(wei) **的高速計數器分配一種工作模式。每個(ge) 高速計數器使用之前必須使用HDEF指令,且隻能使用一次 |
HSC:常數(0~5) MODE:常數(0~11) |
HSC N |
根據高速計數器特殊存儲(chu) 器位的狀態,按照HDEF指令**的工作模式,設置和控製高速計數器。N**了高速計數器號 |
N:常數(0~5) | |
高速脈衝(chong) 輸出指令 |
PLS Q |
檢測用戶程序設置的特殊存儲(chu) 器位,激活由控製位定義(yi) 的脈衝(chong) 操作,從(cong) Q0.0或Q0.1輸出高速脈衝(chong) 可用於(yu) 激活高速脈衝(chong) 串輸出(PTO)或寬度可調脈衝(chong) 輸出(PWM) |
Q:常數(0或1) |
PID回路指令 |
PID TBL,LOOP |
運用回路表中的輸入和組態信息,進行PID運算。要執行該指令,邏輯堆棧頂(TOS)必須為(wei) ON狀態。TBL**回路表的起始地址,LOOP**控製回路號 回路表包含9個(ge) 用來控製和監視PID運算的參數:過程變量當前值(PV n ),過程變量前值(PV n-1 ),給定值(SP n ),輸出值(M n ),增益(Kc),采樣時間(Ts),積分時間(Ti),微分時間(Td)和積分項前值(MX) 為(wei) 使PID計算是以所要求的采樣時間進行,應在定時中斷執行中斷服務程序或在由定時器控製的主程序中完成,其中定時時間必須填入回路表中,以作為(wei) PID指令的一個(ge) 輸入參數 |
TBL:VB LOOP:常數 |