数学函数 (S7-1500) NEG:取反 (S7-1500) 说明 可以使用“取反”指令更改操作数值的符号。例如,如果值为正值,则输出该值的负等效值。 如果指令结果超出输出 OUT 指定的数据类型的允许范围(仅对整数有效),则输出 OUT 的 值无效。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 <操作数> Input SINT、INT、 DINT、LINT、浮 点数 I、Q、M、D、 L、P 或常数 输入值 <结果> Output SINT、INT、 DINT、LINT、浮 点数 I、Q、M、D、 L、P 输入值取反 可以从“???”下拉列表中选择该指令的数据类型。 有关有效数据类型的更多信息,请参见“另请参见”。MIN:获取Zui小值 (S7-1500) 说明 可以使用“获取Zui小值”指令比较可用输入 IN1 和 IN2 的值,并将Zui小的值写入输出 OUT 中。 如果满足以下某个条件,则输出 OUT 的值无效: • 在执行该指令的过程中,后台转换数据类型失败。 • 浮点数的值无效。MAX:获取Zui大值 (S7-1500) 说明 可以使用“获取Zui大值”指令比较可用输入 IN1 和 IN2 的值,并将Zui大的值写入输出 OUT 中。 如果满足以下某个条件,则输出 OUT 的值无效: • 在执行该指令的过程中,后台转换数据类型失败。 • 浮点数的值无效。LIMIT:设置限值 (S7-1500) 说明 可以使用“设置限值”指令将 IN 输入的值限制在 MN 与 MX 输入的值范围内。如果 IN 输入 的值满足条件 MN <= IN <= MX,则将其复制到 OUT 输出。如果不满足该条件且输入值 IN 低 于下限 MN,则将输出 OUT 设置为输入 MN 的值。如果超出上限 MX,则将输出 OUT 设置 为输入 MX 的值。 如果输入 MN 的值大于输入 MX 的值,则结果为 IN 参数中指定的值。只有当所有输入的变 量均为同一种数据类型时,才能执行该指令。 如果满足以下某个条件,则输出 OUT 的值无效: • 指定的变量不具有相同的数据类型。 • 某个操作数的值无效。 • MN 参数的值大于 MX 参数的值。
将操作数“Tag_InputValue”的值与操作数“Tag_LowLimit”和“Tag_HighLimit”的值进行比较。 由于操作数“Tag_InputValue”的值小于下限值,因此将操作数“Tag_LowLimit”的值复制到输出 “Tag_Result”中。SQR:计算平方 (S7-1500) 说明 可以使用“计算平方”指令计算操作数的浮点值平方,并将结果写入到输出中。 如果操作数包含无效的浮点数,则结果值无效。SQRT:计算平方根 (S7-1500) 说明 使用“计算平方根”指令,可以计算输入值的平方根,并将结果保存到指定的操作数中。如 果输入值大于零,则该指令的结果为正数。如果输入值小于零,则该指令返回一个无效浮点 数。如果操作数的值为“0”,则结果也为“0”。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 <操作数> Input 浮点数 I、Q、M、D、 L、P 或常数 输入值 <结果> Output 浮点数 I、Q、M、D、L 输入值的平方根 有关有效数据类型的更多信息,请参见“另请参见”。LN:计算自然对数 (S7-1500) 说明 使用“计算自然对数”指令,可以计算输入值的以 e (e=2.718282) 为底的自然对数。如果 输入值大于零,则该指令的结果为正数。如果输入值小于零,则该指令返回一个无效浮点数。SIN:计算正弦值 (S7-1500) 说明 可以使用“计算正弦值”指令计算一个角度的正弦。角度值在操作数中以弧度的形式指定。 如果操作数的值不是有效的浮点数,则结果值无效。COS:计算余弦值 (S7-1500) 说明 可以使用“计算余弦值”指令计算角度的余弦。角度值在操作数中以弧度的形式指定。 如果操作数的值不是有效的浮点数,则结果值无效。TAN:计算正切值 (S7-1500) 说明 可以使用“计算正切值”指令计算一个角度的正切。角度值在操作数中以弧度的形式指定。 如果操作数的值不是有效的浮点数,则结果值无效。ASIN:计算反正弦值 (S7-1500) 说明 可以使用“计算反正弦值”指令计算操作数中指定的正弦值对应的角度值。只能为操作数指 定范围 -1 到 +1 内的有效浮点数。计算出的角度值以弧度为单位,范围为 -π/2 到 +π/2。 如果满足以下任何条件,则结果值无效: • 该操作数的值不是有效的浮点数。 • 该操作数的值超出了所允许的值范围(-1 到 +1)。ACOS:计算反余弦值 (S7-1500) 说明 可以使用“计算反余弦值”指令计算操作数中指定的余弦值对应的角度值。只能为操作数指 定范围 -1 到 +1 内的有效浮点数。计算出的角度值以弧度为单位,范围为 0 到 +π。 如果满足以下任何条件,则结果值无效: • 该操作数的值不是有效的浮点数。 • 该操作数的值超出了所允许的值范围(-1 到 +1)。ATAN:计算反正切值 (S7-1500) 说明 可以使用“计算反正切值”指令计算操作数中指定的正切值对应的角度值。操作数中的值只 能是有效的浮点数(或 -NaN/+NaN)。计算出的角度值以弧度为单位,范围为 -π/2 到 +π/2。FRAC:返回小数 (S7-1500) 说明 使用“返回小数”指令,可确定操作数中值的小数位。例如,如果操作数的值为 1.125,则 结果将返回值 0.125。 如果操作数的值不是有效的浮点数,则结果值无效。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 IN Input 浮点数 I、Q、M、D、 L、P 或常量 要确定其小数位的输入值 RET_VAL Output 浮点数 I、Q、M、D、 L、P 输入值的小数位 可以从“???”下拉列表中选择该指令的数据类型。 有关有效数据类型的更多信息,请参见“另请参见”。移动操作 (S7-1500) Deserialize:取消序列化 (S7-1500) 说明 可以使用“取消序列化”指令反向转换 PLC 数据类型 (UDT)、STRUCT 或 ARRAY of <数据类型 > 的顺序表示并填充所有内容。可使用该指令将多个序列化数据区转换回其去序列化表示形 式。 如果只是希望转换回 PLC 数据类型 (UDT)、STRUCT 或 ARRAY of <数据类型> 的单个顺序表示, 还可以直接使用指令“TRCV:通过通信连接接收数据”。 PLC 数据类型 (UDT)、STRUCT 或 ARRAY of <数据类型> 顺序表示所在存储区 "SRC_ARRAY" 的 数据类型必须为 ARRAY of BYTE 或 ARRAY of CHAR,并在版本 V1.0 中声明为标准访问。标 准存储区的容量为 64 KB。在转换之前确保有充足的存储空间。自版本 V2.0 起,还支持优 化的存储区。 如果使用“序列化”指令填充 "SRC_ARRAY" 存储区,则会自动插入任何所需填充字节。如果 通过其它方式填充 "SRC_ARRAY" 存储区,则需要手动插入任何所需填充字节。无论 "SRC_ARRAY" 位于优化存储区还是标准存储区,去序列化期间都会忽略填充字节。 建议将 ARRAY 的下限定义为“0”,这是因为 ARRAY 中的下标对应 POS 参数值。例如, ARRAY[0] = POS 0。下文中的说明与示例均基于此公式。 存储区的容量 对齐规则为优化存储区内的简单结构中不包含填充字节。这样,优化存储区中的结构大小将 小于标准存储区中的。结构型和嵌套结构型 ARRAY 包含填充字节。对于包含组合结构(所 需存储空间更高)的存储区而言,该规则并并为通用规则。 S7-1500 系列 CPU: 对于块属性为“优化块访问”的块,BOOL 类型的长度为 1 个字节。这样,优化存储区中主 要由 BOOL 数据类型组成的结构大小将大于标准存储区。因此,含少量 BOOL 数据类型的组 合型结构在优化存储区内的大小,要小于该结构在标准存储区内的大小。优化存储区 对固件版本 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本 V2.0 及以上版本的 S7-1500 系列 CPU,要取消较大结构的序列化,可将顺序表示的存储区声明为优化访问。对于标准存 储区,顺序表示中内容保存不变。ARRAY 中的字节仅支持符号化访问。 参数 下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 SRC_ARRAY Input ARRAY[*] of BYTE 1) 或者 ARRAY of CHAR I、Q、D、FB 的 块接口(可在 Input、 Output、Static 和 Temp 部分 中)。 无 I/O 数据 用于保存其数据流将取消 序列化的 ARRAY of BYTE 或 ARRAY of CHAR。 S7-1500: 进行性能优化时,该参数 不能为 VARIANT 指针。 DEST_VARI ABLE InOut 所有数据类型 I、Q、D、FB 的 块接口, 无 I/O 数据 已取消序列化数据待写入 的目标变量。 S7-1500: 进行性能优化时,该参数 不能为 VARIANT 指针。 POS InOut DINT I、Q、M、D、L POS 参数中的操作数将根 据转换后客户数据所占用 的字节数,存储第一个字 节的下标。POS 参数将从 0 开始计算。 RET_VAL Output INT I、Q、M、D、L 错误信息固件版本 V2.8 及以上版本中的特殊功能 (S7-1500): 要对“取消序列化”指令(版本 V2.1)的性能进行优化,参数 SRC_ARRAY 和 DEST_VARIABLE 不能为 VARIANT 指针,而只能使用特定的数据类型。 请注意,对指令的错误响应将会因此更改:出错时,CPU 不输出任何错误代码,而是切换为 STOP 模式并生成访问错误。为了避免该错误,可通过指令 "GET_ERROR" 和 "GET_ERR_ID" 进 行本地错误处理。