移位寄存器指令SHRB是將DATA數值移入移位寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的長度和移位方向(移位加 = N,移位減 = -N)。移位寄存器的最大長度是64位的,可以正也可以負。我們(men) 要注意的是SHRB指令移出的每個(ge) 位是被放置在溢出內(nei) 存位(SM1.1)中的。
下麵便以以下的程序來講解指令的使用,用I0.2的上升沿來執行移位寄存器指令,那麽(me) 就是一個(ge) 掃描周期移一位的,指令中V100.0是移位寄存器的最低位,I0.3裏麵存的是0或1的數值,指令指定是移位加的,移位寄存器的長度是4。我們(men) 結合下麵的時序圖和移位的圖來看,若V100為(wei) 0000 0101,因為(wei) 移位寄存器的長度是4,那麽(me) 隻有0101,當I0.3為(wei) 1時,執行第一次移位,把1移到移位寄存器的最低位,把移出的位的值0放置到SM1.1中,那麽(me) SM1.1為(wei) 0,當I0.3為(wei) 0時,執行第二次移位,把0移到移位寄存器的最低位,把移出的位的值1放置到SM1.1中,那麽(me) SM1.1為(wei) 1。
在順序控製或步進控製中,應用移位寄存器編程是很方便的,移位寄存器指令如圖所示。
1)移位寄存器有3個(ge) 數據輸入端:
DATA:移位寄存器的數據輸入端,數據類型為(wei) BOOL(位)。
S_BIT:組成移位寄存器的最低位,數據類型為(wei) BOOL(位)。
N:移位寄存器的長度和移位方向,-64≤N≤64,當N 》0時為(wei) 正向移位(從(cong) 移位寄存器的最低位移入,由最高位移出),當N 《0時為(wei) 反向移位(從(cong) 移位寄存器的最高位移入,由最低位移出)。
2)移位寄存器的特點:
·移位寄存器的數據類型無字節型、字型、雙字型之分,移位寄存器的長度N由程序指定。
·移位寄存器的組成:
最低位為(wei) :S_BIT;
最高位的計算方法為(wei) :MSB=S_BIT+(|N|-1)/8。S7-200的編址均為(wei) 8進製,相加時要字節和字節相加,位和位相加,並且逢8進1;例如:
S_BIT= V23.4,N=15,則MSB= V23.4+(15-1)/8=
移位寄存器的組成:V23.4~V23.7、V24.0~V24.7、V25.0、V25.1、V25.2,共15位。
·移位寄存器指令的功能是:當允許輸入端EN有效時,如果N》0,則將移位數據DATA填入移位寄存器的最低位(S_BIT);如果N《0,則填入到移位寄存器的最高位,移位寄存器的其他位按照N指定的方向(正向或反向),依次串行移位。
·移位寄存器的移出端與(yu) SM1.1(溢出)連接。
移位寄存器指令影響的特殊繼電器:SM1.0(零),SM1.1(溢出)。當移位操作結果為(wei) 0時,SM1.0自動置位;SM1.1的狀態由每次移出位的狀態決(jue) 定。
影響允許輸出ENO正常工作的出錯條件為(wei) :SM4.3(運行時間)、0006(間接尋址),0091(操作數超界),0092(計數區錯誤)。
【例】 移位寄存器指令的應用如圖所示。
下麵再看一個(ge) 程序案例,更深入地來學習(xi) 一下這個(ge) 移位寄存器指令。
1、產(chan) 品檢測分揀機,輸送帶上的產(chan) 品經過一台檢測裝置時,檢測裝置輸出檢測結果到I0.0,有產(chan) 品時為(wei) 1。I0.1檢測產(chan) 品的好壞,若I0.1為(wei) 0則產(chan) 品是好的,若I0.1為(wei) 1則產(chan) 品是壞的。在第4個(ge) 產(chan) 品位置有一個(ge) 推產(chan) 品的氣缸Q0.0。若檢測的產(chan) 品為(wei) 壞時,到達第4個(ge) 產(chan) 品位置時,Q0.0輸出,氣缸動作,產(chan) 品被推出,1s後氣缸退回,傳(chuan) 送帶繼續工作,進行產(chan) 品的檢測。
下麵就分析一下程序,檢測裝置檢測到有產(chan) 品時I0.0為(wei) 1,I0.1檢測產(chan) 品的好壞,產(chan) 品壞為(wei) 1,指定移位寄存器的最低位為(wei) M0.0,移位寄存器的長度為(wei) 4。因為(wei) 在第4個(ge) 產(chan) 品位置有一個(ge) 氣缸Q0.0,若I0.1為(wei) 1時,到達第4個(ge) 產(chan) 品位置時,那麽(me) 就用M0.3驅動氣缸動作,推出產(chan) 品,同時做了一個(ge) 定時器定時1s,1s後複位M0.3,氣缸退回。
移位寄存器位指令的形式
指令的功能:
移位寄存器位( SHRB)指令將DATA數值移入移位寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的長度和移位方向(當N是正的,從(cong) 低位移到高位,當N是負數,就從(cong) 高位移到低位)。SHRB指令移出的每個(ge) 位被放置在溢出內(nei) 存位(SM1.1)中。該指令由最低位(S_BIT)和長度(N)指定的位數定義(yi) 。
注:已知最低位,計算最高位的方法:MSB.b=[(S_BIT字節)+([N]-1+(S_BIT位))/8]·[被8除的餘(yu) 數]
例如:如果S_BIT的字節和位分別是V33和4,N是14,以下計算顯示MSB.b是V35.1。
MSB.b= V33+([14]-1+4)/8
= V33+17/8
= V33+2,餘(yu) 數為(wei) 1
= V35.1