遼寧西門子PLC模塊代理

西門子S7-300/400 PLC的邏輯控制指令
邏輯控制指令是指邏輯塊內(nèi)的跳轉(zhuǎn)和循環(huán)指令。在沒有執(zhí)行跳轉(zhuǎn)和循環(huán)指令之前,各語(yǔ)句按先后順序執(zhí)行,這種執(zhí)行方式稱為線性掃描。而邏輯控制指令可以中斷原有的線性程序掃描,并跳轉(zhuǎn)到目標(biāo)地址處重新執(zhí)行線性程序掃描,跳轉(zhuǎn)指令不執(zhí)行跳轉(zhuǎn)指令和標(biāo)號(hào)之間的程序。目標(biāo)地址由跳轉(zhuǎn)指令后面的標(biāo)號(hào),該地址標(biāo)號(hào)指出程序要跳往何處,可向前(地址增大的方向)跳轉(zhuǎn),也可以向后(地址減小的方向)跳轉(zhuǎn),大跳轉(zhuǎn)距離為-32768或32767字。跳轉(zhuǎn)和循環(huán)指令的操作數(shù)是地址標(biāo)號(hào),標(biāo)號(hào)多由4個(gè)字符組成,*個(gè)字符必須是字母,其余字符可為字母或數(shù)字。與它相同的標(biāo)號(hào)還必須寫在程序跳轉(zhuǎn)的目的地前面,稱為目標(biāo)地址標(biāo)號(hào)。目標(biāo)地址標(biāo)號(hào)和跳轉(zhuǎn)指令必須在同一個(gè)塊內(nèi)。在同一個(gè)塊中的目標(biāo)地址標(biāo)號(hào)不能重名,在不同邏輯塊中的目標(biāo)標(biāo)號(hào)呵以重句。在STL程序中,目標(biāo)地址標(biāo)號(hào)與目標(biāo)指令用冒號(hào)分隔;在LAD程序中,目標(biāo)標(biāo)號(hào)必須放在一個(gè)網(wǎng)絡(luò)的開始。
邏輯控制包含各種跳轉(zhuǎn)指令,通過跳轉(zhuǎn)指令及程序跳轉(zhuǎn)標(biāo)簽(Label)控制程序的跳轉(zhuǎn)。
跳轉(zhuǎn)指令有幾種形式:無條件跳轉(zhuǎn)指令、多分支跳轉(zhuǎn)指令、與RLO和BR有關(guān)的跳轉(zhuǎn)指令、與信號(hào)狀態(tài)位有關(guān)的跳轉(zhuǎn)指令、與條件碼CC0和CC1有關(guān)的跳轉(zhuǎn)指令。
RLD指令是累加器1中的雙字(32位)循環(huán)左移。
使用RLD(雙字循環(huán)左移)指令,可以將累加器1中的內(nèi)容逐位循環(huán)左移。通過循環(huán)移位指令空出的位都填充從累加器1移出位的信號(hào)狀態(tài)。后循環(huán)移出的位被裝入狀態(tài)字位CC1。要循環(huán)移位的位數(shù)可以通過地址<數(shù)值>或通過累加器2低字低字節(jié)中的數(shù)值定義。
RLD:循環(huán)移位的位數(shù)通過累加器2低字低字節(jié)中的數(shù)值定義,允許數(shù)值范圍為0~255。如果累加器2低字低字節(jié)中的數(shù)值大于“0”,則CC0和OV狀態(tài)字位被置為“0”;如果循環(huán)移位位數(shù)等于“0”,則循環(huán)移位指令相當(dāng)于空操作( NOP)。
PLD<數(shù)值>:循環(huán)移位位數(shù)通過地址<數(shù)值>定義,數(shù)目的數(shù)據(jù)類型為無符號(hào)整型,允許數(shù)值范圍為0~32。如果<數(shù)值>大于“0”,則CC0和OV狀態(tài)字位被置為“0”;如果<數(shù)值>等于“0”,則循環(huán)移位指令相當(dāng)于空操作( NOP)。
循環(huán)移位指令將輸入IN的所有內(nèi)容向左或向右逐位循環(huán)移位。移空的位將用被移出的輸入IN的位的信號(hào)狀態(tài)補(bǔ)上。

循環(huán)移位的位數(shù)可以由指令帶參數(shù)的方法,允許值為0~32;也可以由累加器2低字的低字節(jié)值,允許值為0~255。若循環(huán)移位的位數(shù)為0,執(zhí)行循環(huán)指令相當(dāng)于空操作( NOP)。
循環(huán)移位指令后移出的位的信號(hào)狀態(tài)會(huì)載人狀態(tài)字的CC1位中。狀態(tài)字的CC0位和OV位會(huì)被復(fù)位為0。
循環(huán)指令分不帶進(jìn)位循環(huán)和帶進(jìn)位循環(huán)兩種。
①不帶進(jìn)位循環(huán)。不帶進(jìn)位循環(huán)移位指令的動(dòng)作過程是:將累加器1的內(nèi)容向左移(或右移)的位數(shù),右邊(或左邊)移出的位返回左邊(或右邊)空出的位,后移出的位的狀態(tài)同時(shí)傳送到狀態(tài)字的CC1位中,但CC1位不參與移位。不帶進(jìn)位循環(huán)移位是累加器1里面的32位做循環(huán)移位。
②帶進(jìn)位循環(huán):帶進(jìn)位循環(huán)移位指令的動(dòng)作過程是:將累加器1的內(nèi)容向左移(或右移)1位,移出位裝入CC1中,CC1位移到左邊(或右邊)空出的位,CC1位也參與移位。帶進(jìn)位循環(huán)移位是累加器1里面的32位和CC1位同時(shí)做循環(huán)移位,實(shí)際上是33位循環(huán)移位。
在梯形圖的循環(huán)移位指令中,EN為使能輸入端,ENO為使能輸出端,IN為操作數(shù)輸入端,OUT為運(yùn)算結(jié)果輸出端。
(1) STL的字右移指令SRW、SRW<數(shù)值>
使用SRW(字右移)指令,可以將累加器1低字中的內(nèi)容逐位右移,由移位指令空出的位用“0”填充,后移出的位被裝入狀態(tài)字位CC1。要移位的位數(shù)可以通過地址<數(shù)值>或通過累加器2低字低字節(jié)中的數(shù)值定義。
SRW:移位的位數(shù)通過累加器2低字低字節(jié)中的數(shù)值定義,允許數(shù)值范圍為0~255。如果移位位數(shù)大于16,則總是產(chǎn)生相同結(jié)果:ACCU1-L=0,CC1=0,CC0=0和OV=0;如果移位位數(shù)小于等于16,則狀態(tài)字位CC0和OV被置為“0”;如果移位位數(shù)等于“0”,則移位指令相當(dāng)于空操作( NOP)。
SRW<數(shù)值>:數(shù)目的數(shù)據(jù)類型為無符號(hào)整型。移位位數(shù)通過地址<數(shù)值>定義,允許數(shù)值范圍為0~15。如果<數(shù)值>大于“0”,則CC0和OV狀態(tài)字位被置為“0”;如果<數(shù)值>等于“0”,則移位指令相當(dāng)于空操作(NOP)。移位數(shù)目大于16時(shí),始終產(chǎn)生相同的結(jié)果:ACCU1-1=0、CC1=0、CC0=0和OV=0。

L +3 說明:將數(shù)值+3裝入累加器1中
L MW20 將累加器1中的內(nèi)容裝入累加器2中,將存儲(chǔ)字MW20的值裝入累加器1中
SRW 移位位數(shù)為累加器2低字低字節(jié)中的數(shù)值,將累加器1低字中的內(nèi)容右移3位
SPP NEXT 如果后移出的位(CC0)=,則跳轉(zhuǎn)到NEXT跳轉(zhuǎn)標(biāo)號(hào)
(2) LAD的字右移指令SHR_W
SHR_W指令是將累加器1低字中的16位字逐位右移,空出的位添0。
SHR_W(字右移指令)在使能(EN)輸入端為1時(shí),將輸入IN位的位0~15逐位右移,位16~ 31不受影響。輸入N移位的位數(shù)。如果N大于16,該命令將“0”寫入輸出OUT,并將狀態(tài)字中的位CC0和OV清0。從左邊到需填充空出位的所有位將填入N個(gè)零。移位操作的結(jié)果可以送輸出OUT中。如果N不等于“0”,則通過SHR_W指令將CC0位和OV位清0。
ENO和EN具有相同的信號(hào)狀態(tài)。
遼寧西門子PLC模塊代理