16位二进制补码表明的数值规模是-32768——+32767,但模块的丈量规模却不与数值规模相同。
丈量规模为-27648——+27648,比方丈量的电压为±10V,那么对应联系便是:
-10V=-27648
+10V=+27648
数值规模与丈量规模的不同,能够表明当传感器输入信号超限时的数据,这样CPU就能对毛病进行确诊。
1、模拟量值的规范化
无论外部的信号是什么(温度、压力、流量、速度),这些信号经模块转化后都用-27648——+27648规模的整数表明,这个整数没有单位,更不简单回忆。
咱们在程序中使用模拟量时,假如程序中的数值和实际中的状况一致,那么将会愈加便利。把无意义的数值转化成有实际意义的数据,便是模拟量的规范化。
2、SCALE指令
在经典STEP7软件中经过库的方式,提供规范化程序模块,在博途中把这些常用的功能块做成了指令。
SCALE指令就相当于经典STEP7中的FC105,用法相同。
示例:使用压力传感器经过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、循环收集
对于模拟量信号,在短时刻内不会出现很大的波动,没必要在主程序中每个周期都扫描收集,能够使用循环中止,完成固定时刻距离进行采样。