SIEMENS西门子 WinCC V7.5SP1 ASIA 6AV6381-2BS07-5AV0
UBLKMOV:不可中断的存储区移动 (S7-300, S7-400) 说明 可以使用“不可中断的存储区移动”指令将一个存储区(源区域)的数据移动到另一个存储区 (目标区域)中。 移动操作沿地址升序方向执行。 可使用 ANY 指针定义源区域和目标区域。 此移动操作不会被操作系统的其它任务打断。 因此,在执行“不可中断的存储区移动”指 令期间,CPU 中断响应时间将增加。 说明 在该指令中,只能使用适用于 S7-300/400 系列 CPU 的数据类型。下表列出了“块移动”指令的参数: 参数 声明 数据类型 存储区 说明 EN Input BOOL I、Q、M、D、L 使能输入 ENO Output BOOL I、Q、M、D、L 使能输出 SRCBLK Input ANY I、Q、M、D、 L、P 指定待移动的存储区(源 区域)。 RET_VAL Output INT I、Q、M、D、 L、P 错误信息: 如果在该指令执行期间出 错,则在参数 RET_VAL 中 输出一个错误代码。 DSTBLK Output 1) ANY I、Q、M、D、 L、P 指定要将块移动到的存储 区(目标区域)。 1) 参数 DSTBLK 声明为 Output,但在块接口中必须声明为 InOut。
存储区 可以使用“不可中断的存储区移动”指令移动以下存储区的数据: • 数据块区域 • 位存储区 • 过程映像输入 • 过程映像输出 移动操作的通用规则 在执行“不可中断的存储区移动”指令期间,源区域和目标区域不可以重叠。 如果源区域 小于目标区域,则将整个源区域的数据都写入到目标区域中。 而目标区域的其余字节则保 持不变。 如果目标区域小于源区域,将写满整个目标区域。 而忽略源区域的剩余字节。 如果定义为形参的源区域或目标区域比 SRCBLK 或 DSTBLK 参数中所指定的源区域或目标区 域小,则不传送任何数据。 如果移动 BOOL 数据类型的块,则指定的区域长度必须能被 8 整除,否则无法执行该指令。 可以使用“不可中断的存储区移动”指令Zui多可移动 512 个字节。 注意:CPU 对此有特定 限制。 说明 如果实际的源或目标区域小于 SRCBLK 或 DSTBLK 参数上指定的目标或源区域,则系统行为 将取决于正在使用的 CPU 类型: • 以下情况适用于 S7-300 CPU: 不进行数据传输。 错误代码 W#16#837F 将在参数 RET_VAL 中输出。 同时在用户程序中必须 评估该错误代码。 • 以下情况适用于 S7-400 V4-CPU(V4、V4 H-CPU 和 V4.5. H-CPU): 不进行数据传输。 错误代码 W#16#8122 或 W#16#8323 将在参数 RET_VAL 中输出。同时在 用户程序中必须评估该错误代码。 • 对于所有其它 S7-400-CPU: 进行数据传输。 错误代码 W#16#8122 或 W#16#8323 将在参数 RET_VAL 中输出。 同时在用 户程序中必须评估该错误代码。移动字符串的规则 还可以使用“不可中断的存储区移动”指令移动 STRING 数据类型的源区域和目标区域。 如 果只有源区域为 STRING 数据类型,则仅移动字符串中实际包含的字符。 而不会将关于实际 长度和Zui大长度的信息写入目标区域中。 如果源和目标区域都是 STRING 数据类型,则将目 标区域中字符串的当前长度设置为实际移动的字符数。如果要移动 STRING 数据类型的区域, 则必须将区域长度指定为“1”。 参数 下表列出了“不可中断的存储区移动”指令的参数: 参数 声明 数据类型 存储区 说明 EN Input BOOL I、Q、M、D、L 使能输入 ENO Output BOOL I、Q、M、D、L 使能输出 SRCBLK Input ANY I、Q、M、D、 L、P 指定待移动的存储区(源 区域)。 RET_VAL Output INT I、Q、M、D、 L、P 错误信息: 如果在该指令执行期间出 错,则在参数 RET_VAL 中 输出一个错误代码。 DSTBLK Output 1) ANY I、Q、M、D、 L、P 指定要将块移动到的存储 区(目标区域)。 1) 参数 DSTBLK 声明为 Output,但在块接口中必须声明为 InOut。 参数 RET_VAL 下表列出了 RET_VAL 参数值的含义: 错误代码* (W#16#...) 说明 0000 无错误 8091 源或目标区域只能在装载内存中。 8xyy 有关错误的更多信息,请参见“另请参见”。 * 在程序编辑器中,错误代码可显示为整数或十六进制值。 有关切换显示格式的更多信息,请参见“另请参 见”。如果操作数“TagIn”的信号状态为“1”,则执行该指令。 该指令将复制从 MB100 开始的 10 个 字节,并写入 DB1 中。 如果在移动操作期间出错,则在变量“Tag_RetVal”中输出其错误代 码。FILL:填充块 (S7-300, S7-400) 说明 可以使用“填充块”指令将一个存储区(源区域)的内容填充到另一存储区(目标区域)。 “填充块”指令将源区域的数据移动到目标区域,直到目标区域写满为止。移动操作沿地址 升序方向执行。可使用 ANY 指针定义源区域和目标区域。 说明 在该指令中,只能使用适用于 S7-300/400 系列 CPU 的数据类型。 下图说明了移动操作的原理:示例:使用存储器字 MW14 到 MW20 中的内容预设置 MW100 到 MW118 中的内容。 源和目标数据的一致性 请注意,执行“填充块”指令时,源数据需保持不变,否则将无法保证目标数据的一致性。 存储区 可使用“填充块”指令移动以下存储区的数据: • 数据块区域 • 位存储区 • 过程映像输入 • 过程映像输出 移动操作的通用规则 源区域和目标区域不得重叠。如果要预设置的目标区域不是输入参数 BVAL 的长度的整数倍, 目标区域仍然可写至Zui后一个字节。 如果要预置的目标区域小于源区域,此功能仅复制可以写入目标区域的数据量。 如果实际的目标或源区域小于源或目标区域分配的存储区(参数 BVAL 和 BLK),则不传输 任何数据。如果 ANY 指针(源或目标)为 BOOL 数据类型,则指定的长度必须能被 8 整除;否则将不 会执行该指令。 如果目标区域为 STRING 数据类型,则指令将写入包含管理信息在内的整个字符串。 说明 如果实际的源或目标区域小于 BVAL 或 BLK 参数上指定的目标或源区域,则系统行为将取决 于正在使用的 CPU 类型: • 以下情况适用于 S7-300 CPU: 不进行数据传输。错误代码 W#16#837F 将在参数 RET_VAL 中输出。同时在用户程序中必须 评估该错误代码。 • 以下情况适用于 S7-400 V4 CPU(V4、V4 H-CPU 和 V4.5. H CPU): 不进行数据传输。错误代码 W#16#8122 或 W#16#8323 将在参数 RET_VAL 中输出。同时在 用户程序中必须评估该错误代码。 • 对于所有其它 S7-400-CPU: 进行数据传输。错误代码 W#16#8122 或 W#16#8323 将在参数 RET_VAL 中输出。同时在用 户程序中必须评估该错误代码。 移动结构的规则 当将结构作为输入参数传送时,必须谨记结构的长度应始终为偶数个字节。如果声明一个具 有奇数个字节的结构,此结构还需要另一个字节的存储空间。 参数 下表列出了“填充块”指令的参数: 参数 声明 数据类型 存储区 说明 EN Input BOOL I、Q、M、D、 L、T、C 使能输入 ENO Output BOOL I、Q、M、D、L 使能输出 BVAL Input ANY I、Q、M、D、 L、P 指定存储区域(源区 域),将使用该存储区域 中的内容填充 BLK 参数中 指定的目标区域。 RET_VAL Output INT I、Q、M、D、 L、P 错误信息: 如果在该指令执行期间出 错,则在参数 RET_VAL 中 输出一个错误代码。转换操作 (S7-300, S7-400) CONVERT:转换值 (S7-300, S7-400) 说明 “转换值”指令将读取参数 IN 的内容,并根据指令框中选择的数据类型对其进行转换。 转 换值存储在输出 OUT 中。 有关可能的转换的信息,请参见“另请参见”中的“显式转换”部分。 如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 • 执行过程中发生溢出之类的错误。 参数 下表列出了“转换值”指令的参数: 参数 声明 数据类型 存储区 说明 EN Input BOOL I、Q、M、D、L 使能输入 ENO Output BOOL I、Q、M、D、L 使能输出 IN Input 整数、浮点数、 BCD16、BCD32 I、Q、M、D、 L、P 或常数 要转换的值。 OUT Output 整数、浮点数、 BCD16、BCD32 I、Q、M、D、 L、P 转换结果 可以从指令框的“???”下拉列表中选择该指令的数据类型。 有关有效数据类型的更多信息,请参见“另请参见”。