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: 单击“???” (指令名称旁),并从下拉菜单中选择数据类型。
表格 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。有关电压和电流形式的模拟量输出表示法和模拟量输出表示法详细信息,请参见技术规范。

评论