对于自动化控制系统来说,主要处理对象无外乎数字量和模拟量,很多刚接触自动化的新人对于模拟量可能还不是很熟悉,这里以西门子plc300/400为例详细讲一下,其实模拟量处理如很简单。
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 中就可以找到,见下图:
模拟量
模拟量
注意: 请不要使用 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 来设置。
程序中调用的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
fc106与上同,不在举例了。
注意: 通常在一个项目都有不只一个模拟量需要转换, fc105 和 fc106 在程序中都可多次调
用,调用的方法同上述例子程序。