在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
+關注
關注
5031文章
13799瀏覽量
472695 -
西門子
+關注
關注
98文章
3142瀏覽量
117874 -
SCL
+關注
關注
1文章
243瀏覽量
17487 -
S7-1200
+關注
關注
11文章
333瀏覽量
18487
原文標題:西門子S7-1200PLC移動操作指令:塊移動指令MOVE_BLK
文章出處:【微信號:非標設備自動化設計,微信公眾號:非標設備自動化設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
怎么讓Smart line系列觸摸屏與西門子S7-1200PLC與時間一樣

利用Modbus采集網關采集西門子S7-1200plc數據

西門子S7-1200PLC移動操作指令之交換指令SWAP介紹
西門子S7-1200PLC移動操作移動值指令MOVE
西門子S7-1200PLC與V20變頻器進行MODBUS RTU通信步驟

西門子1200PLC之間的ModbusTCP通訊如何實現?

西門子Smart line系列觸摸屏如何與S7-1200PLC的時間同步

評論