这一节讲述4-20mA的模拟量信号进入西门子S7-200PLC以后,PLC怎样通过程序把它变成我们想要的实际数值。虽然这节讲的是西门子PLC的模拟量处理程序,但道理都是一样的,你只要把程序的原理弄明白了,在其他品牌的PLC上应用也是一样的,不管是三菱的还是施耐德的都一样。所以文章最后我会附上本节所讲的程序的下载方法,有需要的朋友可以自己下载研究。
通过上一节的学习我们知道,模拟量其实就是一个在一定数字范围内连续变化的数值。这个数字范围绝大多数都是用4-20mA这个电流信号作为标准范围,至于为什么这样用,上一节已经讲的很清楚了,这里不再重复。接下来看图1。
图1,的左边是一个量程范围为0-10kpa的压力变送器,它的输出电流就是0-10kpa对应4-20mA,所以压力在5kpa时对应的电流就是12mA,我们只要在电路中串联一个数字万用表就能看到电流的读数,然后我们通过这个读数,拿一个计算器通过加减乘除就能算出实际的压力是5kpa。这就是手动的算法,如果用这种算法去算实际压力值,简直就是太老土了。这些活只要交给PLC去干就行了,你只要把程序写好PLC就会不知疲倦的去算还不会出错,我们腾出时间看点自己想看的片片多好呢。那怎么让PLC去算呢?很简单,我们只要做两件事就可以了。
第一,硬件部分,看图1的右边,我们只要在原来接数字万用表的地方,接一个PLC的模拟量输入模块就行了,你没看错,原理就是这样的。它实际的接线图就是下面的图2。
在图2我们看到压力变送器和PLC的模拟量模块串联在一起,模拟量模块把接收到的4-20mA电流信号经过处理传送给PLC,这样PLC就能通过程序计算出实际的压力值了。它的内部处理过程如下。
图3,是模拟量信号在PLC内部的处理过程和工作原理,只要能看明白这张图,我下面讲程序时你就能很容易理解了。
其实模拟量模块内部和压力变送器内部一样,都是有一块电路板。这块电路板的主要作用就是实现A/D转换,A指的是模拟量,D指的是数字量。为什么要这样转换呢?没办法因为PLC不认识4-20mA模拟量只认识数字量。那么4-20mA模拟量信号转换成数字量是多少了呢?西门子的PLC是0-20mA(注意是0-20mA)对应的是0-32000,所以4-20mA对应的是6400-32000。这句话要是不明白,可以自己算算就知道了。
这样我们就得出了模拟量的处理过程是这样的:压力变送器接到PLC的模拟量模块的第一组触点AIW0(AIW0是模块第一组触点的地址,每一个模拟量PLC都会分配一个地址,这样PLC才能分清谁接在了第一组触点谁接在了第二组。其他的不用管,我们只要记住第一组是AIW0,第二组是AIW2就行了,以此类推),然后AIW0把4-20mA模拟量信号送入模块内部的A/D转换器,A/D转换器再把4-20mA模拟量信号转换成数字量信号6400-32000。然后模块再把这个6400-32000传送给PLC,PLC再通过程序对这个数字量进行处理,来把我们需要的压力数值计算出来。程序怎么写呢?下面就是我们要做的第二件事,程序部分。
看图4,就是模拟量转换计算程序。大家看一下一共才用了6个西门子PLC指令,就把实际的压力值计算了出来,其中:
1,是整数转双整数指令。
2,是双整数转浮点数指令。
3,是减法指令。
4,是除法指令。
5,是减法指令。
6,是乘法指令。这些减法,乘法,除法指令和我们平时用的加减乘除的原理是一样的。而整数转双整数和双整数转浮点数指令是为了将0-32000这个整数转换为浮点数。因为我们的模拟量数据,压力,温度,流量等,多数都是带小数点的数值,所以模拟量输入以后,先把它转换成带小数点浮点数的数据类型。
为了便于大家理解,下面我们就以输入压力为:5kpa,压力变送器量程为:0-10kpa为例进行讲解。
看图5,
第一个指令:整数转双整数:作用是把输入地址AIW0的整数数据19200,转换成双整数数据19200,然后把数据放入通用寄存器MD0。至于为什么压力是5kpa时,AIW0的数据是19200,看一下图5下面的黑色方块内的转换过程就知道了。
第二个指令:双整数转浮点数:作用是把通用寄存器MD0中的19200转换成浮点数19200.0(大家看有小数点了,但数据大小并没有改变。就好比你穿了件棉袄,但你还是你),然后把19200.0放入通用寄存器MD4。大家如果看到AIWO,MD0,MD4等不知道是什么意思,就看看我以前的文章全都讲过了。当时可能大家没有足够重视,现在用到了。不懂的赶紧去学学,这都是PLC处理模拟量的基础,如果西门子PLC的模拟量处理你不明白,其他品牌的PLC模拟量处理你也不会看懂。
第三个指令:浮点数减法:作用是实现量程下限标准化(可以理解为,计算出压力变送器的量程范围0-10kpa中的最小值0kpa)。即让MD4中的19200.0减去6400.0然后把结果放入MD8。
第四个指令:浮点数除法:作用是实现量程上限标准化,它和上面量程下限标准化的原理是一样的。即让MD8中的12800.0除以25600.0然后把结果放入MD12。
第五个指令:浮点数减法:作用是定义并计算出压力变送器的量程范围(压力变送器量程范围是0-10kpa就写成0.0和10.0。如果量程范围是0-0.6MP就写成0.0和0.6。以此类推),然把数据放入MD16.
第六个指令:浮点数乘法:作用是计算出我们实际的压力数值。让量程上限标准化MD12中的值乘以量程范围MD16中的值,就是我们实际的压力数值5.0kpa,数据放在通用寄存器MD20中。
这就是西门子S7-200 PLC的模拟量的处理过程,上面的程序是一个标准的4-20mA模拟量信号的PLC计算程序,我们在实际项目应用中可以直接拿来使用。自己也可以实验一下当压力是:8kpa时各个指令数值是怎样变化的。