示例:利用压力传感器通过4-20mA信号,采集压力值,压力变送器量程0~0.6MPa,如果利用SCALE指令采集模拟量数据,如下图所示:
IN:模拟量数据地址,在硬件组态中可查到具体地址,以%IW开头(与经典STEP7不同)。
HI_LIM:量程上限,本示例为压力变送器上限量程0.6,数据类型为浮点数。
LO_LIM:量程下限,本示例为压力变送器上限量程0.0,数据类型为浮点数。
RET_VAL:错误代码,当转换出错时可根据代码提示查找错误。
OUT:转换值,通过指令规范化后的实际值,数据类型为浮点数。
BIPOLAR:极性选择,0=单极性,1=双极性。
除了利用SCALE指令进行数据转换,当然你也可以自己利用数学方法,构造出转换程序,博途中提供很方便的指令。
不建议这么做,既然有了SCALE指令再去自己写算法,显然这么做很浪费精力。这些指令经过了多次验证,肯定不会出问题,自己编写的程序,容易出差错。
在博途中增加了缩放SCALE_X和NORM_X标准化两个指令,也可以通过这两个指令进行规范化,但要比SCALE指令复杂点,可以试着自己编写。
3、循环采集
对于模拟量信号,在短时间内不会出现很大的波动,没必要在主程序中每个周期都扫描采集,可以利用循环中断,实现固定时间间隔进行采样。
新建一个组织块,类型选择为Cyclic interrupt(循环中断),如下图所示:
上图中的时间间隔单位是μs,数值范围250~60000000(250μs~60s)
把我们编写的模拟量采集程序块,拖拽到循环中断OB30中,即可实现每隔500ms对模拟量进行一次采样。