在化工、炼油、热电等行业都离不开DCS、PLC控制系统,现场要想实现自动控制调节,就必须在程序中完成一系列的程序组态,那么接下来我们如何完成一个一个控制回路呢,一般一个工程完成要经过几个步骤的,DCS前期设计统计、导入数据库到DCS系统、新建工程(包括硬件、点数)、新建画面、操作站等。然后程序组态、然后下载到主控系统,发布到操作站运行,就可以实现简单的控制了。那么我们谈的是如何完成一个简单的PID调节。大家可以把做好的PID控制模块上传到这里来,或者说话组态的经过。7d48【中国自动化网社区】8710be【http://sns.ca800.com】28 要求:上传照片,叙述经过即可,什么厂家DCS、PLC系统均可,目的是大家学习下各个系统PID模块以及交流学习。047b【中国自动化网社区】ff59d9【http://sns.ca800.com】82
|
用PLC实现PID功能的确不是很容易,起码对于本身存储容量就很小的PLC系统而言,PID程序占用了很多空间。若一个系统有多个PID回路,或较为复杂的PID控制如串级、分程、比例等等用PLC实现将是非常罗嗦的,由于太多的中间变量,若其中一个地方出错,即使是高手也要花费很多的时间去检查处理。因此我因为PID功能不是PLC的强项,它的优势还是在传统的开关量控制上,而PID控制在DCS上相对来说是非常简便的。
|
ID指令编程举例
某一水箱里的水以变化速度流出,一台变频器驱动的水泵给水箱打水,以保持水箱的水位维持在满水位的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)寄存器 |