move是什么意思(S7-1200 MOVE指令的讲解)
LAD是一条MOVE指令,SCL可以使用“:=”表达式来完成MOVE的功能(“:=”也可以有其他功能)。
MOVE 指令是在满足 EN 条件时实现相同数据类型(不包括位、字符串和类型)的变量之间的传递。
图 1 命令位置
注意:
(1)LAD 需要使用指令来传输字符串(SCL 使用“:=”),但是需要 MOVE 指令来传输字符串中的字符。
(2) 支持通过一条 MOVE 指令将一个变量传输到多个变量,但此功能不支持传输复杂数据类型(DTL、结构、数组等)或字符串中的字符。
(3)传输数组时,元素数据类型和元素个数必须完全相同,数组限制可以不同。例如Byte的Array[0..1]可以是移动到字节数组[1.@ >.2]。
(4)如果MOVE两边都是基本数据类型,满足以下兼容条件即可进行传输,见表1。
表 1 MOVE 的传输条件
注意:
1.@>如果输入 IN 数据类型的位长超过输出 OUT 数据类型的位长,则源值的高位丢失。如果输入 IN 数据类型的位长小于输出 OUT 数据类型的位长,则目标值的高位将被覆盖为 0。
2.REAL 在传输到 DWORD 时按位传输,而不是四舍五入。如果需要四舍五入,可以使用 ROUND 等。
3.(不)执行IEC检查是指MOVE指令所在的OB/FC/FB的属性中的“IEC检查”选项只在本块有效。默认的“IEC 检查”未激活。设置如图 2 所示。
图 2 IEC 检查的设置
MOVE的使用
图 3 DB25
1.@> 单个原始类型变量的传输
图 4 单个原始类型变量的传输
2. 数组传输
3. 传输 UDT
4. 中的字符传输
5. DTL 中变量的传递
6. 整个 DB 之间的传输
条件:DB块为非优化块,或优化DB块的内存保留区和保留保持性内存都设置为0字节(如图9所示),两个DB块的结构完全一致相同的。
图9 内存保留区设置
图 10 DB 整体传输
图 11 DB 整体传输流程
(U)
LAD 和 SCL 都是 (U) 指令。
(U)指令是在满足EN条件时,实现相同数组之间某些元素的传递。而且不同的是不会被中断打断,数据量高达16kB。
图 12 程序位置
图 13 指令详情
注意:
1.@> IN 和 OUT 必须是数组元素,如“DB26”.[0],不能是常量、常量、普通变量或数组名。
2. IN 和 OUT 类型必须完全相同,并且必须是原始数据类型,而不是 UDT 数组等。
3. IN 是源数组中传输的起始元素,OUT 是目标数组中接收的起始元素。
4. COUNT 是传输次数,可以是正整数常量。如果是变量,则数据类型支持USINT、UINT、UDINT。
5. 如果目标数组接收区域小于源数组的传输区域,则只传输目标数组可以接收的区域中的数据。如果激活了指令的 ENO 功能,则 ENO=False。
使用(U)
实现功能:传输以“DB26”开头的4个元素[0] 到以“DB26”开头的数组。[4]。
图 14 程序使用
图 15 运行结果
LAD 和 SCL 都是指令。
基本功能是在数组之间传递一些元素,是可以处理类型变量的指令之一,适用于处理指向的变长数组。
从 TIA、S7-1200 V4.0 开始支持此命令。
图 16 命令位置
该指令通常用于将源数组SRC的一些元素传递给目标数组DEST的一些元素,并且SRC和DEST数组元素必须完全相同。COUNT 是要传输的元素个数,要传输的源数组的起始编号,以及目标数组接收的起始编号。这里的数字不是下标,表示和从0开始,对应SRC和DEST的第一个数字。一个元素。
也是传送部分数组元素的指令,具有以下优点:
1.@> SRC 和 DEST 不能是 Bool 数组,但可以是复杂数据类型的数组,如 、UDT 等。
2. SRC 和 DEST 都可以是普通的单变量。例如,SRC 是一个 INT 变量,而 DEST 是一个 INT 数组。这时需要设置COUNT=1,=0,然后根据该值,在中传入DEST的指定。
3. SRC 和DEST 通常填入数组名,也可以是普通的单个变量,也可以是数组的一个元素。后两种情况需要像 (2).
4. SRC和DEST可以是参数类型的变量,也就是P#指针的格式可以直接填,指令会把P#指针当作一个数组(原因)。即使SRC和DEST都指向类型,它所指向的形参数组元素的数据类型也需要相同,所以在使用指令前通常需要检查元素的数据类型。
使用命令注意事项:
(1)COUNT>=1,否则报错不发送数据。
(2) COUNT+和COUNT+决定了SRC和DEST数组元素个数的上限,超过范围会报错,不传输数据。
使用示例:
1.@> 实现将结构相同的M区数据发送到DB区的功能
图 18 运行结果
需要注意的是DB块改成非优化,M区和DB区,SRC和DEST都可以是P#BYTE 16,P#WORD 8,P#DWORD 4等,但是要注意要 COUNT 和元素个数一样(P#BYTE 16, COUNT=16; P#WORD 8, COUNT=8; P#DWORD 4, COUNT=4),SRC和DEST结构是一样的。
1.0@>
图 19 程序详情
电气相关知识和经验都是用来分享的,希望这篇文章能对你有所帮助。与人玫瑰,手留余香。