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