在S7-1200PLC中,l利用MOVE_BLK指令可以將一個存儲區(源范圍)的數據移動到另一個存儲區(目標范圍)中。使用輸入 COUNT 可以指定將移動到目標范圍中的元素個數??赏ㄟ^輸入 IN 中元素的寬度來定義元素待移動的寬度。僅當源范圍和目標范圍的數據類型相同時,才能執行該指令。
如果滿足下列條件之一,使能輸出 ENO 將返回信號狀態“0”:
條件1:使能輸入 EN 的信號狀態為“0”。
條件2:移動的數據量超出輸入 IN 或輸出 OUT 所能容納的數據量。:
當復制 ARRAY of BOOL 時,溢出的使能輸出 ENO 將設置為“1”,直至超出 ARRAY 結構的字節限制。如果 COUNT 輸入的值超出了 ARRAY 結構的字節限制,則使能輸出 ENO 將復位為“0”。
TIPS:1.IN和OUT是等待復制的源區域和目標區域的首個元素,但是并不要求是數組中的第一個元素,前提條件是數組的數據類型必須保持一致;見下圖1所示;

2.MOVE_BLK指令只適合實現對數據塊中的數組進行移動,不能實現對不是數據塊的存儲器進行塊移動;針對這種情況,可以使用SCL編程中的POKE_BLK指令來實現,操作方法見圖2所示;


例如下面就是利用該指令實現MB100-MB109的數據移動到QB0-QB9中
POKE_BLK(area_src:=16#83,//源操作數的存儲器類型;16#83表示M區;
dbNumber_src:=0,//源操作數的DB塊地址,如果操作數不是DB塊,就默認值就是0;
byteOffset_src:=50,//源操作數的起始地址;
area_dest:=16#82,//目標操作數的存儲器類型;16#82代表Q區;
dbNumber_dest:=0,//目標操作數的DB塊地址,如果目標操作數不是DB塊,就默認值是0;
byteOffset_dest:=0,//目標操作數的起始地址;
count:=10);//從源操作數寫入到目標操作數的地址個數;
其中,利用POKE_BLK指令來進行編程時,操作數是通過16進制進行表示的;輸入過程映像區I(16#81),輸出過程映像區Q(16#82),位存儲器區M(16#83),DB塊(16#84);

審核編輯:劉清
-
plc
+關注
關注
5051文章
14592瀏覽量
486866 -
西門子
+關注
關注
98文章
3310瀏覽量
120369 -
SCL
+關注
關注
1文章
244瀏覽量
18016 -
S7-1200
+關注
關注
11文章
335瀏覽量
19461
原文標題:西門子S7-1200PLC移動操作指令:塊移動指令MOVE_BLK
文章出處:【微信號:非標設備自動化設計,微信公眾號:非標設備自動化設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
怎么讓Smart line系列觸摸屏與西門子S7-1200PLC與時間一樣
利用Modbus采集網關采集西門子S7-1200plc數據
西門子S7-1200PLC移動操作指令之交換指令SWAP介紹
西門子S7-1200PLC移動操作移動值指令MOVE
西門子PLC 1500/1200硬件分享
西門子1200PLC之間的ModbusTCP通訊如何實現?
西門子Smart line系列觸摸屏如何與S7-1200PLC的時間同步
西門子S7-1200PLC塊移動指令MOVE_BLK操作
評論