如何用plc实现闭环pid 如何使用PLC实现PID控制

PLC\u5b9e\u73b0PID\u63a7\u5236\u8be5\u600e\u4e48\u505a

PLC\u5b9e\u73b0PID\u7684\u63a7\u5236\u65b9\u5f0f\u662f\u4ec0\u4e48\uff1f
1\u3001PID\u8fc7\u7a0b\u63a7\u5236\u6a21\u5757\uff0c\u8fd9\u79cd\u6a21\u5757\u7684PID\u63a7\u5236\u7a0b\u5e8f\u662fPLC\u751f\u4ea7\u5382\u5bb6\u8bbe\u8ba1\u7684\uff0c\u5e76\u5b58\u653e\u5728\u6a21\u5757\u4e2d\uff0c\u7528\u6237\u4f7f\u7528\u65f6\u5e8f\u8981\u8bbe\u7f6e\u4e00\u4e9b\u53c2\u6570\uff0c\u4f7f\u7528\u8d77\u6765\u975e\u5e38\u65b9\u4fbf\uff0c\u4e00\u4e2a\u6a21\u5757\u53ef\u4ee5\u63a7\u5236\u51e0\u8def\u751a\u81f3\u51e0\u5341\u8def\u95ed\u73af\u56de\u8def\u3002
2\u3001PID\u529f\u80fd\u6307\u4ee4\uff0c\u5f88\u591aPLC\u90fd\u6709\u4f9bPID\u63a7\u5236\u7528\u7684\u529f\u80fd\u6307\u4ee4\uff0c\u5982S7-200\u7684PID\u6307\u4ee4\u3002\u5b83\u4eec\u5b9e\u9645\u4e0a\u662f\u7528\u4e8ePID\u63a7\u5236\u7684\u5b50\u7a0b\u5e8f\uff0c\u4e0e\u6a21\u62df\u91cf\u8f93\u5165/\u8f93\u51fa\u6a21\u5757\u4e00\u8d77\u4f7f\u7528\uff0c\u53ef\u4ee5\u5f97\u5230\u7c7b\u4f3c\u4e8e\u4f7f\u7528PID\u8fc7\u7a0b\u63a7\u5236\u6a21\u5757\u7684\u6548\u679c\u3002
3\u3001\u7528\u81ea\u7f16\u7684\u7a0b\u5e8f\u5b9e\u73b0PID\u95ed\u73af\u63a7\u5236\uff0c\u6709\u7684PLC\u6ca1\u6709PID\u8fc7\u7a0b\u63a7\u5236\u6a21\u5757\u548cPID\u63a7\u5236\u7528\u7684\u529f\u80fd\u6307\u4ee4\uff0c\u6709\u65f6\u867d\u7136\u53ef\u4ee5\u4f7f\u7528PID\u63a7\u5236\u6307\u4ee4\uff0c\u4f46\u662f\u5e0c\u671b\u91c7\u7528\u67d0\u79cd\u6539\u8fdb\u7684PID\u63a7\u5236\u7b97\u6cd5\u3002\u5728\u4e0a\u8ff0\u60c5\u51b5\u4e0b\u90fd\u9700\u8981\u7528\u6237\u81ea\u5df1\u7f16\u5236PID\u63a7\u5236\u7a0b\u5e8f\u3002

\u897f\u95e8\u5b50\u7684\uff1f\u8bbe\u7f6epid\u5411\u5bfc\u5c31\u53ef\u4ee5\u4e86\uff0c\u4e3b\u8981\u5305\u62ec\u91c7\u6837\u65f6\u95f4\uff0cpid\u53c2\u6570\uff0c\u503c\u57df\u7b49\u7b49\uff0c\u8bbe\u7f6e\u597d\u4e86\u81ea\u52a8\u751f\u6210pid\u5b50\u7a0b\u5e8f\u548c\u4e2d\u65ad\u7a0b\u5e8f\uff0c\u8c03\u7528\u5c31\u53ef\u4ee5\u4e86\u3002\u4f7f\u7528\u6a21\u62df\u91cf\u8f93\u51fa\u6a21\u5757\u8f93\u51fa\u6a21\u62df\u91cf\u63a7\u5236\u6267\u884c\u5668\u5373\u53ef\u3002

介绍西门子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将生成编译错误(http://www.oyesplc.com/范围错误)仪器编译失败。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控制,是一种易于实现且经济实用的方法。

有专门的PID模块

  • 涓夎彵PLC PID闂
    绛旓細涓夎彵PLC瀹炵幇PID鎺у埗鐨勬柟娉 1锛変娇鐢≒ID杩囩▼鎺у埗妯″潡銆傝繖绉嶆ā鍧楃殑PID鎺у埗绋嬪簭鏄疨LC鐢熶骇鍘傚璁捐鐨勶紝骞跺瓨鏀惧湪妯″潡涓紝鐢ㄦ埛鍦ㄤ娇鐢ㄦ椂鍙渶瑕佽缃竴浜涘弬鏁帮紝浣跨敤璧锋潵闈炲父鏂逛究锛屼竴鍧楁ā鍧楀彲浠ユ帶鍒跺嚑璺敋鑷冲嚑鍗佽矾闂幆鍥炶矾銆備絾鏄繖绉嶆ā鍧楃殑浠锋牸鏄傝吹锛屼竴鑸湪澶у瀷鎺у埗绯荤粺涓娇鐢ㄣ傚涓夎彵鐨凙绯诲垪銆丵绯诲垪PLC鐨凱ID鎺у埗妯″潡銆2...
  • PLC鐨PID鎺у埗鎬庝箞瀹炵幇闂幆鎺у埗?鍦ㄧ▼搴忎腑閲囩敤PID璋冭妭鎸囦护灏卞彲浠ヤ簡鍚,鏄...
    绛旓細鍙︿竴绉嶏細PLC鎺у埗浼烘湇鐢垫満锛屼己鏈嶇數鏈虹殑缂栫爜鍣ㄤ俊鍙风洿鎺ヨ緭鍏ュ埌浼烘湇椹卞姩鍣紝浼烘湇椹卞姩鍣ㄦ湁ABZ鐩歌緭鍑猴紝鍙互鎶夾B鐩告帴鍏LC锛岀敱PLC鍐嶆瀵圭紪鐮佸櫒鐨勭洃鎺э紝濡傛灉PLC涔熼渶浣跨敤闂幆锛岄偅涔堝氨闇瑕浣跨敤PLC鐨PID鎸囦护浜嗐
  • 璇锋暀PLC鎺у埗鐢垫満杞pid鎬庝箞缂栫▼
    绛旓細涓鏄PID鎺у埗鍋鍦≒LC涓紝杈撳嚭鐨4--20姣畨淇″彿鐩存帴缁欏畾鍙橀鍣ㄧ殑棰戠巼杈撳叆锛屼粠鑰岀洿鎺ユ帶鍒朵簡鍙橀鍣ㄧ殑杈撳嚭鑰屾帶鍒朵簡鐢垫満鐨勮浆閫熴備簩鏄疨LC鐨勮緭鍑虹殑4--20姣畨淇″彿浣滀负鍙橀鍣ㄧ殑AI杈撳叆锛屽湪鍙橀鍣ㄤ腑鍋PID闂幆鎺у埗锛屾潵鎺у埗鐢垫満杞熴傚叾瀹炲氨绠鍗曚竴涓亽鍘嬩緵姘达紝鏍规湰鐢ㄤ笉鐫PLC锛屽彉棰戝櫒鏈韩灏辫冻澶熶簡锛岀幇鍦ㄧ殑鍙橀鍣ㄩ兘甯︽湁鍗...
  • plc閫氳繃pid瀹炵幇闂幆,鐒跺悗鍚庢妸pid杈撳嚭缁撴灉閫氳繃閫氫俊缁欏彉棰鎬庝箞鎺ョ嚎_鐧惧害...
    绛旓細PID瑕佸湪PLC涓嚜宸遍厤缃紝鍦ㄥ伐鍏-鍚戝-閫夋嫨PID銆傜劧鍚庨夋嫨浣犻渶瑕佺殑鏉′欢銆傞厤缃ソ鐨凱ID鍧楀彲浠ュ湪璋冪敤瀛愮▼搴忎腑璋冪敤銆傛瘮渚嬶紝绉垎锛屽井鍒嗕笁涓彉閲忓湪鏁版嵁鍧椾腑鍙互鎵惧埌瀵瑰簲鍏崇郴
  • PLC涓殑闂幆鎺у埗鎬庝箞瀹炵幇鐨
    绛旓細涓夋锛1銆佸彇寰椾笌鎺у埗缁撴灉鎴愬弽棣堢殑鍥為淇″彿銆2銆佹敼鍙樺洖棣堜俊鍙锋ц川锛屼娇涔嬩笌缁欏畾淇″彿鐩稿悓銆3銆佸仛缁欏畾淇″彿鍜屽洖棣堜俊鍙风殑鍔犲噺娉曪紝鍐嶇敤姝ょ粨鏋滃幓鍋氭帶鍒躲
  • 瑗块棬瀛200PLC涓粈涔堟儏鍐典笅鐢≒ID璋冭妭,鎬庝箞鐢≒ID璋冭妭
    绛旓細闇瑕佺▼搴忓拰璁惧鎺у埗鍙嶆槧閫熷害蹇笖绮惧噯鐨勫氨瑕佺敤PID锛屼竴鑸敤鍦ㄩ棴鐜鎺у埗閲岋紝涓鑸敤鍦ㄦ俯搴﹀拰鍔犵儹鐨勬帶鍒讹紝娴侀噺鍜屾恫浣嶇殑鎺у埗锛岃繕鏈夊帇鍔涘拰闃闂ㄥ紑搴︾殑鎺у埗绛夈傝嚦浜嶱ID璋冭妭灏变笉鏄竴涓ゅぉ鍙互缁欎綘璇存竻妤氱殑浜嗐傚繀椤诲厛鎶PLC鍜屾暟鎹鐞嗗熀纭寮勬竻妤氫簡鍐嶅锛屾渶濂藉鐐归珮鏁扮殑PID杩愮畻鍘熺悊銆
  • 瑗块棬瀛PLC涓粈涔堝彨PID鎸囦护鍟?
    绛旓細PID鍥炶矾鎸囦护锛屽妯℃嫙閲忚繘琛PID鎺у埗鍗佸垎鏂逛究銆侾ID鎸囦护浣跨敤鐨勭畻娉曪細( n SP 涓虹n涓噰鏍锋椂鍒荤殑缁欏畾鍊硷紝n涓鸿繃绋嬪彉閲忓硷紝MX 涓虹Н鍒嗛」鍊)PID 鎸囦护鏍规嵁琛ㄦ牸(TBL)涓殑杈撳叆鍜岄厤缃俊鎭寮曠敤LOOP鎵цPID 寰幆璁$畻銆鍦瀹為檯鎺у埗杩囩▼涓紝鏃犺鏄粰瀹氶噺杩樻槸杩囩▼閲忛兘鏄伐绋嬪疄闄呭硷紝瀹冧滑鐨勫彇鍊艰寖鍥撮兘鏄笉鐩稿悓鐨勩傚洜姝...
  • 鍏闂幆plc绋嬪簭鎬庝箞鍐欑殑
    绛旓細1銆佺▼搴忕粨鏋勭粺涓锛PLC绋嬪簭闇瑕佹湁缁熶竴鐨勭粨鏋勶紝鍖呮嫭涓荤▼搴忋佸垵濮嬪寲绋嬪簭銆佷腑鏂▼搴忕瓑銆備緥濡傦紝涓荤▼搴廜B1锛屽垵濮嬪寲绋嬪簭OB100锛屼腑鏂▼搴廜B35绛夈2銆佹暟鎹潡瀹氫箟锛氭暟鎹潡瀹氫箟鏄疨LC绋嬪簭鐨勯噸瑕佺粍鎴愰儴鍒嗭紝鍖呮嫭AI鏁版嵁鍧楋紙涓庝笂浣嶆満鎺ュ彛锛夛紝AO鏁版嵁鍧楋紙涓庝笂浣嶆満鎺ュ彛锛夛紝DI鏁版嵁鍧楋紙涓庝笂浣嶆満鎺ュ彛锛夛紝DO鏁版嵁鍧楋紙涓庝笂浣嶆満...
  • 鍏充簬瑗块棬瀛200PLC鐨PID浣跨敤
    绛旓細鍒濈骇PID娓╂帶瀹為獙锛岃姹PLC鍙互鎺ユ俯搴︽ā鎷熼噺鍙嶉锛屽叿鏈夋櫠浣撶杈撳嚭鍗冲彲銆傚疄楠屼竴锛屽姞鐑數鐏场锛屽彲浠ユā鎷熷揩鍝嶅簲PID搴旂敤鐜锛屽鐑鍔犵儹绛夛細鍣ㄦ潗锛氬浐鎬佺户鐢靛櫒涓鍙紝20鍏冧互鍐呭氨鑳芥悶瀹氾紱鐧界偨鐏场涓鍙紝鐏骇涓涓備笉瑕佺敤甯︽湁璋冨帇鐢佃矾鐨勮妭鑳界伅涔嬬被銆傜數璺浘锛氱暐锛屽疄鍦ㄦ槸寰堢畝鍗曘傝鐐瑰氨鏄妸鍥烘佺户鐢靛櫒娆$骇涓插叆鐏场鐢垫簮...
  • PLC搴旂敤涓PID璋冭妭娉ㄦ剰浜嬮」
    绛旓細PID鎺у埗鍣ㄧ殑鍙傛暟鏁村畾鏄帶鍒剁郴缁熻璁$殑鏍稿績鍐呭銆傚畠鏄牴鎹鎺ц繃绋嬬殑鐗规х‘瀹PID 鎺у埗鍣ㄧ殑姣斾緥绯绘暟銆佺Н鍒嗘椂闂村拰寰垎鏃堕棿鐨勫ぇ灏忋侾ID鎺у埗鍣ㄥ弬鏁版暣瀹氱殑鏂规硶寰堝锛屾鎷捣鏉ユ湁涓ゅぇ绫伙細涓鏄悊璁鸿绠楁暣瀹氭硶銆傚畠涓昏鏄緷鎹郴缁熺殑鏁板妯″瀷锛岀粡杩囩悊璁鸿绠楃‘瀹氭帶鍒跺櫒鍙傛暟銆傝繖绉嶆柟娉曟墍寰楀埌鐨勮绠楁暟鎹湭蹇呭彲浠ョ洿鎺ョ敤锛岃繕...
  • 扩展阅读:p pi pd pid各自特点 ... plc中pid调节如何实现 ... plc里自己写pid算法 ... plc实现pid温度控制 ... plc如何写pid控制程序 ... plc怎么实现pid控制 ... plc如何实现pid控制 ... pid控制是开环还是闭环 ... 为什么双闭环采用pi调节器 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网