S7-1200 MOVE指令的讲解 move是什么意思

LAD是一条MOVE指令,SCL可以使用“:=”表达式来完成MOVE的功能(“:=”也可以有其他功能) 。
MOVE 指令是在满足 EN 条件时实现相同数据类型(不包括位、字符串和类型)的变量之间的传递 。

S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 1 命令位置
注意:
(1)LAD 需要使用指令来传输字符串(SCL 使用“:=”),但是需要 MOVE 指令来传输字符串中的字符 。
(2) 支持通过一条 MOVE 指令将一个变量传输到多个变量,但此功能不支持传输复杂数据类型(DTL、结构、数组等)或字符串中的字符 。
(3)传输数组时,元素数据类型和元素个数必须完全相同,数组限制可以不同 。例如Byte的Array[0..1]可以是移动到字节数组[1.@ >.2] 。
(4)如果MOVE两边都是基本数据类型,满足以下兼容条件即可进行传输,见表1 。
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
表 1 MOVE 的传输条件
注意:
1.@>如果输入 IN 数据类型的位长超过输出 OUT 数据类型的位长,则源值的高位丢失 。如果输入 IN 数据类型的位长小于输出 OUT 数据类型的位长,则目标值的高位将被覆盖为 0 。
2.REAL 在传输到 DWORD 时按位传输,而不是四舍五入 。如果需要四舍五入,可以使用 ROUND 等 。
3.(不)执行IEC检查是指MOVE指令所在的OB/FC/FB的属性中的“IEC检查”选项只在本块有效 。默认的“IEC 检查”未激活 。设置如图 2 所示 。
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 2 IEC 检查的设置
MOVE的使用
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 3 DB25
1.@> 单个原始类型变量的传输
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 4 单个原始类型变量的传输
2. 数组传输
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
3. 传输 UDT
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
4. 中的字符传输
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
5. DTL 中变量的传递
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
6. 整个 DB 之间的传输
条件:DB块为非优化块,或优化DB块的内存保留区和保留保持性内存都设置为0字节(如图9所示),两个DB块的结构完全一致相同的 。
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图9 内存保留区设置
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 10 DB 整体传输
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 11 DB 整体传输流程
(U)
LAD 和 SCL 都是 (U) 指令 。
(U)指令是在满足EN条件时,实现相同数组之间某些元素的传递 。而且不同的是不会被中断打断,数据量高达16kB 。
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 12 程序位置
S7-1200 MOVE指令的讲解  move是什么意思

文章插图
图 13 指令详情
注意:
1.@> IN 和 OUT 必须是数组元素,如“DB26”.[0],不能是常量、常量、普通变量或数组名 。
2. IN 和 OUT 类型必须完全相同,并且必须是原始数据类型,而不是 UDT 数组等 。
3. IN 是源数组中传输的起始元素,OUT 是目标数组中接收的起始元素 。
4. COUNT 是传输次数,可以是正整数常量 。如果是变量,则数据类型支持USINT、UINT、UDINT 。