西门子PLC转换操作指令用法

2019年1月13日21:46:59 发表评论 2,413 阅读

CONV(转换值)指令

表格 8- 100 转换 (CONV) 指令

LAD/FBD SCL 说明

 

out := <data type in>_TO_<data type out>(in); 将数据元素从一种数据类型转换 为另一种数据类型。

1 对于 LAD 和 FBD: 单击“???”并从下拉菜单中选择数据类型。

2 对于 SCL: 通过识别输入参数 (in) 和输出参数 (out) 的数据类型来构造转换指令。 例如,DWORD_TO_REAL 将 DWord 值转换为 Real 值。

表格 8- 101 参数的数据类型

参数 数据类型 说明
IN 位串 1,SInt, USInt, Int, UInt, DInt, UDInt, Real, LReal, BCD16, BCD32, Char, WChar 输入值
OUT 位串 1,SInt, USInt, Int, UInt, DInt, UDInt, Real, LReal, BCD16, BCD32, Char, WChar 转换为新数据类型的输入值

1 该指令不允许您选择位串(Byte、Word、DWord)。 要为指令参数输入数据类型 Byte、Word 或 DWord 的操作数,选择位长度相同的无符号整型。 例如 为 Byte 选择 USInt、为 Word 选择 UInt 或为 DWord 选择 UDInt。

选择(转换源)数据类型之后,(转换目标)下拉列表中将显示可能的转换项列表。 与BCD16 进行转换仅限于 Int 数据类型。 与 BCD32 进行转换仅限于 DInt 数据类型。

表格 8- 102 ENO 状态

ENO 说明 结果 (OUT)
1 无错误 有效结果
0 IN 为 +/- INF 或 +/- NaN +/- INF 或 +/- NaN
0 结果超出 OUT 数据类型的有效范围 OUT 设置为 IN 值

SCL 的转换指令

表格 8- 103 从 Bool、Byte、Word 或 DWord 进行转换

表格 8- 104 从短整型(SInt 或 USInt)进行转换

表格 8- 105 从整型(Int 或 UInt)进行转换

表格 8- 106 从双整型(Dint 或 UDInt)进行转换

表格 8- 107 从实数(Real 或 LReal)进行转换

表格 8- 108 从 Time、DTL、TOD 或 Date 进行转换

表格 8- 109 从 Char 或 String 进行转换

ROUND(取整)和 TRUNC(截尾取整)指令

表格 8- 110 ROUND 和 TRUNC 指令

对于 LAD 和 FBD: 单击“???” (指令名称旁),并从下拉菜单中选择数据类型。

对于 LAD 和 FBD: 单击“???” (指令名称旁),并从下拉菜单中选择数据类型。

表格 8- 111 参数的数据类型

参数 数据类型 说明
IN Real, LReal 浮点型输入
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal 取整或截取后的输出

表格 8- 112 ENO 状态

ENO 说明 结果 (OUT)
1 无错误 有效结果
0 IN 为 +/- INF

或 +/- NaN

+/- INF

或 +/- NaN

CEIL 和 FLOOR(浮点数向上取整和浮点数向下取整)指令

表格 8- 113 CEIL 和 FLOOR 指令

对于 LAD 和 FBD: 单击“???” (指令名称旁),并从下拉菜单中选择数据类型。

表格 8- 114 参数的数据类型

参数 数据类型 说明
IN Real, LReal 浮点型输入
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal 转换后的输出

表格 8- 115 ENO 状态

ENO 说明 结果 (OUT)
1 无错误 有效结果
0 IN 为 +/- INF

或 +/- NaN

+/- INF

或 +/- NaN

SCALE_X(标定)和  NORM_X(标准化)指令

表格 8- 116 SCALE_X 和 NORM_X 指令

对于 LAD 和 FBD: 单击“???”并从下拉菜单中选择数据类型。

表格 8- 117 参数的数据类型

参数 数据类型1 说明
MIN SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal 输入范围的最小值
VALUE SCALE_X: Real, LReal

NORM_X: SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal

要标定或标准化的输入值
MAX SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal 输入范围的最大值
OUT SCALE_X: SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal

NORM_X: Real, LReal

标定或标准化后的输出值

1 对于 SCALE_X: 参数 MIN、MAX 和 OUT 的数据类型必须相同。 对于 NORM_X: 参数 MIN、VALUE 和 MAX 的数据类型必须相同。

说明

SCALE_X 参数 VALUE 应限制为 (0.0 <= VALUE <= 1.0)

如果参数VALUE小于0.0或大于1.0:

  • 线性标定运算会生成一些小于MIN参数值或大于 MAX 参数值的OUT值,作为OUT值,这些数值在OUT数据类型值范围内。此时,SCALE_X 执行会设置 ENO = TRUE。
  • 还可能会生成一些不在 OUT 数据类型值范围内的标定数值。此时,OUT参数值会被设置为一个中间值,该中间值等于被标定实数在最终转换为 OUT 数据类型之前的最低有效部分。在这种情况下,SCALE_X 执行会设置 ENO = FALSE。

NORM_X 参数 VALUE 应限制为 (MIN <= VALUE <= MAX)

如果参数 VALUE 小于 MIN 或大于 MAX,线性标定运算会生成小于 0.0 或大于 1.0的标准化OUT值。 在这种情况下,NORM_X 执行会设置 ENO = TRUE。

表格 8- 118 ENO 状态

ENO 条件 结果 (OUT)
1 无错误 有效结果
0 结果超出 OUT数据类型的有效范围 中间结果: 实数在最终转换为 OUT

数据类型前的最低有效部分。

0 参数 MAX <= MIN SCALE_X:用实数 VALUE 的最低有效部分填充

OUT 大小。

NORM_X:扩展 VALUE 数据类型的 VALUE

来填充双字大小。

0 参数VALUE = +/- INF 或 +/- NaN VALUE 写入 OUT

示例 (LAD) 标准化和标定模拟量输入值

来自电流输入型模拟量信号模块或信号板的模拟量输入的有效值在 0 到 27648 范围内。假设模拟量输入代表温度,其中模拟量输入值 0 表示 -30.0 摄氏度,27648 表示 70.0摄氏度。要将模拟值转换为对应的工程单位,应将输入标准化为 0.0 到 1.0之间的值,然后再将其标定为 -30.0 到 70.0 之间的值。 结果值是用模拟量输入(以摄氏度为单位)表示的温度:

请注意,如果模拟量输入来自电压型模拟量信号模块或信号板,则 NORM_X 指令的MIN值是-27648,而不是0。

示例 (LAD) 标准化和标定模拟量输出值

要在电流输出型模拟量信号模块或信号板中设置的模拟量输出的有效值必须在 0 到27648 范围内。 假设模拟量输出表示温度设置,其中模拟量输入值 0 表示 -30.0摄氏度,27648 表示 70.0 摄氏度。要将存储器中的温度值(范围是 -30.0到70.0)转换为 0 到 27648 范围内的模拟量输出值,必须将以工程单位表示的值标准化为0.0 到 1.0 之间的值,然后将其标定为 0 到 27648 范围内的模拟量输出值:

 

请注意,如果模拟量输出应用到电压型模拟量信号模块或信号板,则 SCALE_X 指令的MIN 值是 -27648,而不是 0。有关电压和电流形式的模拟量输出表示法和模拟量输出表示法详细信息,请参见技术规范。

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: