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