西门子plc模拟量转换实例

对于自动化控制系统来说,主要处理对象无外乎数字量和模拟量,很多刚接触自动化的新人对于模拟量可能还不是很熟悉,这里以西门子plc300为例详细讲一下,其实模拟量处理如很简单。

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

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

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

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

2.1 FC105/FC106 在哪里

在编程界面下,在 Program elements 中的 Libraries 下的 Standard Library 下的 TI-S7

Converting Blocks 中就可以找到,见下图:

西门子plc模拟量转换实例

模拟量

西门子plc模拟量转换实例

模拟量

注意: 请不要使用 S5-S7 Converting Blocks 下的 FC105, FC106 ,该路径下的功能是用于 S5输入输出模板的,在 S7 输入输出模板上无法使用。

2.1.1 FC105 功能描述

SCALE (FC105 )功能将一个整形数 INTEGER (IN)转换成上限、下限之间的实际的工程值(LO_LIM and HI_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 ,并返回错误代码。diangon.com版权所有!反向定标的实现是通过定义 LO_LIM > HI_LIM 来实现的。反向定标后的输出值随着输入值的增大而减小。

2.1.2 FC106 功能描述

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

(LO_LIM and HI_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下面给大家举个例子:

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

西门子plc模拟量转换实例

程序中调用的FC105

执行前:

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

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

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

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

BIPOLAR------------I2.0=TRUE

执行后:

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


分享到:


相關文章: