在S7-1200PLC中,l利用MOVE_BLK指令可以將一個(gè)存儲(chǔ)區(qū)(源范圍)的數(shù)據(jù)移動(dòng)到另一個(gè)存儲(chǔ)區(qū)(目標(biāo)范圍)中。使用輸入 COUNT 可以指定將移動(dòng)到目標(biāo)范圍中的元素個(gè)數(shù)??赏ㄟ^(guò)輸入 IN 中元素的寬度來(lái)定義元素待移動(dòng)的寬度。僅當(dāng)源范圍和目標(biāo)范圍的數(shù)據(jù)類(lèi)型相同時(shí),才能執(zhí)行該指令。
如果滿(mǎn)足下列條件之一,使能輸出 ENO 將返回信號(hào)狀態(tài)“0”:
條件1:使能輸入 EN 的信號(hào)狀態(tài)為“0”。
條件2:移動(dòng)的數(shù)據(jù)量超出輸入 IN 或輸出 OUT 所能容納的數(shù)據(jù)量。:
當(dāng)復(fù)制 ARRAY of BOOL 時(shí),溢出的使能輸出 ENO 將設(shè)置為“1”,直至超出 ARRAY 結(jié)構(gòu)的字節(jié)限制。如果 COUNT 輸入的值超出了 ARRAY 結(jié)構(gòu)的字節(jié)限制,則使能輸出 ENO 將復(fù)位為“0”。
TIPS:1.IN和OUT是等待復(fù)制的源區(qū)域和目標(biāo)區(qū)域的首個(gè)元素,但是并不要求是數(shù)組中的第一個(gè)元素,前提條件是數(shù)組的數(shù)據(jù)類(lèi)型必須保持一致;見(jiàn)下圖1所示;
2.MOVE_BLK指令只適合實(shí)現(xiàn)對(duì)數(shù)據(jù)塊中的數(shù)組進(jìn)行移動(dòng),不能實(shí)現(xiàn)對(duì)不是數(shù)據(jù)塊的存儲(chǔ)器進(jìn)行塊移動(dòng);針對(duì)這種情況,可以使用SCL編程中的POKE_BLK指令來(lái)實(shí)現(xiàn),操作方法見(jiàn)圖2所示;
例如下面就是利用該指令實(shí)現(xiàn)MB100-MB109的數(shù)據(jù)移動(dòng)到QB0-QB9中
POKE_BLK(area_src:=16#83,//源操作數(shù)的存儲(chǔ)器類(lèi)型;16#83表示M區(qū);
dbNumber_src:=0,//源操作數(shù)的DB塊地址,如果操作數(shù)不是DB塊,就默認(rèn)值就是0;
byteOffset_src:=50,//源操作數(shù)的起始地址;
area_dest:=16#82,//目標(biāo)操作數(shù)的存儲(chǔ)器類(lèi)型;16#82代表Q區(qū);
dbNumber_dest:=0,//目標(biāo)操作數(shù)的DB塊地址,如果目標(biāo)操作數(shù)不是DB塊,就默認(rèn)值是0;
byteOffset_dest:=0,//目標(biāo)操作數(shù)的起始地址;
count:=10);//從源操作數(shù)寫(xiě)入到目標(biāo)操作數(shù)的地址個(gè)數(shù);
其中,利用POKE_BLK指令來(lái)進(jìn)行編程時(shí),操作數(shù)是通過(guò)16進(jìn)制進(jìn)行表示的;輸入過(guò)程映像區(qū)I(16#81),輸出過(guò)程映像區(qū)Q(16#82),位存儲(chǔ)器區(qū)M(16#83),DB塊(16#84);
審核編輯:劉清
-
plc
+關(guān)注
關(guān)注
5001文章
12946瀏覽量
459214 -
西門(mén)子
+關(guān)注
關(guān)注
93文章
2958瀏覽量
114830 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
16990 -
S7-1200
+關(guān)注
關(guān)注
11文章
331瀏覽量
17708
原文標(biāo)題:西門(mén)子S7-1200PLC移動(dòng)操作指令:塊移動(dòng)指令MOVE_BLK
文章出處:【微信號(hào):非標(biāo)設(shè)備自動(dòng)化設(shè)計(jì),微信公眾號(hào):非標(biāo)設(shè)備自動(dòng)化設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論