工业控制中,模拟量采集的主要过程原理是:将各种工艺参数如温度、压力、流量、液位、成分等物理量变换成统一标准信号(标准信号通常是:电流为4-20mA或电压为0-5V),再传送到控制器或者指示记录仪中,进行调节、指示和记录等。
在工控系统中,温度、压力等传感器采集的信息,通过变送器处理成4-20mA或0-5V电信号,传送给PLC、单片机等CPU,那么这些CPU是如何把传送来的电信号转换为实际的温度、压力等信号?
我们通过一个例子来看一下,西门子S7系列PLC是如何处理模拟量传感器传动送来的电信号,现在常用的S7-1200PLC直接调用模拟量数据处理模块就可以,而对于S7-200(此型号已经停产)和S7-200SMART需要对数据进行计算和处理,这种处数据理思路的也是S7-1200数据处理的思路,只不过博图把这种数据处理过程封装成为一个指令罢了,其内核是一样的。我们以S7-200为例(S7-200SMART类似):
有1个温度传感器,其测量量程为0—100℃,变送器的输出信号为4—20mA,现需要用S7-200系列PLC采集温度传感器接收的温度信号,并编程计算得出实时变化的温度值。
已经知道温度传感器的量程为0--100℃,变送器为4---20mA电流信号。也就是说明0--100℃与4---20mA之间的数值是相互对应的,例如0℃对应着4mA,100℃对应着20mA。所以它们之间的关系可以用二维坐标系表示,如图1所示。
根据相似三角形可以得出公式:
S7-200系列PLC模拟量模块可处理数值范围为0—32000,电流范围为0-20mA。也就是数值0对应着0mA,数值32000对应20mA。两者之间的关系可以用二维坐标系表示,如图2所示。
根据相似三角形可以得出公式,
由上面两个公式可以得出,
其中,TX就是采集的实时温度值,AIWX为PLC模拟量输入模块的采集数据。
AIW16为从温度变送器接收来的数据,温度的最终数值为浮点数(也就是有小数点)类型,所以要先转换为实数,网络1第一列的指令为数据转换指令,将AIW16(整数)的数值转换为双整数,存储在VD100地址内;网络2第二列指令为将双整数转换为实数,结果保存在VD104地址内。所以网络1的程序功能是,将采集的数值(证书类型)转换为实数类型。网络2的程序就是按照上面的公式进行计算最终得出实际采集的温度数值为VD116地址内存放的数值。