工控智汇

工控智汇

西门子plc模拟量转换实例

admin 186 71

对于自动化控制系统来说,主要处理对象无外乎数字量和模拟量,很多刚接触自动化的新人对于模拟量可能还不

是很熟悉,这里以西门子plc300/400为例详细讲一下,其实模拟量处理如很简单。

1、模拟量输入/输出量程转换的概念

实际工程中,我们要面对很多工程量,如压力、温度、流量、物位等,他们要使用各种类型传感器进行测量,传感器再将测量值通过输出标准电压、电流、温度或电阻信号供PLC采集,PLC的模拟量输入模板将该电压、电流、温度、或电阻信号等模拟量转换成数字量—整形数(INT)。在PLC程序内部要对相应的信号进行比较、运算时,常需将该信号转换成实际物理值,这样这个数值才具有实际意义。相反,我们要控制一些执行机构(如比例阀,电动阀等)需要将控制值转换成与实际工程量对应的整形数,再经模拟量输出模板转换成电压、电流信号去控制现场执行机构。要完成输入、输出模拟量转换,就需要在程序中调用功能块完成量程转换。

例如一个压力调节回路中,压力变送器输出4-20mADC信号到SM331模拟量输入模板,SM331模板将该信号转换成0-27648的整形数,然后在程序中要调用FC105将该值转换成0-10.0(MPa)的工程量(实数),经PID运算后得到的结果仍为实数,要用FC106转换为对应阀门开度0-100%的整形数0-27648后,经SM332模拟量输出模板输出4-20mADC信号到调节阀的执行机构。

2、STEP7调用FC105,FC106进行模拟量转换编程

2.1FC105/FC106在哪里

在编程界面下,在Programelements中的Libraries下的StandardLibrary下的TI-S7

ConvertingBlocks中就可以找到

模拟量

注意:请不要使用S5-S7ConvertingBlocks下的FC105,FC106,该路径下的功能是用于S5输入输出模板的,

在S7输入输出模板上无法使用。

2.1.1FC105功能描述

SCALE(FC105)功能将一个整形数INTEGER(IN)转换成上限、下限之间的实际的工程值(LO_LIMandHI_LIM),结果写到OUT。公式如下:

OUT=[((FLOAT(IN)–K1)/(K2–K1))*(HI_LIM–LO_LIM)]+LO_LIM

常数K1和K2的值取决于输入值(IN)是双极性BIPOLAR还是单极性UNIPOLAR。

双极性BIPOLAR:即输入的整形数为–27648到27648,此时K1=–27648.0,

K2=+27648.0

单极性UNIPOLAR:即输入的整形数为0到27648,此时K1=0.0,K2=+27648.0如果输入的整形数大于K2,输出(OUT)限位到HI_LIM,并返回错误代码。如果输入的整形数小于K1,输出限位到LO_LIM,并返回错误代码。版权所有!反向定标的实现是通过定义LO_LIMHI_LIM来实现的。反向定标后的输出值随着输入值的增大而减小。

2.1.2FC106功能描述

UNSCALE(FC106)功能将一个实数REAL(IN)转换成上限、下限之间的实际的工程值

(LO_LIMandHI_LIM),数据类型为整形数。结果写到OUT。公式如下:

OUT=[((IN–LO_LIM)/(HI_LIM–LO_LIM))*(K2–K1)]+K1

常数K1和K2的值取决于输入值(IN)是双极性BIPOLAR还是单极性UNIPOLAR。

如果输入值在下限LO_LIM和上限HI_LIM的范围以外,输出(OUT)限位到与其相近的上限或下限值(视其单极性UNIPOLAR或双极性BIPOLAR而定),并返回错误代码。

2.2下面给大家举个例子:

如输入为1,SCALE功能被执行。下面的例子中,整形数22将被转换成0.0到100.0的实数并写到OUT。输入是双极性BIPOLAR,用来设置。

程序中调用的FC105

IN----------------------MW10=22

HI_LIM---------------MD20=100.0

LO_LIM--------------MD30=0.0

OUT-------------------MD40=0.0

=TRUE

执行后:

OUT------------------MD40=50.03978588

FC106与上同,不在举例了。

注意:通常在一个项目都有不只一个模拟量需要转换,FC105和FC106在程序中都可多次调用,调用的方法同上述例子程序。