1.左移、右移指令
s7-200的左、右移位指令的梯形圖編程格式如圖10-5.1所示。
梯形圖中的shl b為移位指令標(biāo)記,其中:
shl: sh為移位標(biāo)記,l為左移(r為右移):
b:字節(jié)指令標(biāo)記(w為16位字,wd為32位雙字);
in:需要移位的存儲器地址;
out:結(jié)果存儲器地址。
s7-200的移位指令具有如下特點(diǎn):
①s7-200的移位分為兩步執(zhí)行。
——利用移位指令( mov)將需要移位的數(shù)據(jù)移動到結(jié)果存儲器中,見圖10-5.1 (b)。如果僅需要對指定存儲器內(nèi)容移位、且執(zhí)行結(jié)果仍然保存在原存儲器中,則不需要執(zhí)行本步驟,見圖10-5.1 (a)。
——對結(jié)果存儲器進(jìn)行移位。
②s7-200執(zhí)行移位指令時,將數(shù)據(jù)被移出后的“空位”自動補(bǔ)入狀態(tài)“0”。
③被移出的最后一位狀態(tài)被保存在系統(tǒng)標(biāo)志寄存器sml.1中。
④移位位數(shù)n-般不應(yīng)超過移位數(shù)據(jù)本身的長度(字節(jié)操作為8,字操作為16,雙字操作為32),如果超過數(shù)據(jù)本身的長度,則需要進(jìn)行“取余”處理。例如:對字節(jié)數(shù)據(jù)指定移動12位時,實(shí)際移動為4位(12除以8后取余數(shù)4);當(dāng)n為0時,不進(jìn)行移位操作,同時系統(tǒng)標(biāo)志寄存器sml.0被置“1”狀態(tài)。
2.循環(huán)左移、循環(huán)右移指令
s7-200的循環(huán)左、右移位指令的梯形圖編程格式如圖10-5.2所示。
梯形圖中的rol b為移位指令標(biāo)記,其中:
rol: ro為循環(huán)移位標(biāo)記,l為左移(r為右移):
b:字節(jié)指令標(biāo)記(w為16位字,wd為32位雙字);
in:需要移位的存儲器地址:
out:結(jié)果存儲器地址。
s7-200的移位指令可以將被移出的數(shù)據(jù)從另一端依次返回到移出數(shù)據(jù)后的空位上,實(shí)現(xiàn)數(shù)據(jù)的循環(huán)移動。其他特點(diǎn)與“左、右移位”指令相同。
3.移位寄存器指令
利用移位寄存器指令,可以將來自寄存器外部的二進(jìn)制位信號( data),按照規(guī)定的方向逐步移入寄存器內(nèi)。s7-200移位寄存器的梯形圖編程格式如圖10-5.3所示。
梯形圖中的shrb為移位指令標(biāo)記,其中:
data:二進(jìn)制位狀態(tài)輸入;
s__ bit:移位寄存器的最低位地址;
n:移位寄存器的長度與移位方向,正數(shù)為左移,輸入從最低位移入移位寄存器;負(fù)數(shù)為右移,輸入從最高位移入移位寄存器。
為了保證數(shù)據(jù)在每次“使能”輸入信號到來時只移動一位,“使能”輸入應(yīng)使用邊沿指令。