前面給大家介紹了數學函數指令,接下來就接著介紹一下移動操作指令吧!
S7-1200 PLC的移動操作指令也包括有多個(如下圖),不過這裡我們不會所有的指令都介紹一遍,這裡就介紹一些常用的移動操作指令,比如移動值指令MOVE,可以說是相當於我們說的傳送指令,還有塊移動指令MOVE_BLK、填充塊指令FILL_BLK、交換指令SWAP、讀取域指令FieldRead與寫入域指令FieldWrit。
下面我們就開始講解咯~
1、移動值指令MOVE
移動值指令MOVE,就相當於是我們S7-200/200 SMART PLC中的MOV傳送指令,是用於對存儲器進行賦值,或者把一個存儲器的數據複製到另外一個存儲器中,還可以用於清零功能。對於這個指令進行移動複製之後,源操作數的數據是不變的。
我們可以通過點擊指令下方的增加管腳的按鈕,增加一些輸出管腳,這樣就可以實現將源操作數的數據複製到多個目標操作數里面去。
對於移動值指令的操作數可以支持基本的數據類型、複雜的數據類型也是可以支持的,但是我們需要注意的是,如果使用複雜的數據類型時,我們需要保證源操作數和目標操作數具有相同的格式才行。
如果要把一個數組的數據複製到另外一個數組,我們需要保證兩個數組的元素個數相同,元素的數據類型相同。
2、塊移動指令MOVE_BLK
塊移動指令是將源存儲區的數據移動到目標存儲區,注意是有多個存儲器的移動,IN是源存儲器的首個元素,COUNT是指定需要複製的元素個數,OUT是目標存儲器的首個元素。
注意,這個指令只適合於數據塊中的數組進行移動,如果需要對非數據塊的存儲器進行塊移動是不能使用這個指令的,比如說將MB0~MB5的數據移動到QB0~QB5,這時不能使用MOVE_BLK指令。
上圖的程序首先是創建DB塊,再分別創建DATA和數據的數組,元素數為5個,即0~4,所以我們可以看到有以上這些數據,這個指令的功能是將函數DB塊中的數組元素DATA[2]、DATA[3]、DATA[4]的數據分別移動到數組元素數據[0]、數據[1]、數據[2]中。
3、填充塊指令FILL_BLK
填充塊指令可以對數組中連續的元素寫入相同的數值,比如對一個數組中的連續N個元素進行賦值或清零時可以利用這個指令去實現。IN是需要填充進入的數據,COUNT是存儲器個個數,OUT是需要填入的第一個元素的地址。這個指令跟塊移動指令一樣,也是隻適合於數據塊中的數組中連續元素進行填充數據。
上圖的程序是將20這個數組填充到函數DB的DATA[0]開始的數組元素的一共5個元素中取,監控的結果是DATA[0]、DATA[1]、DATA[2]、DATA[3]、DATA[4]裡面的數值都是20。
4、交換指令SWAP
交換指令可以將輸入操作數的數據的字節的順序進行調換,也就是實現高低字節的交換,交換指令支持WORD和DWORD這兩種數據類型。
我們可以監控指令的執行情況,可以以十六進制的數值顯示,這樣也方便我們去查看。比如16#1234,交換之後是16#3412,而對於16#12345678,交換之後是16#78563412,注意不是16#56781234哦。
5、讀取域指令FieldRead和寫入域指令FieldWrit
讀取域指令和寫入域指令主要是用於間接尋址的功能,可以用該指令對一個數組中的任意元素的值進行讀取或寫入的操作。
讀取域指令用於根據指定的元素下標值,讀取除對應元素的值,指令中的INDEX管腳是元素的下表值,為DINT的類型,MEMBER管腳是指定數組中的第一個元素地址,VALUE管腳用於存放讀取出來的數據。
寫入域指令用於根據指定的元素下標值,把VALUE的值寫入到對應下表值的元素中,指令中的INDEX管腳是元素的下表值,為DINT的類型,VALUE管腳表示需要寫入的值,MEMBER管腳是指定數組中的第一個元素地址。
不過過於博途V14以上的版本軟件,對於數組的下標值可以通過變量進行表示,所以讀取域指令和寫入域指令使用得也比較少,大家瞭解一下有這樣的指令就可以了。
以上這些就是移動操作指令的介紹,對於西門子S7-200/200 SMART中我們叫傳送指令,包括有MOV、BLKMOV、SWAP指令,還有表指令FILL_N,其實跟我們S7-1200 PLC的這些指令的功能是差不多的,只是有一些小區別,不同的地方注意一下就可以咯。
移動操作指令部分我們就介紹完了,下一篇文章給大家介紹一下轉換操作指令的使用,歡迎關注更新~
(技成培訓網原創,作者:蔡慧滎,未經授權不得轉載,違者必究)