西门子PLC S7-1200移动指令

       移动指令是将数据元素复制到新的存储器地址,并从一种数据类型转换为另一种数据类型,在移动 过程中不更改源数据。常见的移动指令及其功能见表2-25
2-25  移动指令及其功能
1.MOVE 移动指令
      使用如图 2-58 所示的 MOVE 指令,可将 IN 输入端操作数中的内容 %MW20 传送到 OUT1 输出端的操作数%MW40 中,并始终沿地址升序方向传送。表 2-26 列出了 MOVE 指令可传送的类型。
图2-58 MOVE指令
2-26 MOVE 指令可传送的类型
       在 MOVE 指令中,若 IN 输入端数据类型的位长度超出了 OUT1 输出端数据类型的位长度,则在传送源值中多出来的有效位会丢失。若IN 输入端数据类型的位长度小于 OUT1 输出端数据类型的位长度,则用零填充传送目标值中多出来的有效位。
       在初始状态,指令框中包含 1 个输出( OUT1 ),可以用鼠标单击图符扩展输出数目,并按升序顺序排列所添加的输出端,在执行MOVE指令时,可将 IN 输入端操作数中的内容发送到所有可用的输出端。如果传送结构化数据类型(DTL STRUCT ARRAY )或字符串( STRING )的字符,则无法扩展指令框。
       MOVE 指令只有在使能输入 EN 的信号状态为 “1” 时才能够执行。在这种情况下,输出 ENO 的信号状态也为“1” 。若 EN 输入端的信号状态为 “0” ,则将 ENO 使能输入复位为 “0”
2.MOVE_BLK 块移动指令
       如图 2-59 所示,使用 “MOVE_BLK 块移动 指令可将存储区(源区域)中的内容移动到其他存储区(目标区域);使用参数COUNT 可以指定待复制到目标区域中的元素个数;可以通过 IN 输入端的元素宽度来指定待复制元素的宽度,并按地址升序顺序执行复制操作。
2-59 MOVE_BLK 块移动指令
    【练习 2-1 】 相同数据类型数组之间的复制。
      首先在 TIA 软件中添加新数据类型,如图 2-60 所示,如定义 a_array 10 个字节的数组,
Array[0..9]of Byte 。数组的数据类型和数组限值可以通过如图 2-61 所示进行修改。
2-60  添加新数据类型
2-61  修改数组的数据类型和数组限值
       一旦新建数据类型后,即可添加新的数据块,如图 2-62 所示。在添加时,选择刚刚在如图 2-60 所示中定义的数据类型,即a_array ,则 DB1 中就有了一个 a_array 数组。同理,可以新建另外一个数据类型b_array 20 个字节的数组,即 Array[0..19]of Byte ,并添加一个 DB2 块。
2-63 就是利用 MOVE_BLK 块移动指令将 DB1 中的 a_array[2] a_array[4] 3 个数据移动到 DB2
b_array[7] 开始的 3 个数据中。
2-62  添加一个含数组 a_array DB
图2-63 MOVE_BLK 块移动指令的工作原理
   【练习 2-2 】 不同数据类型数组之间复制。
如果想在数据块中存储不同数据类型的数组(如位、字节、字、双整数或实数),并且将这些数组
复制到另一个数据块中,则必须将数据块结构化,以便有可能将所有数据类型中相同类型的数组依次存储起来。
     所有相同数据类型的变量(如字节)必须在数组变量中集成一组后,就可以使用MOVE_BLK 块移动指令将一个数组变量的所有数据复制到另一个数据块中,如图2-64 所示,将 DB3 中的 5 个数据类型块移动到DB4 中。图 2-65 为具体的梯形图程序。
2-64 DB3 中的 5 个数据类型块移动到 DB4
2-65 DB3 中的 5 个数据类型块移动到 DB4 中的程序图
3.UMOVE_BLK 无中断块移动指令
      使用如图 2-66 所示的 “UMOVE_BLK 无中断块移动 指令可将存储区(源区域)中的内容连续复制到其他存储区(目标区域);使用参数COUNT 可以指定待复制到目标区域中的元素个数;可以通过 IN 输入端的元素宽度指定待复制元素的宽度;源区域内容沿地址升序方向复制到目标区域。
2-66 UMOVE_BLK 无中断块移动指令
4.FILL_BLK 填充块指令和 SWAP 交换指令
     除上述 3 个指令之外,填充块指令和交换指令也被当作移动指令的特殊情况,见表 2-27
2-27  填充块指令和交换指令及其功能
续表
       使用如图 2-67 所示的 FILL_BLK 填充块指令,用 IN 输入的值填充一个存储区域(目标区域);将以OUT 输出指定的起始地址填充目标区域;可以使用参数 COUNT 指定复制操作的重复次数;执行指令时,将选择IN 输入的值,并复制到目标区域 COUNT 参数中指定的次数。
2-67 FILL_BLK 填充块指令
       SWAP 交换指令可以更改输入 IN 中字节的顺序,并在输出 OUT 中查询结果。图 2-68 说明了如何使用SWAP 交换指令交换数据类型为 DWORD 的操作数字节。表 2-28 SWAP 交换指令的参数。
2-68  使用 SWAP 交换指令交换数据类型为 DWORD 的操作数字节
2-28 SWAP 交换指令的参数
   【练习 2-3 】 请在选择开关 %I0.0 ON 时将 %MW20 字的高低字节进行交换,并送入 %MW40 中。
     图 2-69 为实现交换的程序图。表 2-29 列出了 SWAP 交换指令如何使用特定操作数值进行运算。如果操作数%I0.0 的信号状态为 “1” ,则执行 SWAP 交换指令。 %MW20 字节的顺序已更改,并存储在操作数%MW40 中。如果成功执行 SWAP 交换指令,则输出 ENO 的信号状态为 “1” ,并将置位输出 %Q0.0
2-69  实现交换的程序图
2-29 SWAP 交换指令如何使用特定操作数值进行运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值