PT100温度传感器0-100℃,通过温控仪表显示温度正常。改成触摸屏显示后加装变送器输出4-20ma,除数公式8×16mA/100×5uA=256显示温度值相差2倍,后改成520便接近实际温度值,但线性仍旧不理想,求指点迷津。模拟量模块使用的是EM231 AI4×12Bit 231-0HC22-0XA8。
首先可以肯定的告诉你,你的程序是错误的。为什么呢?
第一,从你提供的EM231模块的型号EM231 AI4×12Bit 231-0HC22-0XA8来看这是一个4路模拟量输入模块,而非RTD模块。从图中可以看到,这个模块的输入信号是电压信号和电流信号,而非RTD信号,所以他的工程量温度换算程序是不同的。
第二,确认了模块,需要对模块进行DIP开关的设置,需要选择电流模式
第三,就是编写程序,从你提供的程序看是错误的。对于S7-200的PLC,4mA电流对应A/D转化后的整数值为6400,20mA对应的整数值为32000,那么需要将整数值转为实数类型的工程值即摄氏度。公式为:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
其中:
Ov: 换算结果
Iv: 换算对象
Osh: 换算结果的高限
Osl: 换算结果的低限
Ish: 换算对象的高限
Isl: 换算对象的低限
那么Iv对应AIW14,Osh对应100,Osl对应0,Ish对应32000,Isl对应6400
Ov = 100*(AIW14-6400)/ (32000-6400)+0
Ov得到的结果就是实际的温度值。
第四,对简单的量程转换方法,就是使用库文件,Scale_I_to_R,这个指令库可以网络搜索得到,或者关注我后,发私信给我,注明需要的指令库,这个指令库比较简单,如果是简单使用没有问题,但是它没有考虑小信号切除,信号波动,报警输出等都可以自己集成到这个库程序。
以上就是个人在实际工程中用到的一些程序和经验,分享给大家。