1.左移、右移指令
S7-200的左、右移位指令的梯形圖編程格式如圖10-5.1所示。
梯形圖中的SHL B為移位指令標記,其中:
SHL: SH為移位標記,L為左移(R為右移):
B:字節指令標記(W為16位字,WD為32位雙字);
IN:需要移位的存儲器地址;
OUT:結果存儲器地址。
S7-200的移位指令具有如下特點:
①S7-200的移位分為兩步執行。
——利用移位指令( MOV)將需要移位的數據移動到結果存儲器中,見圖10-5.1 (b)。如果僅需要對指定存儲器內容移位、且執行結果仍然保存在原存儲器中,則不需要執行本步驟,見圖10-5.1 (a)。
——對結果存儲器進行移位。
②S7-200執行移位指令時,將數據被移出后的“空位”自動補入狀態“0”。
③被移出的最后一位狀態被保存在系統標志寄存器SMl.1中。
④移位位數N-般不應超過移位數據本身的長度(字節操作為8,字操作為16,雙字操作為32),如果超過數據本身的長度,則需要進行“取余”處理。例如:對字節數據指定移動12位時,實際移動為4位(12除以8后取余數4);當N為0時,不進行移位操作,同時系統標志寄存器SMl.0被置“1”狀態。
2.循環左移、循環右移指令
S7-200的循環左、右移位指令的梯形圖編程格式如圖10-5.2所示。
梯形圖中的ROL B為移位指令標記,其中:
ROL: RO為循環移位標記,L為左移(R為右移):
B:字節指令標記(W為16位字,WD為32位雙字);
IN:需要移位的存儲器地址:
OUT:結果存儲器地址。
S7-200的移位指令可以將被移出的數據從另一端依次返回到移出數據后的空位上,實現數據的循環移動。其他特點與“左、右移位”指令相同。
3.移位寄存器指令
利用移位寄存器指令,可以將來自寄存器外部的二進制位信號( DATA),按照規定的方向逐步移入寄存器內。S7-200移位寄存器的梯形圖編程格式如圖10-5.3所示。
梯形圖中的SHRB為移位指令標記,其中:
DATA:二進制位狀態輸入;
S__ BIT:移位寄存器的最低位地址;
N:移位寄存器的長度與移位方向,正數為左移,輸入從最低位移入移位寄存器;負數為右移,輸入從最高位移入移位寄存器。
為了保證數據在每次“使能”輸入信號到來時只移動一位,“使能”輸入應使用邊沿指令。