UBLKMOV:不可中断的存储区移动 (S7-1500) 说明可以使用“不可中断的存储区移动”指令将一个存储区(源区域)的数据移动到另一个存储区 (目标区域)中。移动操作沿地址升序方向执行。可使用VARIANT 来定义源区域和目标区域。 此移动操作不会被操作系统的其它任务打断。在执行“不可中断的存储区移动”指令期间,CPU 中断响应时间将增加。 说明 该指令的变量仅适用于尚未激活“优化块访问”属性的存储区中。适用于数据块 (DB)、组 织块(OB)、函数 (FC)、位存储器 (M)、输入 (I) 和输出 (Q)。 如果指令的变量已通过保持性设置“在 IDB中设置”进行声明,仍可在“优化块访问”的存 储区中使用该变量。如果操作数“TagIn”的信号状态为“1”,则执行该指令。该指令将复制从MB100 开始的 10 个 字节,并写入 DB1中。如果在移动操作期间出错,则在变量“Tag_RetVal”中输出其错误代码。
存储区可以使用“不可中断的存储区移动”指令移动以下存储区的数据: • 数据块区域 • 位存储区 • 过程映像输入 • 过程映像输出移动操作的通用规则 在执行“不可中断的存储区移动”指令期间,源区域和目标区域不可以重叠。如果源区域小于目标区域,则将整个源区域的数据都写入到目标区域中。而目标区域的其余字节则保持不 变。如果目标区域小于源区域,将写满整个目标区域。而忽略源区域的剩余字节。 如果定义为形参的源区域或目标区域比 SRCBLK 或DSTBLK 参数中所指定的源区域或目标区 域小,则不传送任何数据。 如果数据类型为 BOOL的块被移动,则必须对变量进行juedui寻址,且为该区域指定的长度必 须为 8 的倍数,否则不执行该指令。可以使用“不可中断的存储区移动”指令移动Zui多 16 KB 大小的数据。注意:CPU 对此有特 定限制。 移动字符串的规则还可以使用“不可中断的存储区移动”指令移动 STRING 数据类型的源区域和目标区域。如 果只有源区域为 STRING数据类型,则仅移动字符串中实际包含的字符。而不会将关于实际 长度和Zui大长度的信息写入目标区域中。如果源和目标区域都是 STRING数据类型,则将目 标区域中字符串的当前长度设置为实际移动的字符数。如果要移动 STRING 数据类型的区域,则必须将区域长度指定为“1”。如果操作数“TagIn”的信号状态为“1”,则执行该指令。该指令将复制从 MB100 开始的 10 个字节,并写入 DB1 中。如果在移动操作期间出错,则在变量“Tag_RetVal”中输出其错误代码。FILL:填充块(S7-1500) 说明 可以使用“填充块”指令将一个存储区(源区域)的内容填充到另一存储区(目标区域)。“填充块”指令将源区域的数据移动到目标区域,直到目标区域写满为止。移动操作沿地址 升序方向执行。可使用 VARIANT来定义源区域和目标区域。 说明 该指令的变量仅适用于尚未激活“优化块访问”属性的存储区中。适用于数据块 (DB)、组 织块(OB)、函数 (FC)、位存储器 (M)、输入 (I) 和输出 (Q)。 如果指令的变量已通过保持性设置“在 IDB中设置”进行声明,仍可在“优化块访问”的存 储区中使用该变量。对于具有“优化块访问”属性的块,可以使用“FILL_BLK:填充块”指令。
源和目标数据的一致性请注意,执行“填充块”指令时,源数据需保持不变,否则将无法保证目标数据的一致性。 存储区 可使用“填充块”指令移动以下存储区的数据:• 数据块区域 • 位存储区• 过程映像输入 • 过程映像输出 移动操作的通用规则源区域和目标区域不得重叠。如果要预设的目标区域不是输入参数 BVAL 长度的整数倍,目 标区域仍然可写至Zui后一个字节。如果要预置的目标区域小于源区域,此功能仅复制可以写入目标区域的数据量。 如果实际的目标或源区域小于源或目标区域分配的存储区(参数BVAL 和 BLK),则不传输 任何数据。 如果 ANY 指针(源或目标)为 BOOL数据类型,则必须对其进行juedui寻址,且指定的长度 必须能被 8 整除;否则将不会执行该指令。 如果目标区域为 STRING数据类型,则指令将写入包含管理信息在内的整个字符串。 移动结构的规则当将结构作为输入参数传送时,必须谨记结构的长度应始终为偶数个字节。如果声明一个具有奇数个字节的结构,此结构还需要另一个字节的存储空间。如果操作数“TagIn”的信号状态为“1”,则执行该指令。该指令复制从 MW14到 MW20 的源区 域,并使用 BVAL 参数中存储区内包含的 4 个字的内容填充从 MW100 到 MW118的目标区域。转换操作 (S7-1200, S7-1500) CONVERT:转换值 (S7-1200, S7-1500) 说明“转换值”指令将读取参数 IN 的内容,并根据指令框中设置的数据类型对其进行转换。转换 值将在 OUT 输出处输出。如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 •执行过程中发生溢出之类的错误。 位字符串的转换方式 不能在指令框中选择位字符串 BYTE 和WORD。但如果输入和输出操作数的长度匹配,则可 以在该指令的参数处指定 DWORD 或 LWORD数据类型的操作数。此操作数将被位字符 串的数据类型根据输入或输出参数的数据类型来解释,并从位字符串的数据类型隐式转换。例如,数据类型 DWORD 将解释为 DINT/UDINT,而 LWORD 将解释为 LINT/ULINT。启用“IEC检查”(IEC check) 时,也可使用这些转换方式。 说明 S7-1500 系列 CPU:数据类型 DWORD 和 LWORD只能与数据类型 REAL 或 LREAL 互相转换。 在转换过程中,源值的位模式以右对齐的方式原样传递到目标数据类型中。如果在转换过程中无错误,则使能输出 ENO 的信号状态为 1;如果在处理过程中出错,则使能输出 ENO 的 信号状态为 0。ROUND:取整(S7-1200, S7-1500) 说明 可以使用“取整”指令将输入 IN 的值四舍五入取整为Zui接近的整数。该指令将输入 IN 的值解释为浮点数,并将其转换为Zui接近的整数。如果输入值恰好是相邻偶数和奇数的平均数, 则选择取整为偶数。该指令的结果存储在输出 OUT中,可供查询。 如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 •执行过程中发生溢出之类的错误。CEIL:浮点数向上取整 (S7-1200, S7-1500) 说明可以使用“浮点数向上取整”指令,将输入 IN 的值向上取整为相邻整数。该指令将输入 IN的值解释为浮点数,并将其向上转换为相邻的较大整数。该指令的结果存储在输出 OUT 中, 可供查询。输出值可以大于或等于输入值。如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 •执行过程中发生溢出之类的错误。FLOOR:浮点数向下取整 (S7-1200, S7-1500) 说明可以使用“浮点数向下取整”指令,将输入 IN 的值向下取整为相邻整数。该指令将输入 IN的值解释为浮点数,并将其向下转换为相邻的较小整数。该指令的结果存储在输出 OUT 中,可供查询。输出值可以小于或等于输入值。如果操作数“TagIn”的信号状态为“1”,则执行该指令。输入“TagIn_Value”的浮点数将向下取整到相邻整数,并在输出“TagOut_Value”显示。如果成功执行该指令,则置位输出“TagOut”。TRUNC:截尾取整(S7-1200, S7-1500) 说明 可以使用“截尾取整”指令获取输入 IN 值的整数部分。输入 IN 的值被解释为浮点数。该指令仅选择浮点数的整数部分,并将其发送到输出 OUT 中,不带小数位。 如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:• 使能输入 EN 的信号状态为“0”。 • 执行过程中发生溢出之类的错误。SCALE_X:缩放 (S7-1200, S7-1500)说明 可以使用“缩放”指令,通过将输入 VALUE 的值映射到指定的值范围内,对该值进行缩放。 执行“缩放”指令时,会将输入VALUE 的浮点数值缩放到由参数 MIN 和 MAX 指定的取值 范围。缩放操作的结果为整数,存储在输出 OUT 中。下图举例说明如何缩放值:“缩放”指令将按以下公式进行计算: OUT = [VALUE ∗ (MAX – MIN)] + MIN如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 • 输入 MIN的值大于或等于输入 MAX 的值。 • 根据 IEEE-754 标准,指定的浮点数的值超出了标准的数范围。 • 发生溢出。 • 输入VALUE 的值为 NaN(不是数字 = 无效算术运算的结果)。 说明有关转换模拟值的更多信息,请参见相应的手册。可以从指令框的“???”下拉列表中选择该指令的数据类型。有关有效数据类型的更多信息,请参见“另请参见”。有关符号常量的详细信息,请参见“另请参见”。如果操作数“TagIn”的信号状态为“1”,则执行该指令。将输入“Tag_Value”的值缩放到由输入“Tag_MIN”和“Tag_MAX”的值定义的取值范围。结果存储在输出“Tag_Result”中。如果该指令 执行成功,则使能输出ENO 的信号状态为“1”,置位输出“TagOut”。NORM_X:标准化 (S7-1200, S7-1500) 说明可以使用“标准化”指令,通过将输入 VALUE 中变量的值映射到线性标尺对其进行标准化。 可以使用参数 MIN 和 MAX定义(应用于该标尺的)取值范围的限值。根据要标准化的值在 其取值范围内的位置,计算出输出 OUT的结果并将其另存为一个浮点数。如果要标准化的 值等于输入 MIN 的值,输出 OUT 将返回值“0.0”。如果要标准化的值等于输入MAX 的值,则 输出 OUT 需返回值“1.0”。