如何使用PLC实现PID控制
  • 如何使用PLC实现PID控制
电话/微信号:13308461099,13807313137
如何使用PLC实现PID控制
介绍西门子plc实现pid控制的方法。
1 引言
在工业生产中,常需要用闭环控制方式来实现温度、压力、流量等连续变化的模拟量控制。无论使用模拟控制器的模拟控制系统,还是使用计算机(包括plc)的数字控制系统,pid控制都得到了广泛的应用。
pid控制器是比例-积分-微分控制的简称,具有
(1) 不需要精确的控制系统数学模型;
(2) 有较强的灵活性和适应性;
(3) 结构典型、程序设计简单,工程上易于实现,参数调整方便等优点。积分控制可以消除系统的静差,微分控制可以改善系统的动态相应速度,比例、积分、微分三者有效地结合可以满足不同的控制要求。
2 plc实现pid的控制方式
2.1 pid过程控制模块
这种模块的pid控制程序是plc生产厂家设计的,并存放在模块中,用户使用时序要设置一些参数,使用起来非常方便,一个模块可以控制几路甚至几十路闭环回路。
2.2 pid功能指令
现在很多plc都有供pid控制用的功能指令,如s7-200的pid指令。它们实际上是用于pid控制的子程序,与模拟量输入/输出模块一起使用,可以得到类似于使用pid过程控制模块的效果。
2.3 用自编的程序实现pid闭环控制
有的plc没有pid过程控制模块和pid控制用的功能指令,有时虽然可以使用pid控制指令,但是希望采用某种改进的pid控制算法。在上述情况下都需要用户自己编制pid控制程序。
3 plc-pid控制器的实现
本文以西门子s7-200plc为例,说明pid控制的原理及plc的pid功能指令的使用及控制功能的实现。
3.1 pid控制器的数字化
plc的pid控制器的设计是以连续系统的pid控制规律为基础,将其数字化写成离散形式的pid控制方程,再跟据离散方程进行控制程序设计。
在连续系统中,典型的pid闭环控制系统如图1所示。图1中sp(t)是给定值,pv(t)是反馈量,c(t)是系统的输出量,pid控制的输入输出关系式为:

式中:
m(t)—控制器的输出量,m0为输出的初始值;
e(t)=sp(t)-pv(t)-误差信号;
kc比例系数;
ti-积分时间常数;
td-微分时间常数。 

图1 连续闭环控制系统方框图

式(1)的右边前3项分别是比例、积分、微分部分,它们分别与误差,误差的积分和微分成正比。如果取其中的一项或两项,可以组成p、pd或pi控制器。
假设采样周期为ts,系统开始运行的时刻为t=0,用矩形积分来近似精确积分,用差分近似精确微分,将公式1离散化,第n次采样时控制器的输出为: (2)
式中:
en-1-第n-1次采样时的误差值;
ki-积分系数;
kd-微分系数。
基于plc的闭环控制系统如图2所示。图中的虚线部分在plc内。其中spn、pvn、en、mn分别为模拟量在sp(t)、pv(t)、e(t)、m(t)在第n次采样时的数字量。
 

图2 plc闭环控制系统方框图
在许多控制系统内,可能只需要p、i、d中的一种或两种控制类型。如可能只要求比例控制或比例与积分控制,通过设置参数可对回路进行控制类型进行选择。
3.2 输入输出变量的转换
pid控制有两个输入量:给定值(sp)和过程变量(pv)。多数工艺要求给定值是固定的值,如加热炉温度的给定值。过程变量是经a/d转换和计算后得到的被控量的实测值,如加热炉温度的测量值。给定值与过程变量都是与被控对象有关的值,对于不同的系统,它们的大小、范围与工程单位有很大的区别。应用plc的pid指令对这些量进行运算之前,必须将其转换成标准化的浮点数(实数)。
同样,对于pid指令的输出,在将其送给d/a转化器之前,也需进行转换。
3.3 回路输入的转换
转换的第一步是将给定值或a/d转换后得到的整数值由16位整数转换成浮点数,可用下面的程序实现这种转换:
xord ac0, aco
//清除累加器
movw aiwo, ac0
//将待转化的模拟量存入累加器
ldw>= ac0, 0
//如果模拟量数值为正
jmp 0
//直接转换成实数
ord 16#ffff0000, aco
//将ac0内的数值进行符号扩展,扩展为32位负数
lbl 0
dtr ac0, ac0
//将32位整数转换成实数
转换的下一步是将实数进一步转换成0.0~1.0之间的标准化实数,可用下面的式(3)对给定值及过程变量进行标准化:
rnorm=(rraw/span)+offset (3)
式中:
rnorm-标准化实数值;
rraw-标准化前的值;
offset-偏移量,对单极性变量为0.0,对双极性变量为0.5;
span-取值范围,等于变量的最大值减去最小值,单极性变量的典型值为32000,双极性变量的典型值为64000。
下面的程序将上述转换后得到的ac0中的双极性实数(其span=64000)转换成0.0~1.0之间的实数:
/r 64000.0, ac0
//累加器中的实数标准化
+r 0.5, ac0
//加上偏移值,使其在0.0~1.0之间
movr aco, vd100
//加标准化后的值存入回路表内
3.4 回路输出的转换
回路输出即pid控制器输出,它是标准化的0.0~1.0之间的实数。将回路输出送给d/a转换器之前,必须转换成16位二进制整数。这一过程是将pv与sp转换成标准化数值的逆过程。用下面的公式将回路输出转换成实数:
rscal=(mn-offset)×span (4)
式中,rscal是回路输出对应的实数值,mn是回路输出标准化的实数值。
下面的程序用来将回路输出转换为对应的实数:
movr vd108, ac0
//将回路输出送入累加器
-r 0.5, ac0
//仅双极性数才有此语句
*r 64000.0, ac0
//单极性变量乘以32000.0
用下面的指令将代表回路输出的实数转换成16位整数:
round ac0, ac0
//将实数转换为32位整数
movw ac0, aqw0
//将16位整数写入模拟输出(d/a)寄存器
3.5 pid指令及回路表
s7-200的pid指令如图3所示:
 

图3 pid指令
指令中tbl是回路表的起始地址,loop是回路的编号。编译时如果指令指定的回路表起始地址或回路号超出范围,cpu将生成编译错误(范围错误)仪器编译失败。pid指令对回路表中的某些输入值不进行范围检查,应保证过程变量、给定值等不超限。回路表参见附表。
附表 pid指令的回路表
 


如果pid指令中的算术运算发生错误,特殊存储器smi.1(溢出或非法数值)被置1,并将终止pid指令的执行。要想消除错误,在下次执行pid运算之前,应改变引起运算错误的输入值,而不是更新输出值www.plcs.cn。4 pid指令编程举例
某一水箱里的水以变化速度流出,一台变频器驱动的水泵给水箱打水,以保持水箱的水位维持在满水位的75%。过程变量由浮在水面上的水位测量仪提供,pid控制器的输出值作为变频器的速度给定值。过程变量与回路输出均为单极性模拟量,取值范围为0.0~1.0。
本例采用pi控制器,给定值为0.75,选取控制器参数的初始值为:kc=0.25,ts=0.1s,ti=30min。编程如下:
//主程序(obi)
ld sm0.1 //首次扫描时
call 0 //调用初始化子程序
//子程序
ld sm0.0
movr 0.75, vd104 //装入给定值75%
movr 0.25, vd112 //装入回路增益0.25
movr 0.10, vd116 //装入采样时间0.1s
movr 30.0 vd120 //装入积分时间30min
movr 0.0, vd124 //关闭微分作用
movb 100, smb34
//设置定时中断0的时间间隔为100ms
atch 0, 10
//设定定时中断以执行pid指令
eni
//允许中断,子程序0结束
//中断程序0
ld sm0.0
ltd aiw0, ac0
//单极性模拟量经a/d转换后存入累加器
dtr ac0, ac0
//32位整数转换为实数
/r 32000.0, ac0
//标准化累加器中的实数
movr ac0, vd100 //存入回路表
ld 10.0
//在自动方式下,执行pid指令
pid vb100, 0
//回路表的起始地址为vb100,回路号为0
ld sm0.0
movb vd108, ac0
//pid控制器的输出值送入累加器
*r 32000.0 ac0
//将累加器中的数值标准化
round ac0, ac0
//实数转换为32位整数
dti ac0, aqw0
//将16位整数写入到模拟量输出(d/a)寄存器
5 结束语
plc实现pid控制的方法多种,直接应用pid指令来实现基于plc的pid控制,是一种易于实现且经济实用的方法。

湖南阳光技术学校成立于1992年,是经湖南省人社厅批准设立的正规职业技术学校(办学许可证:人社民 1800003000183 号),是行业TOP1,历年综合评分都在92.5以上。深耕职业技能培训32年,总校区位于长沙市雨花区红花坡路176号。学校常年开设:电工培训、焊工培训、钢筋工、家电维修培训、手机维修培训、电脑维修培训、摩托车维修培训、电动车维修培训、装修木工培训、水电安装培训、瓦工贴瓷砖培训、空调维修培训、电动工具维修培训、电机维修培训、农机维修培训、安防监控培训、家电清洗培训等实战专业技术培训,采用 “半天理论 + 半天实操” 模式,实操性强的班实操占比更是超过90%。小班手把手教学,零基础学员也能快速上手。师资团队以双师型教师为主,85% 教师持工程师 / 高级技师职称,一线教学经验丰富。学校提供住宿,收费透明无隐形消费,可协助报考全国通用的特种作业操作证与职业技能等级证书。同时搭建就业与创业支持网络,与 200 + 企业合作,负责推荐工作,助力学员顺利就业或开店。常年招生地区:中山,固原,银川,玉树,海东,陇南,酒泉,张掖,天水,金昌,兰州,榆林,延安,渭南,铜川,阿里,山南,拉萨,怒江,文山州,楚雄州,普洱,昭通,玉溪,昆明,毕节,铜仁,遵义,贵阳,甘孜州,资阳,达州,宜宾,南充,遂宁,绵阳,泸州,自贡,三亚,崇左,河池,玉林,钦州,梧州,柳州,梅州,肇庆,湛江,佛山,珠海,韶关,湘西州,怀化,郴州,张家界,邵阳,株洲,仙桃,随州,荆州,荆门,襄樊,黄石,驻马店,信阳,南阳,漯河,中卫,石嘴山,海西,海南藏州,黄南州,海北,甘南,庆阳,平凉,武威,白银,嘉峪关,安康,汉中,咸阳,宝鸡,林芝,日喀则,昌都,迪庆,德宏,大理,西双版纳,红河州,临沧,丽江,保山,曲靖,黔东州,黔西州,安顺,六盘水,凉山州,阿坝州,雅安,广安,眉山,内江,广元,德阳,攀枝花,成都,海口,来宾,百色,贵港,北海,桂林,南宁,云浮,揭阳,潮州,清远,阳江,汕尾,惠州,茂名,江门,汕头,深圳,广州,娄底,永州,益阳,岳阳,湘潭,长沙,恩施州,黄冈,孝感,鄂州,十堰,武汉,周口,商丘,三门峡,许昌,焦作,安阳,鹤壁,平顶山,开封,郑州,聊城,滨州,德州,莱芜,日照,泰安,烟台,潍坊,东营,淄博,上饶,济南,抚州,宜春,赣州,新余,九江,景德镇,宁德,南平,泉州,莆田,厦门,宣城,亳州,六安,宿州,黄山,滁州,安庆,淮北,马鞍山,蚌埠,芜湖,合肥,丽水,舟山,衢州,金华,湖州,嘉兴,宁波,宿迁,镇江,盐城,连云港,苏州,徐州,南京,绥化,牡丹江,佳木斯,大庆,鹤岗,哈尔滨,白城,白山,辽源,吉林,葫芦岛,铁岭,盘锦,阜新,锦州,本溪,鞍山,沈阳,锡林郭勒盟,通辽,乌海,吕梁,忻州,晋中,晋城,阳泉,太原,廊坊,承德,保定,邯郸,唐山,宁夏,甘肃,西藏,贵州,重庆,广西,湖南,河南,江西,安徽,江苏,黑龙江,辽宁,山西,天津,四平,内蒙古,吴忠,果洛,西宁,定西,商洛,西安,那曲,黔南州,巴中,乐山,贺州,防城港,东莞,河源,常德,衡阳,咸宁,宜昌,濮阳,新乡,洛阳,菏泽,临沂,威海,济宁,枣庄,青岛,吉安,鹰潭,萍乡,南昌,龙岩,漳州,三明,福州,池州,巢湖,阜阳,铜陵,淮南,台州,绍兴,温州,杭州,泰州,扬州,淮安,南通,常州,无锡,大兴安岭,黑河,七台河,伊春,双鸭山,鸡西,齐齐哈尔,延边,松原,通化,长春,朝阳,辽阳,营口,丹东,抚顺,大连,阿拉善盟,兴安盟,乌兰察布,巴彦淖尔,呼伦贝尔,鄂尔多斯,赤峰,#包头,呼和浩特,临汾,运城,朔州,长治,大同,衡水,沧州,张家口,邢台,秦皇岛,石家庄,青海,陕西,云南,四川,海南,广东,湖北,山东,福建,浙江,上海,吉林,河北,北京

湖南阳光技术学校成立于1992年,是经湖南省人社厅批准设立的正规职业技术学校(办学许可证:人社民 1800003000183 号),是行业TOP1,历年综合评分都在92.5以上。深耕职业技能培训32年,总校区位于长沙市雨花区红花坡路176号。学校常年开设:电工培训、焊工培训、钢筋工、家电维修培训、手机维修培训、电脑维修培训、摩托车维修培训、电动车维修培训、装修木工培训、水电安装培训、瓦工贴瓷砖培训、空调维修培训、电动工具维修培训、电机维修培训、农机维修培训、安防监控培训、家电清洗培训等实战专业技术培训,采用 “半天理论 + 半天实操” 模式,实操性强的班实操占比更是超过90%。小班手把手教学,零基础学员也能快速上手。师资团队以双师型教师为主,85% 教师持工程师 / 高级技师职称,一线教学经验丰富。学校提供住宿,收费透明无隐形消费,可协助报考全国通用的特种作业操作证与职业技能等级证书。同时搭建就业与创业支持网络,与 200 + 企业合作,负责推荐工作,助力学员顺利就业或开店。常年招生地区:中山,固原,银川,玉树,海东,陇南,酒泉,张掖,天水,金昌,兰州,榆林,延安,渭南,铜川,阿里,山南,拉萨,怒江,文山州,楚雄州,普洱,昭通,玉溪,昆明,毕节,铜仁,遵义,贵阳,甘孜州,资阳,达州,宜宾,南充,遂宁,绵阳,泸州,自贡,三亚,崇左,河池,玉林,钦州,梧州,柳州,梅州,肇庆,湛江,佛山,珠海,韶关,湘西州,怀化,郴州,张家界,邵阳,株洲,仙桃,随州,荆州,荆门,襄樊,黄石,驻马店,信阳,南阳,漯河,中卫,石嘴山,海西,海南藏州,黄南州,海北,甘南,庆阳,平凉,武威,白银,嘉峪关,安康,汉中,咸阳,宝鸡,林芝,日喀则,昌都,迪庆,德宏,大理,西双版纳,红河州,临沧,丽江,保山,曲靖,黔东州,黔西州,安顺,六盘水,凉山州,阿坝州,雅安,广安,眉山,内江,广元,德阳,攀枝花,成都,海口,来宾,百色,贵港,北海,桂林,南宁,云浮,揭阳,潮州,清远,阳江,汕尾,惠州,茂名,江门,汕头,深圳,广州,娄底,永州,益阳,岳阳,湘潭,长沙,恩施州,黄冈,孝感,鄂州,十堰,武汉,周口,商丘,三门峡,许昌,焦作,安阳,鹤壁,平顶山,开封,郑州,聊城,滨州,德州,莱芜,日照,泰安,烟台,潍坊,东营,淄博,上饶,济南,抚州,宜春,赣州,新余,九江,景德镇,宁德,南平,泉州,莆田,厦门,宣城,亳州,六安,宿州,黄山,滁州,安庆,淮北,马鞍山,蚌埠,芜湖,合肥,丽水,舟山,衢州,金华,湖州,嘉兴,宁波,宿迁,镇江,盐城,连云港,苏州,徐州,南京,绥化,牡丹江,佳木斯,大庆,鹤岗,哈尔滨,白城,白山,辽源,吉林,葫芦岛,铁岭,盘锦,阜新,锦州,本溪,鞍山,沈阳,锡林郭勒盟,通辽,乌海,吕梁,忻州,晋中,晋城,阳泉,太原,廊坊,承德,保定,邯郸,唐山,宁夏,甘肃,西藏,贵州,重庆,广西,湖南,河南,江西,安徽,江苏,黑龙江,辽宁,山西,天津,四平,内蒙古,吴忠,果洛,西宁,定西,商洛,西安,那曲,黔南州,巴中,乐山,贺州,防城港,东莞,河源,常德,衡阳,咸宁,宜昌,濮阳,新乡,洛阳,菏泽,临沂,威海,济宁,枣庄,青岛,吉安,鹰潭,萍乡,南昌,龙岩,漳州,三明,福州,池州,巢湖,阜阳,铜陵,淮南,台州,绍兴,温州,杭州,泰州,扬州,淮安,南通,常州,无锡,大兴安岭,黑河,七台河,伊春,双鸭山,鸡西,齐齐哈尔,延边,松原,通化,长春,朝阳,辽阳,营口,丹东,抚顺,大连,阿拉善盟,兴安盟,乌兰察布,巴彦淖尔,呼伦贝尔,鄂尔多斯,赤峰,#包头,呼和浩特,临汾,运城,朔州,长治,大同,衡水,沧州,张家口,邢台,秦皇岛,石家庄,青海,陕西,云南,四川,海南,广东,湖北,山东,福建,浙江,上海,吉林,河北,北京