S7-1200 MOVE指令详解
LAD为MOVE指令,SCL使用":="表达式可以完成MOVE的功能(“:=”还可以有其他功能)。
MOVE指令是当EN条件满足时,实现相同数据类型(不包括位、字符串、Variant类型)的变量间的传送。
图1 指令位置
注意:
(1)LAD传送字符串需要使用S_MOVE指令(SCL使用“:=”),但是传送字符串中的字符需要使用MOVE指令。
(2)支持通过一个MOVE指令将一个变量传送到多个变量,但是该功能不支持传送复杂数据类型(DTL、结构、数组等)或字符串中的字符。
(3)传送数组时,要求元素数据类型以及元素个数必须完全一样,数组限值可以不同,例如Array[0..1] of Byte可以MOVE到Array[1..2] of Byte。
(4)如果MOVE两边是基本数据类型,则可以在满足以下兼容条件时传送,参见表1。
表1 MOVE的传送条件
传送源 (IN) | 传送目标 (OUT1) | |
进行 IEC 检查 | 不进行 IEC 检查 | |
array工艺详解 BYTE | BYTE、WORD、DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR |
WORD | WORD、DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR |
DWORD | DWORD | BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、CHAR |
SINT | SINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
USINT | USINT, UINT, UDINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
INT | INT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
UINT | USINT, UINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
DINT | DINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
UDINT | UDINT | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD |
REAL | REAL | DWORD, REAL |
LREAL | LREAL | LREAL |
TIME | TIME | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME |
DATE | DATE | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, DATE |
TOD | TOD | BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TOD |
CHAR | CHAR, String中的字符 | BYTE, WORD, DWORD,CHAR,String中的字符 |
WCHAR | WCHAR, WString中的字符 | BYTE,WORD,DWORD,CHAR,WCHAR,WString中的字符 |
String中的字符 | CHAR, String中的字符 | CHAR, String中的字符 |
WString中的字符 | WCHAR, WString中的字符 | WCHAR, WString中的字符 |
注意:
1.如果输入 IN 数据类型的位长度超出输出 OUT 数据类型的位长度,则源值的高位会丢失。如果输入 IN 数据类型的位长度低于输出 OUT 数据类型的位长度,则目标值的高位会被改写为 0。
2.REAL传送至DWORD时是按位传送,不是取整。如果需要取整,可以使用ROUND、CONVERT_REAL_TO_DINT等指令。
3.(不)进行IEC检查是指,在MOVE指令所在的OB/FC/FB属性中的"IEC检查"选项,仅在此块中生效。默认的"IEC检查"不激活。设置如图2所示。
1.如果输入 IN 数据类型的位长度超出输出 OUT 数据类型的位长度,则源值的高位会丢失。如果输入 IN 数据类型的位长度低于输出 OUT 数据类型的位长度,则目标值的高位会被改写为 0。
2.REAL传送至DWORD时是按位传送,不是取整。如果需要取整,可以使用ROUND、CONVERT_REAL_TO_DINT等指令。
3.(不)进行IEC检查是指,在MOVE指令所在的OB/FC/FB属性中的"IEC检查"选项,仅在此块中生效。默认的"IEC检查"不激活。设置如图2所示。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论