首页 >> 大全

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

2022-07-05 大全 2053 作者:考证青年

LAD是一条MOVE指令,SCL可以使用“:=”表达式来完成MOVE的功能(“:=”也可以有其他功能)。

MOVE 指令是在满足 EN 条件时实现相同数据类型(不包括位、字符串和类型)的变量之间的传递。

S7-1200 MOVE指令的讲解

图 1 命令位置

注意:

(1)LAD 需要使用指令来传输字符串(SCL 使用“:=”),但是需要 MOVE 指令来传输字符串中的字符。

(2) 支持通过一条 MOVE 指令将一个变量传输到多个变量,但此功能不支持传输复杂数据类型(DTL、结构、数组等)或字符串中的字符。

(3)传输数组时,元素数据类型和元素个数必须完全相同,数组限制可以不同。例如Byte的Array[0..1]可以是移动到字节数组[1.@ >.2]。

(4)如果MOVE两边都是基本数据类型,满足以下兼容条件即可进行传输,见表1。

S7-1200 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指令的讲解

图 2 IEC 检查的设置

MOVE的使用

S7-1200 MOVE指令的讲解

图 3 DB25

1.@> 单个原始类型变量的传输

S7-1200 MOVE指令的讲解

图 4 单个原始类型变量的传输

2. 数组传输

S7-1200 MOVE指令的讲解

3. 传输 UDT

S7-1200 MOVE指令的讲解

4. 中的字符传输

S7-1200 MOVE指令的讲解

5. DTL 中变量的传递

S7-1200 MOVE指令的讲解

6. 整个 DB 之间的传输

条件:DB块为非优化块,或优化DB块的内存保留区和保留保持性内存都设置为0字节(如图9所示),两个DB块的结构完全一致相同的。

S7-1200 MOVE指令的讲解

图9 内存保留区设置

S7-1200 MOVE指令的讲解

图 10 DB 整体传输

S7-1200 MOVE指令的讲解

图 11 DB 整体传输流程

(U)

LAD 和 SCL 都是 (U) 指令。

(U)指令是在满足EN条件时,实现相同数组之间某些元素的传递。而且不同的是不会被中断打断,数据量高达16kB。

S7-1200 MOVE指令的讲解

图 12 程序位置

S7-1200 MOVE指令的讲解

图 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]。

S7-1200 MOVE指令的讲解

图 14 程序使用

S7-1200 MOVE指令的讲解

图 15 运行结果

LAD 和 SCL 都是指令。

基本功能是在数组之间传递一些元素,是可以处理类型变量的指令之一,适用于处理指向的变长数组。

从 TIA、S7-1200 V4.0 开始支持此命令。

S7-1200 MOVE指令的讲解

图 16 命令位置

S7-1200 MOVE指令的讲解

S7-1200 MOVE指令的讲解

该指令通常用于将源数组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区的功能

S7-1200 MOVE指令的讲解

图 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 程序详情

电气相关知识和经验都是用来分享的,希望这篇文章能对你有所帮助。与人玫瑰,手留余香。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了