前面给大家介绍了数学函数指令,接下来就接着介绍一下移动操作指令吧!
S7-1200 PLC的移动操作指令也包括有多个(如下图),不过这里我们不会所有的指令都介绍一遍,这里就介绍一些常用的移动操作指令,比如移动值指令MOVE,可以说是相当于我们说的传送指令,还有块移动指令MOVE_BLK、填充块指令FILL_BLK、交换指令SWAP、读取域指令FieldRead与写入域指令FieldWrit。
下面我们就开始讲解咯~
![c36c3d85d95a2a54dab0283e101bb555.png](https://i-blog.csdnimg.cn/blog_migrate/15ac41da62b322d351de89fc537710d8.jpeg)
1、移动值指令MOVE
移动值指令MOVE,就相当于是我们S7-200/200 SMART PLC中的MOV传送指令,是用于对存储器进行赋值,或者把一个存储器的数据复制到另外一个存储器中,还可以用于清零功能。对于这个指令进行移动复制之后,源操作数的数据是不变的。
我们可以通过点击指令下方的增加管脚的按钮,增加一些输出管脚,这样就可以实现将源操作数的数据复制到多个目标操作数里面去。
![1814e6be6fcc3e001f30c115d731f82e.png](https://i-blog.csdnimg.cn/blog_migrate/23562f116eb7ad49e5642df367fe5f54.jpeg)
对于移动值指令的操作数可以支持基本的数据类型、复杂的数据类型也是可以支持的,但是我们需要注意的是,如果使用复杂的数据类型时,我们需要保证源操作数和目标操作数具有相同的格式才行。
如果要把一个数组的数据复制到另外一个数组,我们需要保证两个数组的元素个数相同,元素的数据类型相同。
2、块移动指令MOVE_BLK
块移动指令是将源存储区的数据移动到目标存储区,注意是有多个存储器的移动,IN是源存储器的首个元素,COUNT是指定需要复制的元素个数,OUT是目标存储器的首个元素。
注意,这个指令只适合于数据块中的数组进行移动,如果需要对非数据块的存储器进行块移动是不能使用这个指令的,比如说将MB0~MB5的数据移动到QB0~QB5,这时不能使用MOVE_BLK指令。
![54b21393b61d8d85dac5971a91e59010.png](https://i-blog.csdnimg.cn/blog_migrate/e1f0d9595fd1f1e680e90a76f81bd810.jpeg)
![62551ce29a5504eadef8fd5e5746424a.png](https://i-blog.csdnimg.cn/blog_migrate/540514c59aee2d2b3373c8f93baf98a0.jpeg)
![49f466f73f33184361d65b04aa5782c9.png](https://i-blog.csdnimg.cn/blog_migrate/7e82edb03d6b2c111f3c2a126867ff2a.jpeg)
![6c221e05a5b23226cd9ce79899581b4b.png](https://i-blog.csdnimg.cn/blog_migrate/5358770c81ee4d61345227ec2914973f.jpeg)
上图的程序首先是创建DB块,再分别创建DATA和数据的数组,元素数为5个,即0~4,所以我们可以看到有以上这些数据,这个指令的功能是将函数DB块中的数组元素DATA[2]、DATA[3]、DATA[4]的数据分别移动到数组元素数据[0]、数据[1]、数据[2]中。
3、填充块指令FILL_BLK
填充块指令可以对数组中连续的元素写入相同的数值,比如对一个数组中的连续N个元素进行赋值或清零时可以利用这个指令去实现。IN是需要填充进入的数据,COUNT是存储器个个数,OUT是需要填入的第一个元素的地址。这个指令跟块移动指令一样,也是只适合于数据块中的数组中连续元素进行填充数据。
![683f10a1d81cbdc58aa48ee3fb56a478.png](https://i-blog.csdnimg.cn/blog_migrate/2fb395262fe857201525472cba49b133.jpeg)
![2bd33f288821a67ee62c5e815b4c5b61.png](https://i-blog.csdnimg.cn/blog_migrate/1f4f0129952294cbc95b1b8d00870d02.jpeg)
上图的程序是将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哦。
![3b3c7043e6cf3b57a592699cae85929a.png](https://i-blog.csdnimg.cn/blog_migrate/aee9eb703c6bf4c28bb7f0079138cfb9.jpeg)
5、读取域指令FieldRead和写入域指令FieldWrit
读取域指令和写入域指令主要是用于间接寻址的功能,可以用该指令对一个数组中的任意元素的值进行读取或写入的操作。
读取域指令用于根据指定的元素下标值,读取除对应元素的值,指令中的INDEX管脚是元素的下表值,为DINT的类型,MEMBER管脚是指定数组中的第一个元素地址,VALUE管脚用于存放读取出来的数据。
写入域指令用于根据指定的元素下标值,把VALUE的值写入到对应下表值的元素中,指令中的INDEX管脚是元素的下表值,为DINT的类型,VALUE管脚表示需要写入的值,MEMBER管脚是指定数组中的第一个元素地址。
不过过于博途V14以上的版本软件,对于数组的下标值可以通过变量进行表示,所以读取域指令和写入域指令使用得也比较少,大家了解一下有这样的指令就可以了。
![124927bd1002d61a1155bcb9310a406c.png](https://i-blog.csdnimg.cn/blog_migrate/ce5aef9b100f4a7dc77261646ed5324c.jpeg)
以上这些就是移动操作指令的介绍,对于西门子S7-200/200 SMART中我们叫传送指令,包括有MOV、BLKMOV、SWAP指令,还有表指令FILL_N,其实跟我们S7-1200 PLC的这些指令的功能是差不多的,只是有一些小区别,不同的地方注意一下就可以咯。
移动操作指令部分我们就介绍完了,下一篇文章给大家介绍一下转换操作指令的使用,欢迎关注更新~
(技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)