【PLC学习七】PLC编程必备技能——模拟量输入与输出转换
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一点小小的心得体会:
工业现场,电气设备与仪表设备是紧密相连,不可分割的。
同样,一套自动化系统,必不可少要对仪表进行控制。
但是,仪表输出的信号为模拟量信号,该信号数据不能直接被计算机理解。
因此,我们需要将模拟量转化为数字量,
即将其转化为计算机能够读懂的语言,以便控制系统能够对现场仪表进行控制。
提示:以下是本篇文章正文内容,下面案例可供参考
一、模拟量是什么?
模拟量是在时间和数量上都连续的物理量,其表示的信号则为模拟信号。模拟量在连续的变化过程中任何一个取值都是一个具体有意义的物理量,如温度,压力,电流等。
二、模拟量转换公式
1.以温度变送器为例
依据 0~ 20ma、4~20ma之间的换算关系,具体计算公式如下所示:
OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM (1)
(当选择双向输入时,K1为-27648,K2为+27648,当选择单向输入时,K1为0,K2为+27648);
详见【PLC学习四】,由详细计算介绍
2.以差压变送器为例
OUT = SQRT[FLOAT (IN) /27648]* (HI_LIM-LO_LIM) + LO_LIM(2)
SCL代码如下(示例):
IF #OUT.RANGE THEN //判断信号输出范围:1为-27648~+27648,0为0~+27648
#r1_tmp := -27648.0;
END_IF;
IF NOT #OUT.RANGE THEN //判断信号输出范围:1为-27648~+27648,0为0~+27648
#r1_tmp := 0.0;
END_IF;
#o2_tmp := #OUT.HI_LIM - #OUT.LO_LIM; //量程上限减量程下限
#o1_tmp := 27648.0 - #r1_tmp;
#o1_tmp := (((#in_r_tmp - #r1_tmp) / #o1_tmp) * #o2_tmp) + #OUT.LO_LIM;//见开头公式
IF #o1_tmp > #OUT.HI_LIM THEN
;
ELSE
#OUT.PV := #o1_tmp;
END_IF;
不用SCL语句,使用梯形图也可实现该功能,详见【SCALE】模块
三、模拟量输出转换
模拟量输出转换用到的梯形图模块有 MOVE模块、NORM_X模块和SCALE_X模块、TRUNC模块。将对应的数字量,通过上述模块,转化为相应的模拟量,进行输出。完成模拟量输入与输出的闭环。
四、报警模块
在实际应用中,模拟量的量程都是固定的。但是,当现场传感器采集到的模拟量超过量程时,是需要做报警处理的。因为这种情况属于异常工况,超过量程的电压、电流、温度等因素,都有可能造成设备的损坏。
当我们做报警模块时,我们会发现,量程转换后对应的数字量范围为0~~+27648,或是-27648~~+27648,那么,此时我们设置的报警量范围应该在多少合适呢?
一块16位的AI模块,它的最后一位为符号位,即他的范围为0~+32767,这是模拟量的最大数值范围。
因此,当模拟量输出值**>27648时**(比如其输出值是27649),此时,该输出值就超出了量程范围。但是,一般情况下都会给量程设置浮动的误差裕量。因此,一般设置输出数值超过29000或是30000,就做超过量程的报警处理。
五、总结
以上就是今天要讲的内容,模拟量的输入与输出。
参考