现场的过程信号(如本案例中的液位信号)是具有物理单位的工程量值,模/数转化后输入通道得到的是-27648~+27648的数字量,该数字量不具有工程量值的单位,在程序处理时带来不方便。因此,工程中经常希望将数字量-27648~+27648直接转化为实际工程量值,这一个过程称为“模拟量的规范化”。
本案例中,当液位为0米时,传感器输出信号为4mA,对应的模拟量输入通道转换值为0;液位为0.5米(具体参考传感器具体规格,这里只是举例)时,传感器输出信号为20mA,对应的模拟量输入通道转换值为27648。假如程序中读取到的数值为10000时,那么实际液位到底是多少米呢?为了解决这个问题,在这里引入了FC105功能。
调用FC105的具体路径如图1所示。
图1 FC105调用路径
2、FC105功能的输入输出定义
图2所示为FC105(即SCALE功能)的LAD调用框图,它接受一个整型值(IN),并将其转换为以工程单位表示的介于下限和上限(LO_LIM和HI_LIM)之间的实型值,并将结果写入OUT。
图2 FC105调用框图
SCALE功能的输入输出参数如表1所示。
表1 FC105的输入输出含义
3、调用FC105实例
在一般情况下,调用FC105功能可以在OB35等周期性中断中进行编程,这样就能确保模拟量输入信号被定时转换。 以液位传感器为例,如果输入20mA信号表示500mm液位,4mA信号表示0mm液位,则执行SCALE功能后的程序如图3所示。如果FC105功能的执行没有错误,ENO的信号状态将设置为1,RET_VAL等于W#16#0000,OUT输出为实际液位值,这也能回答了“假如程序中读取到的数值为10000时,那么实际液位到底是多少米呢?”的问题,即180.845mm液位。
图3 FC105调用实例
当M0.0信号=0时,按照图4进行变换;当M0.0信号=1时,按照图5进行变换。
图4 M0.0信号=0时的变换
图5 M0.0信号=1时的变换