3.3.3 转换操作指令
1.转换值指令
“转换值”指令CONVERT(CONV)的参数IN、OUT可以设置为十多种数据类型,IN还可以是常数。
EN输入端有能流流入时,CONV指令读取参数IN的内容,并根据指令框中选择的数据类型对其进行转换,转换值存储在输出OUT中。转换前后的数据类型可以是位字符串、整数、浮点数、CHAR、WCHAR和BCD码等。
图3-36中I0.3的常开触点接通时,执行CONV指令,将MD42中的32位BCD码转换为双整数后送至MD46。如果执行时没有出错,有能流从CONV指令的ENO端流出。
图3-36 数据转换指令
2.浮点数转换为双整数的指令
浮点数转换为双整数有4条指令,“取整”指令ROUND用得最多(见图3-36),它将浮点数转换为四舍五入的双整数。“截尾取整”指令TRUNC仅保留浮点数的整数部分,去掉其小数部分。
“浮点数向上取整”指令CEIL和“浮点数向下取整”指令FLOOR极少使用。
如果被转换的浮点数超出了32位整数的表示范围,得不到有效的结果,ENO为0状态。
3.标准化指令
图3-37中的“标准化”指令NORM_X的整数输入值VALUE(MIN≤VALUE≤MAX)被线性转换(标准化,或称归一化)为0.0~1.0之间的浮点数,转换结果用OUT指定的地址保存。
NORM_X的输出OUT的数据类型可选Real或LReal,单击方框内指令名称下面的问号,用下拉式列表设置输入VALUE和输出OUT的数据类型。输入、输出之间的线性关系如下式所示(见图3-38):
OUT=(VALUE-MIN)/(MAX-MIN)
4.缩放指令
图3-37中的“缩放”(或称“标定”)指令SCALE_X的浮点数输入值VALUE(0.0≤VALUE≤1.0)被线性转换(映射)为参数MIN(下限)和MAX(上限)定义的范围之间的数值。转换结果用OUT指定的地址保存。
单击方框内指令名称下面的问号,用下拉式列表设置变量的数据类型。参数MIN、MAX和OUT的数据类型应相同,VALUE、MIN和MAX可以是常数。输入、输出之间的线性关系如下式所示(见图3-39):
OUT=VALUE×(MAX-MIN)+MIN
图3-37 NORM_X指令与SCALE_X指令
图3-38 NORM_X指令的线性关系
图3-39 SCALE_X指令的线性关系
【例3-4】 某温度变送器的量程为-200~850℃,输出信号为4~20mA,符号地址为“模拟值”的IW96将0~20mA的电流信号转换为数字0~27648,求以℃为单位的浮点数温度值。
4mA对应的模拟值为5530,IW96将-200~850℃的温度转换为模拟值5530~27648,用“标准化”指令NORM_X将5530~27648的模拟值归一化为0.0~1.0之间的浮点数(见图3-37中上半部分的图),然后用“缩放”指令SCALE_X将归一化后的数字转换为-200~850℃的浮点数温度值,用变量“温度值”(MD74)保存。
【例3-5】 地址为QW96的整型变量“AQ输入”转换后的DC 0~10V电压作为变频器的模拟量给定输入值,通过变频器内部参数的设置,0~10V的电压对应的转速为0~1800rpm。求以rpm为单位的整型变量“转速”(MW80)对应的AQ模块的输入值“AQ输入”。
程序见图3-37中下半部分的图,应去掉OB1属性中的“IEC检查”复选框中的勾,否则不能将SCALE_X指令输出参数OUT的数据类型设置为Int。
“标准化”指令NORM_X将0~1800的转速值归一化为0.0~1.0之间的浮点数,然后用“缩放”指令SCALE_X将归一化后的数字转换为0~27648的整数值,用变量“AQ输入”保存。