ARRAY[*](S7-1200, S7-1500) LOWER_BOUND:读取 ARRAY 的下限 (S7-1200, S7-1500) 说明在函数块或函数的块接口中,可声明 ARRAY[*] 数据类型的变量。这些局部变量可读取 ARRAY 限值。此时,需要在 DIM参数中指定维数。 可以使用(读取 ARRAY 下限)指令,读取 ARRAY 变量的下限。 说明 该指令的可用性该指令可用于于固件版本为 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本为 V2.0 及以 上版本的 S7-1500系列 CPU。对于 WSTRING 和 STRING,将复制源字符串的当前长度。如果源字符串比目标字符串长,则不复制源字符串的其余字符。 说明 SDT“ResolvedSymbol”中的引用无效 如果在 RUN模式下因加载导致被引用的变量覆盖,则 SDT "ResolvedSymbol" 中的引用可能变为无效。引用可能指向不存在的变量。“status”参数中的错误代码指示引用无效。此时,需使用“ResolveSymbols”指令对该符号进行重新解析。源缓冲区“Input_Buffer”中的变量值以Big-Endian 格式读取,并通过 "#InOut_ResolvedSymbols" 中的引用写入到已解析符号中。"firstIndex" 和 "lastIndex" 参数中的两个常量用于限制需在目标缓冲区中写入其值的变量数。根据操作数“Input_Offset”中的偏移量确定在源缓冲区中读取数值的位置。UPPER_BOUND:读取 ARRAY 的上限(S7-1200, S7-1500) 说明 在函数块或函数的块接口中,可声明 ARRAY[*] 数据类型的变量。这些局部变量可读取ARRAY 限值。此时,需要在 DIM 参数中指定维数。传统 (S7-1500) BLKMOV:块移动 (S7-1500) 说明可以使用“块移动”指令将一个存储区(源区域)的数据移动到另一个存储区(目标区域) 中。移动操作沿地址升序方向执行。可使用VARIANT 来定义源区域和目标区域。 说明 该指令的变量仅适用于未激活“优化块访问”属性的存储区中。适用于数据块 (DB)、组织块(OB)、函数 (FC)、位存储器 (M)、输入 (I) 和输出 (Q)。 如果指令的变量已通过保持性设置“在 IDB中设置”进行声明,则可在具有“优化块访问” 的存储区中使用该变量。可中断性 嵌套深度没有限制。 存储区可以使用“块移动”指令移动以下存储区的数据: • 数据块区域 • 位存储区 • 过程映像输入 • 过程映像输出 移动操作的通用规则源区域和目标区域不得重叠。如果源和目标区域长度不同,则只能移动较小长度的区域。如果源区域小于目标区域,则将整个源区域的数据都写入到目标区域中。而目标区域的其余 字节则保持不变。如果目标区域小于源区域,将写满整个目标区域。而忽略源区域的剩余字节。 如果数据类型为 BOOL的块被移动,则必须对变量进行juedui寻址,且为该区域指定的长度必 须为 8 的倍数,否则不执行该指令。 移动字符串的规则还可以使用“块移动”指令移动 STRING 数据类型的源区域和目标区域。如果只有源区域为 STRING数据类型,则仅移动字符串中实际包含的字符。有关实际长度和Zui大长度信息不会 写入目标区域中。如果源和目标区域都是 STRING数据类型,则将目标区域中字符串的当前 长度设置为实际移动的字符数。如果要移动字符串实际长度和Zui大长度的信息,则需要以字节为单位将相关区域指定给 SRCBLK 和 DSTBLK参数。也可使用“Serialize”/“Deserialize”指令。UBLKMOV:不可中断的存储区移动 (S7-1500)说明 可以使用“不可中断的存储区移动”指令将一个存储区(源区域)的数据移动到另一个存储区(目标区域)中。移动操作沿地址升序方向执行。可使用 VARIANT 来定义源区域和目标区域。此移动操作不会被操作系统的其它任务打断。在执行“不可中断的存储区移动”指令 期间,CPU 中断响应时间将增加。 说明该指令的变量仅适用于尚未激活“优化块访问”属性的存储区中。适用于数据块 (DB)、组 织块 (OB)、函数 (FC)、位存储器(M)、输入 (I) 和输出 (Q)。 如果指令的变量已通过保持性设置“在 IDB 中设置”进行声明,则可在具有“优化块访问”的存储区中使用该变量。 存储区 可以使用“不可中断的存储区移动”指令移动以下存储区的数据: • 数据块区域 •位存储区移动操作的通用规则 在执行“不可中断的存储区移动”指令期间,源区域和目标区域不可以重叠。如果源区域小于目标区域,则将整个源区域的数据都写入到目标区域中。而目标区域的其余字节则保持不 变。如果目标区域小于源区域,将写满整个目标区域。而忽略源区域的剩余字节。 如果定义为形参的源区域或目标区域比 SRCBLK 或DSTBLK 参数中所指定的源区域或目标区 域小,则不传送任何数据。 如果数据类型为 BOOL的块被移动,则必须对变量进行juedui寻址,且为该区域指定的长度必 须为 8 的倍数,否则不执行该指令。可以使用“不可中断的存储区移动”指令移动Zui多 16 KB 大小的数据。注意:CPU 对此有特 定限制。 移动字符串的规则还可以使用“不可中断的存储区移动”指令移动 STRING 数据类型的源区域和目标区域。如 果只有源区域为 STRING数据类型,则仅移动字符串中实际包含的字符。而不会将关于实际 长度和Zui大长度的信息写入目标区域中。如果源和目标区域都是 STRING数据类型,则将目 标区域中字符串的当前长度设置为实际移动的字符数。如果要移动 STRING 数据类型的区域,则必须将区域长度指定为“1”。FILL:填充块 (S7-1500) 说明可以使用“填充块”指令将一个存储区(源区域)的内容填充到另一存储区(目标区域)。“填充块”指令将源区域的数据移动到目标区域,直到目标区域写满为止。移动操作沿地址 升序方向执行。 可使用 VARIANT来定义源区域和目标区域。 说明 您还可以使用 ANY 数据类型来定义源区域和目标区域 如果使用 ANY 数据类型,那么在连接STRING 数据类型时必须遵守以下几点: • 在 STRING(目标区域)后使用 ANY 分配STRING(源区域)时,STRING 的内容将重复地复 制到目标区域,直至填满目标区域。源区域:'STEP7-SCL-TIA-Portal'目标区域:'STEP7-SCL-TIA-PortalSTEP7-SCL-TIA-PortalSTEP7-SCL' • 在WSTRING(目标区域)后面使用 ANY 指定 WSTRING(源区域)时,包括类型信息在内的 整个 WSTRING仅复制到目标区域一次。 源区域:WSTRING#'STEP7-SCL-TIA-Portal'目标区域:WSTRING#'STEP7-SCL-TIA-Portal' 说明该指令的变量仅适用于尚未激活“优化块访问”属性的存储区中。适用于数据块 (DB)、组 织块 (OB)、函数 (FC)、位存储器(M)、输入 (I) 和输出 (Q)。 如果指令的变量已通过保持性设置“在 IDB 中设置”进行声明,则可在具有“优化块访问”的存储区中使用该变量。 对于具有“优化的块访问”属性的块,可以使用“FILL_BLK:填充块”指令。下图说明了移动操作的原理:源和目标数据的一致性 请注意,执行“填充块”指令时,源数据需保持不变,否则将无法保证目标数据的一致性。存储区 可使用“填充块”指令移动以下存储区的数据: • 数据块区域 • 位存储区 • 过程映像输入 • 过程映像输出移动操作的通用规则 源区域和目标区域不得重叠。如果要预设的目标区域不是输入参数 BVAL 长度的整数倍,目标区域仍然可写至Zui后一个字节。 如果要预置的目标区域小于源区域,此功能仅复制可以写入目标区域的数据量。如果实际的目标或源区域小于源或目标区域分配的存储区(参数 BVAL 和 BLK),则不传输 任何数据。如果 ANY 指针(源或目标)为BOOL 数据类型,则必须对其进行juedui寻址,且指定的长度 必须能被 8 整除;否则将不会执行该指令。 如果目标区域为STRING 数据类型,则指令将写入包含管理信息在内的整个字符串。 移动结构的规则当将结构作为输入参数传送时,必须谨记结构的长度应始终为偶数个字节。如果声明一个具有奇数个字节的结构,此结构还需要另一个字节的存储空间。CONVERT:转换值 (S7-1200, S7-1500) 说明使用“转换值”指令设定显式转换。插入该指令时,“转换”(CONVERT) 对话框打开。可以在此对话框中指定转换的源数据类型和目标数据类型。将读取源值并将其转换为指定的目标 数据类型。 位字符串的转换方式在指令功能框中,不能选择位字符串 BYTE 和 WORD。但如果输入和输出操作数的长度匹配, 则可以在该指令的参数处指定 DWORD或 LWORD 数据类型的操作数。此操作数将被位 字符串的数据类型根据输入或输出参数的数据类型来解释,并被隐式转换。例如,数据类型DWORD 将解释为 DINT/UDINT,而 LWORD 将解释为 LINT/ULINT。启用“IEC 检查”(IEC check)时,也可使用这些转换方式。 说明 S7-1500 系列 CPU:数据类型 DWORD 和 LWORD 只能与数据类型 REAL 或LREAL 互相转换。 在转换过程中,源值的位模式以右对齐的方式原样传递到目标数据类型中。如果在转换过程 中无错误,则使能输出 ENO的信号状态为 1;如果在处理过程中出错,则使能输出 ENO 的 信号状态为 0。