移动操作指令如表7.6所示,其作用是将数据在不同的区域移动或复制。
表7.6 移动操作指令
1.移动指令
移动指令MOVE用于将IN输入的源数据传送给OUT1输出的目的地址,并且转换为OUT1允许的数据类型(与是否进行IEC检查有关),而源数据保持不变。MOVE指令的IN和OUT1可以是Bool之外所有的基本数据类型和复杂数据类型,如DTL、Struct、Array等,IN还可以是常数。此外,函数还允许增减输出参数的个数。
如果IN数据类型的位长度超出OUT1数据类型的位长度,源值的高位丢失。如果IN数据类型的位长度小于输出OUT1数据类型的位长度,目标值的高位被改写为0。
2.交换指令
交换指令SWAP用于交换字或双字中的字节。IN和OUT为数据类型Word时,交换指令SWAP交换输入IN的高、低字节后,保存到OUT指定的地址;IN和OUT为数据类型Dword时,交换4个字节中数据的顺序,交换后保存到OUT指定的地址。
3.填充存储区指令(www.daowen.com)
填充存储区指令FILL_BLK指令和不可中断的存储区填充指令UFILL_BLK示例如图7.22所示,新建数据块Data_block_1(DB1),在DB1中创建有二个含有10个Int元素的数组data1和data2,I0.0的常开触点接通时,“填充存储区”指令FILL_BLK将常数16#1234填充到数据块Data_block_1(DB1)中的数组data1中的10个整数元素中。“不可中断的存储区填充”指令UFILL_BLK将常数16#5678填充到数据块Data_block_1(DB1)中的数组data2中的10个整数元素中。
“不可中断的存储区填充”指令UFILL_BLK与FILL_BLK指令的功能相同,其填充操作不会被操作系统的其他任务打断。
图7.22 填充存储区指令FILL_BLK和不可中断的存储区填充指令UFILL_BLK示例
4.存储区块移动指令
I0.0的常开触点接通时,存储区移动指令MOVE_BLK将源区域数据块_1的数组S的1号元素开始的20个Int元素的值,复制给目标区域数据块_2的数组D的1号元素开始的20个元素如图7.23所示。复制操作按地址增大的方向进行。IN和OUT是待复制的源区域和目标区域中的首个元素,并不要求是数组的第一个元素。
“不可中断的存储区移动”指令UMOVE_BLK与MOVE_BLK的功能基本上相同,其复制操作不会被操作系统的其他任务打断。
图7.23 存储区移动指令指令MOVE_BLK示例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。