随着PLC技术的发展,越来越多的设备中应用到PLC控制器,如中央空调中的恒温恒湿机、冷水机等。在这些设备的应用中,使用了大量的模拟量输入输出信号,来达到温湿度控制。为此,我们在这里以模拟量输入信号(0-20mA和4-20mA)为例,简单介绍以S7-200的模拟量处理方法:
1. 模拟量比例换算
因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200 CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。这个关系就是模拟量/数值量的换算关系。例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。显然两者之间存在比例换算关系。模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 - 32000之类的数值;对于编程得到具体的物理量数值(如温度、湿度、压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。
2. 通用比例换算公式
模拟量的输入可以用下列的通用换算公式换算:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
其中:Ov: 换算结果 Iv: 换算对象 Osl: 换算结果的低限
Ish: 换算对象的高限 Isl: 换算对象的低限
它们之间的关系可以图示如下:
图1. 模拟量比例换算关系
3.程序的编制
根据1、2两点的分析,在由第二点中的公式可以编制如下用户程序。首先在已存在的程序项目建立子程序,在子程序中添加如下代码:
LD SM0.0
-R #Osl, #Osh
-I #Isl, #Input
ITD #Input, #Temp_D
DTR #Temp_D, #Temp_R
*R #Temp_R, #Osh
-I #Isl, #Ish
ITD #Ish, #Temp_D
DTR #Temp_D, #Temp_R
/R #Temp_R, #Osh
+R #Osl, #Osh
MOVR #Osh, #Output
在建立了子程序后,在把它定义为库指令后,在以后的编程中可以随时调用该指令应用到不同的控制程序中,使用程序的编制过程简单,同时使增强的程序的可读性。以上的程序已经过实际的应用,同行们可以直接使用。在程序中调用的指令Scal_I_to_R如下图所示。