S7-200 PLC的移位指令可以對字節(B)、字(W)、雙字(DW)進行左移、右移、循環左移、循環右移等操作。指令格式如表3-4所示。 移位指令中的IN為(wei) 源操作數;N為(wei) 移位的位數:OUT為(wei) 目的操作數;DATA為(wei) 移位寄存器指令的待移入位數據;S - BIT為(wei) 移位寄存器指令的最低位;N為(wei) 移位寄存器指令的位數及方向控製字。要求源操作數和目的操作數的數據類型必須與(yu) 指令類型相匹配。
(1)左移指令SHL_W 對於(yu) 左移指令.按指定位數(N)對源操作數(IN)依次左移N位,左邊移出位自然丟(diu) 失,右邊空缺應補0,並將移位結果保存在目的操作數(OUT)中,源操作數(IN)保持不變。應用示例如圖3-4所示。
(2)右移指令SHR_W 對於(yu) 右移指令,按指定位數(N)對源操作數(IN)依次右移N位,右邊移出位自然丟(diu) 失,左邊空缺位補0,並將移位結果保存在目的操作數(OUT)中,源操作數(IN)保持不變。應用示例如圖3-5所示。
(3)循環左移指令ROL_W 對於(yu) 循環左移指令,按指定位數(N)對源操作數(IN)依次循環左移N位,左邊移出位補充到右邊空缺位,並將移位結果保存在目的操作數(OUT)中,源操作數(IN)保持不變。應用示例如圖3-6所示。
圖3-6 西門子plc ROL_W 循環左移指令應用示例
(4)循環右移指令 對於(yu) 循環右移指令,按指定位數(N)對源操作數(IN)依次循環右移N位,右邊移出位補充到左邊空缺位,並將移位結果保存在目的操作數(OUT)中,源操作數(IN)保持不變。應用示例如圖3-7所示。
圖3-7 ROR_W 循環右移指令應用示例 (5)移位寄存器 移位寄存器(SHRB)指令實際上是一種自定義(yi) 移位寄存器。移位寄存器(SHRB)指令將DATA數值移入移位寄存器,並由S_BIT指定移位寄存器的最低位,由N指定移位寄存器的長度和移位方向(+N表示“移位加”,-N表示“移位減”,移位寄存器的最大長度為(wei) 64位),移出位則放置在特殊功能存儲(chu) 器SM1.1(移出標誌位)中。 使用以下公式可計算“移位寄存器”的最高位的地址(MSB.b)。 其中,該公式計算出的整數部分為(wei) “移位寄存器”的最高位的字節地址,餘(yu) 數部分為(wei) “移位寄存器”的最高位的位序。例如:如果S_BIT為(wei) V33.4和N為(wei) 14,則“移位寄存器”的最高位的地址為(wei) V35.1。
圖3-8 移位寄存器指令應用示例 移位寄存器指令的應用示例如圖3-8所示。 在“移位減”(N為(wei) 負值)中,輸入數據(DATA)移入移位寄存器的最高位,並移出最低位(S_BIT)。移出的數據被放置在SM1. 1中。移位原理如圖3-9所示。
圖3-10 “移位加”的移位原理 在“移位加”(N為(wei) 正值)中,輸入數據(DATA)移入移位寄存器的最低位(由S-BIT指定),並移出移位寄存器的最高位。移出的數據被放置在SM1.1中。移位原理如圖3-10所示。