《过程控制仪表》
课程设计报告
设计题目 液位控制系统设计 指导老师 王莉 吴同茂
设计者 龚晓辉 专业班级 自动化09级05班02号 设计日期 2012年5月
1
目 录
第一章 过程控制仪表设计的目的意义 ............................... 1
1.1 设计目的....................................................1 1.2 课程在教学计划中的地位和作用 .................................... 2
第二章 液位控制系统实验控制设计与调试 .......................... 3
2.1 液位控制系统的工艺及控制要求 .................................... 3
2.2 液位系统控制实验方案设计 ........................................ 5
2.3 系统调试与控制效果 ............................................... 7
第三章 火力发电气泡水位控制系统设计 ............................. 8
3.1 火力发电厂生产工艺及控制要求 ................................. 8 3.2 系统总体方案设计 ................................................. 9 3.3 系统硬件设计 ..................................................... 11 3.4 系统软件设计 ..................................................... 14
第四章 收获、体会和建议 ............................................. 16 参考文献
1
第一章 过程控制仪表设计的目的意义
1.1 设计目的
本课程设计是为《过程控制仪表》课程而开设的综合实践教学环节,是对《现代检测技术》、《自动控制理论》、《过程控制仪表》、《计算机控制技术》等前期课堂学习内容的综合应用。其目的在于培养学生综合运用理论知识来分析和解决实际问题的能力,使学生通过自己动手对一个工业过程控制对象进行仪表设计与选型,促进学生对仪表及其理论与设计的进一步认识。其主要是设计工业生产过程经常遇到的压力、流量、液位及温度控制系统,使学生将理论与实践有机地结合起来,有效的巩固与提高理论教学效果。 1.2课程在教学计划中的地位和作用
课程设计对过程控制课程有重要的实践意义,可以加深学生对所学知识的理解与运用。主要的内容是通过对典型工业生产过程中常见的典型工艺参数的测量方法、信号处理技术和控制系统的设计,掌握测控对象参数检测方法、变送器的功能、测控通道技术、执行器和调节阀的功能、过程控制仪表的PID控制参数整定方法,进一步加强对课堂理论知识的理解与综合应用能力,进而提高学生解决实际工程问题的能力。基本要求如下:
1. 掌握变送器功能原理,能选择合理的变送器类型型号;
2. 掌握执行器、调节阀的功能原理,能选择合理的器件类型型号; 3. 掌握PID调节器的功能原理,完成相应的压力、流量、液位及温度控制系统的总体设计,并画出控制系统的原理图和系统主要程序框图。
4. 通过对一个典型工业生产过程进行分析,并对其中的一个参数(如温度、压力、流量、液位)设计其控制系统。
以上的课程设计要求充分地结合了教材理论知识,将理论上的常用工程设计过程运用到了课程设计之中。从整个系统的角度讲,课程将过程控制硬件系统,软件系统同书本中的理论知识有机地结合起来了,使学生要选定一个具体的工艺过程控制,从底层基本的器件选型到顶层高级的目标控制一步步实现,使我们体会到一个系统的具体构建过程,体验了过程控制系统的基本设计思路,提高了系统设计能力。可见,课程设计对我们学习这门课有着启发性与重大的指导性意义。
第二章 液位控制系统实验控制设计与调试
1
2.1 液位控制系统的工艺及控制要求
1.液位控制系统的工艺
该装置由三个大小相同的容器、液位检测变送仪表以及执行机构组成,仪表屏上配有带连接信号插座孔的整个工艺过程模拟流程图,调节控制仪等、其具体的工艺模拟流程图如图2..1所示
图2.1
图2.1中具体符号含义如下
C:控制器(t调节器)。该装置配有三个单回路调节器C1,C2,C3,控制输出信号为4~20mA
PV为测量值输入,SV为外给定输入或者阀位反馈信号输入,O孔为调节器输出。 R:记录仪为无纸记录仪,输入4~20mA,分为R1~R3三个通道 HT:液位变送器。液位变送器为LSRY或LSRT,1#~3#输入量程均为0~100mH0,变送器输出为4~20mA。
VL:电子调节阀为电子小流量调节阀,电动调节阀输入为4~20mA电流信号,对应调节阀输出开度为0~100%。
V1~2与I1~2:两路电压/电流转换器。V1为电压输入,I1为电流输出,V2为第二路电压输入,I2为第二路电流输出。
三级串联水箱由三个水箱组成,稳压水由两路经过电动调节阀VL1和VL2以及手动阀V1~V6, 分别流入三个水箱,调节阀VL1和VL2可以作为控制回炉的执行机构,另一个用于产生干扰信号。通过使用不同的控制执行机构与手动阀,结合具体的控制水箱的液位,就可以构成一阶,二阶和三阶系统。 2.液位控制系统控制要求
1
在具体确定控制参数时,可以使用以下方法
(1) 掌握PID控制算法及P、I、D参数的含义及功能;
(2) 用工程的方法(看曲线,调参数)整定调节器控制规律及PID参数,并观
察PID参数对系统动态、静态性能的影响。 (3) 测取液位串级过程控制系统的动态、静态特性; 体现在不同的控制系统中有如下具体要求:
超调量σ<20%,调节时间Ts≤100s,稳态误差1%,在实际确定控制系统的性能时,可以根据具体情况确定控制性能。 2.2液位系统控制实验方案设计
根据具体的控制对象的要求,我们把液位控制系统分为了单回路控制系统与
双回路控制系统。 1.单回路控制系统
单回路控制系统由以下四个部分组成: (1)被控对象-水箱 (2)电子阀 (3)
液位变送器 (4)PID智能调节器。其控制系统的方块图如图2.2所示
扰动
给定量Hs 调节器 D/A 电子阀 水箱 A/D 图2.2
液位变送器
系统被控制量是水箱的液位Hs,调节参数是流入水箱的水流量Q,水箱液位由液位变送器检测得到液位反馈信号Hf,它和液位设定信号进行比较,得到偏差信号Hi,调节器对输入偏差Hi进行PID运算, 输出变化量u控制信号, 控制电子调节阀的液位,改变调节参数Q,使被调参数H保持在设定值,系统中f为给定信号。根据实验装置,结合具体的控制对象的液位可以构成一阶与二阶系统。
2. 双回路控制系统
串级PID控制是将两个PID控制器串联在一起,控制一个执行阀,实现定值控制。图2.3是水箱液位串级控制系统的方框图。有主副两个控制回路,主副调节器串联工作,其中主调节器有自己独立的给定值Hs,它的输出U1作为副调节器的给定值,副调节器的输出u2控制执行器,以改变主参数H1.
1
主给定Hs
扰动1 扰动2 2#水箱 H1 E1-YH2 智能调 节器 1 U1 副调节器2 -YH1 副回路 U2 电子阀 1#水箱 H2 压力变送器1 主回路 液位压力变图2-3 在大多数情况下,主回路控制器采用比例,积分,微分控制,而副控制器这采用比例或者比例,积分控制。其中,Hs是主参数的给定值,H1是被控的主参数,H2是副参数,f1是作用在主对象上的扰动,f2是作用在副回路上的扰动。液位串级控制系统具有两个调节器,两个闭环,与两个执行对象,由于着眼点不同,两个调节器的控制规律选择不一样,设置副回路的目的是为了提高主变量的控制质量,因此,副回路有快速抗干扰能力,起着粗调的作用,对副变量没有严格的要求。正是因为采用了串级控制,使得控制系统的动态性能与稳态性能相对单回路控制系统而言有很大的优势,不过控制回路较复杂。
2.3 系统调试与控制效果 2.3.1 单回路控制系统
1.一阶控制系统
对于一阶控制系统,根据液位控制系统的特点采用PI控制,根据P与I的控制特点,由于P是比例系数的倒数,故先把P与I加大,然后根据实际的响应曲线再把P与I 逐渐调小,以此来达到我们的控制效果。通过不断地调试,我们最终确定了控制参数为 P = 40, I = 40,系统的调节时间为90s,超调量为0.05 得到的响应曲线如下
1
2.二阶控制系统
根据具体的水箱装置可知二阶系统具有一定的时滞性,故在PI的基础上加上D控制,结合一阶控制系统的控制规律,观察实际的水位响应曲线,不断改进参数,可以得到最后的参数 P= 40 I=30,D=5,系统的调节时间为85s, 超调量为4%,响应曲线如下
1
2.3.2 双回路控制系统
由于主回路是一个恒值系统,我们要求其超调量,调整时间,稳态误差
等参数都要求较高,而副回路是一个随动控制系统,副回路是对系统起着一个粗调的作用,对副回路变量没有严格的要求,对副回路只需采用P控制即可。主回路的控制要求高,我们采用了PID控制。在调节系统时,首先适当给定主回路的PID参数,然后调节副回路,初步确定副回路的P参数,根据多次试验,我们确定了比例度为50, 然后固定该参数,根据P,I与D的控制特点,用临界扩充响应曲线法并结合PID试凑法最终整定主回路的控制参数,经过多次调节,观察响应曲线得到主回路的比例度P = 40, I = 55, D = 5;系统的调节时间为50S,超调量为3.6%,响应曲线如下
1
在调节整个系统的参数,基本的原则如下
参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低4比1 一看二调多分析,调节质量不会低
通过对参数的调节,加深了对P,I,D的作用的认识,同时也积累了在工程实际中如何具体来调节P,I,D参数的经验。 第三章
火力发电气泡水位控制系统设计
3.1 火力发电厂生产工艺及控制要求
3.1.1 火力发电厂生产工艺
在火力发电厂,最基本的工艺过程是用锅炉生产蒸汽,使汽轮机运转,进而带动发电机发电。锅炉控制是火力发电生产过程自动化的重要组成部分。它的主要任务
是根据负荷设备(汽轮机)的需要,供应一定规格(压力、温度、流量和纯度)的蒸汽。
1
其主要的结构原理图如下。
1-汽轮机高压缸;2-汽轮机中、低压缸;3-汽包;4-炉膛;5-烟道;6-发电机;7-冷凝器;8-补充水;9-凝结水泵;10-循环水泵;11-低压加热器;12-除氧器;13-给水泵;14-高压加热器;15-给水调节机构;16-省媒器;17-过热器;18-减温器;19-汽机高压调汽门;20-再热器;21-再热器减温器;22-汽机中压调汽门;23-媒粉仓;24-燃料量控制机构;25-喷燃器;26-送风机;27-空气预热器;28-调风门;29-水冷壁管;30-引风机;31-烟道挡板。
由此可知,在火力发电厂中,锅炉是整个系统的核心,对锅炉的压力,温度,液位控制至关重要,它直接影响到发电厂的经济效益,进而影响到国民经济的发展与进步,是我们必须不断研究,加以重视的地方。在这里,我们主要研究的是设计控制系统对锅炉的液位进行控制。 3.1.2 控制要求
1、供给蒸汽量适应负荷变化需要或者保持给定负荷;
2、锅炉供给用汽设备的蒸汽压力应当保持在一定的范围内; 3 、过热蒸汽温度保持在一定范围; 4、汽包水位保持在一定范围; 5、保持锅炉燃烧的经济性和安全性; 6 、炉膛负压保持在一定的范围内。
由于研究的主要是锅炉的气泡液位,因此将锅炉的汽包水位控制在一个允许范围内,是控制的主要指标,也是锅炉能提供符合质量要求的蒸汽负荷的必要条件。
1
3.2系统总体方案设计
根据具体的控制的锅炉控制对象,由于与锅炉有关的控制量涉及蒸汽,给水量,锅炉水位,通过查阅资料,我得到以下三种控制方案。
方案一: 单回路控制系统
以锅炉汽包水位为被控参数、给水流量为控制参数构成的单回路控制系统。这种系统结构简单、设计方便,缺点是克服给水自发性干扰和负荷干扰的能力差最典型的问题就是虚假水位问题。
方案二 前馈加反馈控制系统
在单回路控制系统的基础之上,为了解决系统抗干扰能力差的问题,将锅炉产生的蒸汽看作干扰的话,我们可以把蒸汽流量检测出来,作为前馈控制量,就可以使调节阀动作准确及时,减小水位的波动,改善控制质量,提高锅炉液位稳定性能。控制系统的方框图如图3.1
图3.1
图3.1(b)中, GB(s)是前馈控制器的传递函数, Gc(s)是主回路控制器传递函数
Gf(s)是被控对象扰动通道的传递函数。Gv(s)G0)(s)是被控对象主回路通道的
传递函数
方案三 前馈+串级控制系统
由于该方案对负荷干扰有很强的抑制作用,但是对水位的干扰很弱,因此可以在前馈+反馈控制系统的基础之上再对给水阀加一个回路实现对给水阀中水的流量进行控制,这样的话整个系统抗干扰能力大大增强,在克服虚假水位的影响、维持水位稳定、提高给水控制质量等多方面都优于前述两种控制系统,是现场广泛采用的汽包水位控制方案。在这个控制系统中,由主、副两个调节器和三个控制量(汽包水位、蒸汽流量、给水流量)构成。其中,主调节器为水位调节器,副调节器为给水流量调节器,蒸汽流量为前馈信号。这样,整个控制系统的性能大大提高,但是系统的复杂性加大,系统的方框图如图3.2
1
Gs(s) Gf(s) Hr(s)
Gc(s) Gv(s) Go(s) Gf1(s) Gm(s) 根据以上三种设计方案,综合实际情况,我们选择了方案二作为控制系统来控制系统锅炉的液位。纵观整个控制系统,其工作原理就是传感器采集液位与蒸汽流量信息并由变送器转换成标准的1~5V电压信号给控制器,控制器采样后按照方案二的框图运算后得到控制阀门的控制量,并由D/A转换后送给执行机构,驱动执行机构来控制送水阀门的相应开度,从而实现使液位保持在一定的范围内。达到控制目的。
3.3 系统硬件设计 3.3.1 硬件总体概要 近年来,随着微电子技术与计算机技术的迅速的发展, 在锅炉的控制系统上也引入了数字控制,采用了锅炉的微机控制,它是计算机软件、硬件、自动控制
1
理论、节能技术等技术结合的产物。采用微机控制与原有的仪表结合对工业中的锅炉控制有着姣好的效果。因此,在选择控制器时,对比市场上常见的PLC,各种模拟调节器,我采用了适合用控制的单片机,单片机是在一块芯片上集成了一片微型计算机所需的CPU、存储器、输入、输出等部件。单片机自问世以来,性能不断提高和完善,体积小、速度快、功耗低的特点使它的应用领域日益广泛。因此,使用单片机高效实时的控制特点可以完全实现控制目的。
由于锅炉控制是一个安全性很高的系统,因此,我们在控制的时候必须要严格监控系统运行时的各项性能指标,故在硬件设计的时候,除了要有相应的控制还要有其他的辅助设备。在硬件设计中,我加上了液位报警,数码管显示,串口,SD卡数据存取,上位机调试,手动操作。由此得到系统硬件简图如图3.1 数码管显示 传感器 I/V变换 报警显示 MCU 数据存取 V/I变换 执行机构 A/D转换 串 口 图3.1
3.3.2 具体器件选择与电路设计
1..控制器选择
考虑到8位单片机的功能上的限制,我没有选择MCS-51系列的单片机,并且根据我平时经常使用过的单片机,对锅炉液位控制系统,从微控制器的价格,性能以及可靠性的角度,我选择了飞思卡尔公司的16位单片机MC9S12XS128,这块芯片的功能很强大,其芯片引脚如图3.2
1
图3.2
飞思卡尔这块芯片价格便宜,资源丰富。有丰富的I/O口,其主要有以下几个特点
1. 端口A, B 和K 作为一般的I/O口使用 2. 端口E作为IRO, XIRQ中断输入
3. 端口T作为1路定时器模块
4. 端口 S 作为2路SCI与1路SPI模块使用 5. 端口M作为一路MSCAN使用 6. 端口P作为PWM输出
7. 端口H和J既可以作为一般的I/O口使用也可以作为外部中断源 8. 端口AD是16路的AD采样模块,可以通过软件设置采样精度 9. 内部带有锁相环,可以实现对外部晶振的几倍频率。
正是由于XS128这块芯片的丰富资源,可以方便我来设计控制系统,且通过设置锁相环可以设置总线频率为80MHZ,因此,可以使用C语言来进行编程,一样可以实现控制的快速性要求,而不必要采用汇编语言来编写软件,这样可以大大减轻设计者的编程负担。
MC9S12XS128芯片的外围设备也很简单,除了为芯片提供电源外,只需设置复位电路,晶振电路以及下载程序口即可,下面图3.3是单片机的最小系统图
1
图3.3
在最小系统配置后,单片机就可以工作了,下面就是其他的电路设计。 2.蒸汽流量变送器器选择
在锅炉控制系统中,要实现前馈控制,抑制负荷变化导致的水位的变化,必须要检测锅炉产生的蒸汽的流量。由于锅炉在工作时,温度比较高,且蒸汽是热空气,因此选择的变送器必须是能够在高温下工作,且具有一定的防爆性能,通过查阅大量资料,最终选择LUGB型涡街流量计。
LUGB型涡流街流量计根据卡门涡街原理测量气体,蒸汽或者液体的体积流量、标况的体积流量或者质量流量的体积流量计。广泛用于各种行业气体、液体、蒸汽流量的测量。它也可以测量含有微小颗粒,杂质的浑浊液体,并可以作为流量变送器用于自动化控制系统中的测量中
LUGB型涡流街变送器为放保型,符合GB3836-2000<爆炸性环境用防爆电气设备>中的有关规定,防爆标志为”ExiaIICT6”, 该仪表适用于工厂C级T6组及其以下的防爆场所。根据锅炉实际的工作环境,选择LUGB型涡流街计量计完全可以满足锅炉控制系统的精度要求。下面是其主要参数。 ●公称口径: DN10~DN500 ●测量介质: 气体、液体、蒸气
●可测介质温度: -40℃~150℃;-40℃~280℃;-40℃~350℃;-40℃~450℃ ●公称压力: 2.5MPa(>2.5 MPa协商供货)
●精度等级: 1级,0.5级(注:0.5级量程范围≥1:7)
1
●输出信号: ① 电压脉冲:低电平≤1V,高电平≥6V,脉冲宽0.4ms,负载电阻>150Ω
② 4—20mA转换精度±0.5%满度值,负载电阻19V—350Ω,24V—500Ω,30V—750Ω
③ 现场液晶显示:瞬时流量6位显示,(m3/h或kg/h,t/h),转换精度±0.1%;累计流量8位显示,(m3,kg,t),转换精度±0.1% ●供电电源: ① 电压脉冲输出:+12VDC或+24VDC ② 4—20mA输出:+19VDC—+30VDC
③ 现场液晶显示:电池供电3.6V,1节1号锂电池,使用寿命大于3年;外部供电+12VDC或+24VDC可实现带背光的液晶显示(订货注明) ●环境温度: ① 电压脉冲输出:-30℃—+65℃ ② 4—20mA输出:-10℃—+55℃
③ 现场液晶显示 -25℃—+55℃
●防爆标志: ExiaIIBT6
●表体材料: 1Cr18Ni9Ti(其它材料协议供货);45号钢(法兰连接型) ●全智能型仪表:① 输出信号:标态的体积流量或质量流量
② 现场液晶显示:循环显示6位瞬时流量、压力、温度;8
位显示累积量 3.液位变送器选择
为了测量锅炉气泡的液位,必须选择合乎锅炉工作环境的产品,并且液位变送器要承受较高的温度,而且变送器受到外部的干扰必须小,可靠性高,且具有防爆性能,这样才能保证变送器的正常工作,经过查阅资料,综合产品性能与价格,我选择了CR-6031智能锅炉气泡液位计。CR-6031/2系列智能电容式锅炉汽包液位计,是基于电容测量原理的液位计。它采用断层扫描技术,通过测量分析桶内的液态,气态介质的介电常数,补偿温度、压力等变化带来的影响。经过微处理器运算处理后输出符合工业标准的4-20mA电流信号,下面是该变送器的主要技术特点。
1
1、两线制电流环;
2、具有全工况条件( 锅炉启、停、排污、工况等)下液位准确连续测控功能; 3、采取断层扫描技术,能够对液态、汽态介质的介电常数变化连续测量补偿; 4、长期稳定性好;
5、经C E 认证的良好的电磁兼容特性; 6、耐高温、高压、长寿命;
7、操作软件为中文操作环境, 轻松整定; 技术指标
●工作电压: 最大:28V 最小:20V ●电 流 环:两线制4.00mA ~ 20.00mA(±0.5%)
●防爆等级:ExiaIICT6 (-40℃~70℃) ExiaIICT1-5 (-40℃~85℃) ●防爆参数:Ui=30V,Ii=100mA ,Pi=0.75W Ci=100pF,Li=10uH ●工作压力:22MPa max ●
测
量
范
围
:
1500mm
●测量周期:0.5秒
●环境温度:-40℃~65℃ (ExiaIICT1-T5) ●介质温度:500℃ max. ●防护等级: IP65。
由变送器的性能指标可知,变送器完全可以测量火电厂锅炉的液位,满足控制系统的测量要求 4.控制阀的选择
根据过程控制仪表中的理论知识知控制阀有气动调节阀、电动调节阀和液动调节阀。气动调节阀已压缩空气为能源的执行器。其特点是结构简单,输出推力大,价格便宜,性能稳定,价格便宜和本质安全防爆等。电动调节阀是以电位能源的,它的主要特点是能源取用方便,信号传输速度快,距离远,便于集中控制,停电时能够保持原位不动,灵敏度与精度要求高等。而液动调节阀一般很小使用。在选择的时候可以从以下三个反面考虑:阀孔径的选择,气开气关形式的选择和流量特性的选择。对于流量特性有4种形式即:1.直线特性 2.等百分比特性 3. 快开特性 4.抛物线特性。根据锅炉的特性在阀门口径上我们选择较大口径的,这个是根据实际锅炉的大小。阀门气开气关的选择原则是当控制信号中断时,阀门
1
的复位位置能使工艺设备处于安全状态,因此对于锅炉控制阀门时为保证失控状态时锅炉的安全,给水阀应选气关式,至于流量特性可以根据具体的锅炉工作特性来决定。根据上述控制阀的特点,综合使用的价格,可靠性和性能,我选择了武汉欣裕瑞控制阀有限公司DKV系列型的电动调节阀。它是一种角行程调节式阀门,它与电子式电动执行机构配套使用,可实现对锅炉水量的精确控制。多种阀芯结构满足不同流量特性的调节需求。流通能力大、直流通式结构产生很小的压力降。调节精度高,可调比例大,最大可达(300:1)密封性好(双面球形密封)。许用压差大(0~10Mpa)卓越的调节性能,广泛应用于各种工业给排水领域的高精度调节环节。其技术特点是 -公称通径:DN25~DN400
-公称压力:1.6、4.0、6.4MPa、ANSI150、300(Lb)、JIS10、20K -电 源:220ACV
-控制信号:4~20mA 0~5V -输出信号:4~20mA 0~5V -基本误差:≤0.5% -死 区:≤0.3% -结构形式:V型缺口铸造球体 -连接形式:法兰连接:JB79-59 -填 料:PTFE、石墨 -环境温度:-20℃~60℃
-阀体材质: (1)WCB (2)304 (3)316 (4)316L -阀芯材质: (1)304 (2)316 (3)316L -温度范围:-40℃~120℃ (高温可定制) -介质温度:-40~120℃ -40~400℃
1
-密封材料:聚四氟乙烯(常温)、特制PPL(高温) -泄 漏 量:0 符合ANSIB16.104 5级标准
-适用范围:锅炉水量调节、石化、脱硫水处理、燃烧炉水、油量调节、煤气量调节等需要对流量精确控制的应用场合。
由电动调节阀的性能指标知该调节阀对于火电厂的锅炉液位控制是完全可以达到要求。
5. D/A转换与电流与电压的转换
为了达到相应的精度与转换的快速性,采用12位逐次逼近型D/A转换芯片DAC1210,由于只有一块芯片,并且单片机具有丰富的I/O资源,故可以把芯片直接接成直通的方式。4~20mA电流到电压1~5V的转换可以采用250欧的精密电阻实现1~5V的转换,至于D/A转换输出后将电压转换成电流可以使用集成芯片AD694下面是电路原理图
图3.8
1
图3.9
图3.10
1
7. 报警显示
当锅炉达到上下限极限水位时报警,可以使用单片机的一个I/0口实现对电铃的控制.使电铃在水位达到上下限时发出不同频率的报警声音来区分是水位上限还是下限。电路原理图如图3.7
图3.7
8.数码管显示
可以实时将锅炉内的水位通过8位数码显示出来供操作人员了解锅炉内部的液位情况,电路图如图3.4
图3.4 10.串口调试与SD卡
在调节PID参数的时候,需要实时了解系统的响应,为了方便调试,可以通过一个串口将控制器与上位机PC机联系起来,实时监控系统的情况,这里考
1
虑到控制室与锅炉之间的距离,采用了RS485通信方式来实现通信。其电路原理图如图3.5
图3.5
在数据存取方面为了得到系统的实时数据通过使用SPI模式将数据写到SD卡中以便能够得到系统运行的动态数据。其电路原理图如下
11. 电源模块
1
电源是整个控制系统的核心,由于在工业锅炉现场存在各种干扰,因此在制作控制板时,必须对电源要有一个很好的设计,这样才能保证整个控制系统的正常运行。对PCB板上的各种芯片我没有使用开关电源,而是使用了线性稳压芯片。目的是进一步减小谐波的干扰。此外,根据各种仪表的电源供应情况知,板子上需要3.3V直流,5V直流, 10V直流, 24V直流与220交流, 对于3.3V直流,在220交流(220 AC)引入后,经过变压器后,采用LM2937-3.3V稳压芯片, 而5V直流,我使用了LM2940-5V稳压芯片, 对于10V直流,使用了LM2941可调稳压芯片,通过调节电阻的大小使输出电压达到10V,上面的稳压芯片的最大输出电流可达1A,驱动能力强,输入输出的压差比较小,只有1V左右.对于24V直流,我没有自己制作,而是选择了买一个输入220V AC输出24V DC 的电源。图3.12是24V稳压到3.3V的原理图
图3.12
图3.13是24V稳压到5V的原理图,用于为单片机提供电源
1
图3.13
下面图3.14是使用LM2941稳压得到10V的电压,为DAC1210与AD694提供参考电压。
图3.14
为了充分抑制干扰,在PCB制作后,可以用金属外壳将板子封装起来隔离干扰,同时在输入输出通道加入光耦实现隔离,在电源的处理上加入掉电处理在发生意外时启动备用电源等抗干扰措施。
1
3.4 系统软件设计
3.4.1 编程环境 飞思卡尔的16位控制器芯片采用称之为代码勇士的CodeWarrior软件作为编程环境。因此在软件编写部分,主要的编程过程在该环境下完成。该软件功能强大,下面是编程界面。
3.4.2 软件系统程序框图
1
开始 初始化 检测液位 是 是否到上限水位 上限报警 否 PID控制运算 是 是否到下限水位 下限报警手动操作
3.4.3 数据采集与滤波
取采样周期为5ms, 每次采集液位与蒸汽流量信号,考虑到液位的波动,因此采取使用中位值与平均值结合的滤波方式对采样变送器的数据滤波 3.4.4 前馈+反馈控制算法
系统的简化图
系统的传递函数如下
由此得到前馈调节器的微分方程
当采样频率足够高时,使用查分代替微分有
1
代入方程 得到差分方程
然后将前馈调节器与反馈调节器结合起来,得到整个控制器的输出 (1) 计算反馈控制的偏差
e(k) = r(k) – y(k) (2) 计算反馈控制器PID的输出U1(k)
u1(k)Kpe(k)Kie(k)Kd[e(k)e(k1)U1(k)U1(k1)u1(k)
(3) 计算前馈控制的输出Un(k)
u1(k)Kpe(k)Kie(k)KD[e(k)e(k1/]Un(k)Un(k1)u1(k)
(4) 得到整个控制器的输出U(k) U(k)U1(k)Un(k)
由上面的推导可以得到数字控制器的输出函数 3.4.5 各部分程序 限于篇幅,这里只给出关键的算法源文件,没有给出数码管显示和数据存取代码和相应的头文件
1. MC9S12XS128初始化程序 Init.c
1
#include \"Include.h\" extern float PIDError[3];
extern float zhenQiSample[3]; extern float qianKuiOut = 0; extern float lastQianKuiOut = 0; extern float lastPIDOutError = 0;
void SetBusClock(void) //总线频率 = 40MHZ {
CLKSEL = 0X00; PLLCTL_PLLON = 1; SYNR = 0XC0 | 0X04; REFDV = 0x80 | 0x01; POSTDIV = 0x00; _asm(nop); _asm(nop);
while(!(CRGFLG_LOCK == 1)); CLKSEL_PLLSEL = 1; }
//AD sample init void AD_Init(void) {
//single channel ATD0CTL1 = 0x4f; ATD0CTL2 = 0x40;
ATD0CTL3 = 0x88;//每次转换的次数为1
ATD0CTL4 = 0x0b;//ATD装换频率 1.67MHZ }
//Timer is used to time void PIT_Init(void) {
PITCE = 0x00; PITMUX = 0x00;
PITMTLD0 = 0xc7;//199,计数器的初始值
PITLD0 = 0x3e7;//999,timeout = (PITMTLD0 + 1) * (PITLD0 + 1) / 总线频率
//定时时间为5ms 用于通道0 PITINTE =0x0f; //通道0使能中断
PITCFLMT = 0xe1;//Enable PIT Module }
//Set the IO state void IO_Init(void)
1
{
DDRJ = 0xff; DDRA = 0xff; DDRB = 0x00;
PUCR_PUPKE = 1; DDRK = 0xff; PORTK_PK5 = 0;/ PORTK_PK4 = 0; PTJ_PTJ1 = 0;
DDRT_DDRT7 = 0; }
//串口初始化 波特率 = 9600bit/s 无奇偶校验位,void SCI_Init(void) {
SCI0BD = 260; SCI0CR1 = 0x00; SCI0CR2 = 0x0c; }
void sysIni(void) {
int i = 0;
qianKuiOut = 0; lastQianKuiOut = 0; lastPIDOutError = 0; for (i = 0; i < 3; i++) {
PIDError[i] = 0;
zhenQiSample[i] = 0; } }
void ALL_Init(void) {
SetBusClock(); AD_Init(); PIT_Init(); IO_Init(); sysInit(); }
(2) 程序参数的宏定义 Include.h #ifndef _INCLUDE_H #define _INCLUDE_H
1
8位数据 #include \"Sensor.h\" #include \"init.h\"
#include #include \"derivative.h\" /* derivative-specific definitions */ #include \"uart.h\" #include \"stdtypes.h\" #include \"math.h\" #define SENSOR_NUM 2 #define LEVEL_MAX MAX1 //定义液位的最大高度 #define LEVEL_MIN MIN1 //定义液位的最小高度 //定义PID参数 #define KP 50 #define KI 30 #define KD 5 //定义系统的参数 #define T1 5 #define T 5 #define T2 1 #define Kf 6 //定义前馈调节器的参数 #define A1 T1 / (T + T1) #define Bm Kf * T1 * (T + T2) / T2 * (T + T1) #define Bm1 -Kf * T1 / (T + T1) #define SET_LEVEL MaX //PID运算限幅 #define PIDMAX 5000 #define PIDMIN 0 #define QIANKUIMAX 255 #define QIANKUIMIN 0 void delay(unsigned int delaytime); //1ms timer #endif (4)数据采集程序 Sensor.c #include \"Include.h\" //第0路表示液位的采样, 第一路表示蒸汽的流量 float AD_result0[SENSOR_NUM][20] = {0.0}; float AD_result1[SENSOR_NUM] = {0, 0}; /************AD 采样**********/ float Get_AD(unsigned char num) { ATD0CTL5 = num;//start to convert while (!(ATD0STAT0 & 0x80)); return ATD0DR0; } 1 /*********采样数据************/ void getOrigSignal() { unsigned char i,j,m,n,p; float mid = 0; float AD_result[SENSOR_NUM]={0.0}; for(i=0;i<20;i++) for(j=0;j if (AD_result[m][j] > AD_result[m][j + 1]) { mid = AD_result[m][j]; AD_result[m][j] = AD_result[m][j + 1]; AD_result[m][j + 1] = mid; } } } for(m=0;m AD_result1[p] = (AD_result[p] - 819)// 采样电压在1~5V,故在采样数据应该减去1V对应的数字量 } } 5.运算控制输出函数 Control.c #include \"Include.h\" extern float AD_result1[SENSOR_NUM]; float PIDError[3]; float zhenQiSample[3]; float qianKuiOut = 0; float lastQianKuiOut = 0; float lastPIDOutError = 0; /**********D/A输出函数**************/ void DAOut(float Out) { PORTA = Out % 256; //取低 8位 1 PORTB = Out - PORTA; // 取高4位 } void contorOut(void) { int i = 0; float kpResult = 0; float kiResult = 0; float kdResult = 0; float PID = 0; float zhenQiError1 = 0; float zhenQiError2 = 0; for (i = 2; i > 0; i--) { zhenQiSample[i] = zhenQiSample[i - 1]; } zhenQiSample[0] = AD_result[1]; zhenQiError1 = zhenQiSample[2] - zhenQiSample[1]; zhenQiError2 = zhenQiSample[1] - zhenQiSample[0]; QianKuiOut = lastQianKuiOut + A1 * qianKuiOutError + Bm * zhenQiError1 + Bm1 * zhenQiError2; qianKuiOutError = QianKuiOut - lastQianKuiOut; lastQianKuiOut = QianKuiOut; for (i = 2; i > 0; i--) { PIDError[i] = PIDError[i - 1]; } PIDError[0] = SET_LEVEL - AD_result[0]; kpResult = KP * (PIDError[2] - PIDError[1]); kiResult = KI * PIDError[2]; kdResult = KD * (PIDError[2] - 2 * PIDError[1] + PIDError[0]); PID = lastPIDOut + kpResult + kiResult + kdResult; lastPIDOut = PID; if (PID > PIDMAX) { PID = PIDMAX; } if (PID < PIDMIN) { PID = PIDMIN; } if (QianKuiOut > QIANKUIMAX) { 1 QianKuiOut = QIANkUIMAX; } if (QianKuiOut < QIANKUIMIN) { QianKuiOut = QIANKUIMIN; } } void delay(unsigned int delaytime) //1ms timer { unsigned int d; uchar a,b,c; for(d=delaytime; d>0;d--) { for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } } void upAlarm(void) { PTJ_PTJ1 = 0; delay(400); PTJ_PTJ1 = 1; delay(400); } void dowmAlarm(void) { PTJ_PTJ1 = 0; delay(1000); PTJ_PTJ1 = 1; delay(1000); } 6.串口调试代码 #include \"UART.h\" extern float OutData[4]; /****************串口发送**************/ void sendByte(unsigned char sendChar) { while (!(SCI0SR1 & 0x80)); SCI0SR1_TDRE=1; 1 SCI0DRL=sendChar; } /***************串口接收************/ unsigned char recByte(void) { while (!(SCI0SR1 & 0x80)); return SCI0DRL; } unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT) { unsigned short CRC_Temp; unsigned char i,j; CRC_Temp = 0xffff; for (i=0;i if (CRC_Temp & 0x01) CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001; else CRC_Temp = CRC_Temp >> 1; } } return(CRC_Temp); } void OutPut_Data(void) { int temp[4] = {0}; unsigned int temp1[4] = {0}; unsigned char databuf[10] = {0}; unsigned char i; unsigned short CRC16 = 0; for(i=0;i<4;i++) { temp[i] = (int)OutData[i]; temp1[i] = (unsigned int)temp[i]; } for(i=0;i<4;i++) 1 { databuf[i*2] = (unsigned char)(temp1[i]%256); databuf[i*2+1] = (unsigned char)(temp1[i]/256); } CRC16 = CRC_CHECK(databuf,8); databuf[8] = CRC16%256; databuf[9] = CRC16/256; for(i=0;i<10;i++) sendByte(databuf[i]); } 9主函数 #include \"Include.h\" int num = 0; extern AD_result1[SENSOR_NUM]; void main(void) { DisableInterrupts; ALL_Init(); EnableInterrupts; PITCE_PCE0 = 1; for (; ;) //if you want to use the oscillation ,You must change the type of data into float. { getOrigSignal(); if (AD_result1[0] > LEVEL_MAX) { upAlarm(); } if (AD_result1[0] < LEVEL_MIN) { downAlarm(); } } } #pragma CODE_SEG NON_BANKED void interrupt 66 PIT0(void) //timer time 5ms once { DisableInterrupts; PITTF_PTF0 = 1; num++; 1 controlOut(); //输出调试信息 100ms 调用一次 if (20 == num) { num = 0; OutPut_Data(); } EnableInterrupts; } #pragma CODE_SEG DEFAULT 第四章 收获、体会和建议 经过将近两个星期的课程设计报告的编写,我又重新复习了一遍过程控制仪表理论知识,并根据理论知识,结合火力发电厂锅炉液位控制系统的实际,去图书馆翻阅与上网查找大量的资料,从控制系统的最底层的硬件电路设计,器件的选型,包括控制器,变送器,控制阀的选择,到整个系统的软件设计,从系统的抗干扰性能以及可靠性做了大量的研究,使我加深了对过程控制系统的认识,增强自主设计控制系统,选择元器件的能力。在这个过程中,我了解并逐渐学会了如何根据具体的控制变量选择合适变送器,如何根据具体的被控对象选择执行器和调节阀,并认识了在过程控制系统中常用器件的选择。同时在软件设计中,通过运用计算机控制技术中学到控制方面的知识,结合自己在做智能小车和微控制技术中的学到的知识设计了软件系统,在这个过程中,对于增量运算,位置输出形式的PID控制有了更直观的认识,同时也认识了反馈控制与前馈控制以及串级控制各自的特点与优缺点,使自己对控制理论有了一个更深入的理解。 在实际的实验调试过程中,我调试了液位单回路一阶控制系统,二阶控制系统,串级控制系统。通过这些系统的调试,我所获不仅是对控制理论的认识,而且也体会了在实际工程中调试系统参数的过程。在调节单回路控制系统时,根据课本上介绍的调节PID参数的过程,我先将I 与D参数设置为0,然后来调节P参数,本来可以预期得到书本中的现象,但在实际的调试过程中,我发现并不是我想象的那样,实际的物理效果跟书本中的不是一回事,按照书本中那样在只调节P参数时候会出现有超调,并且响应时间较快的现象,我根本没有看到。尽管后来调试出了一点效果,但是却是费了很大周折的。在老师的指导下,我才发现实际中单独用一个比例根本不可能出现书中描述的效果,而是要增加一个I才有那种效果。而且在实际的工业现场,我们使用的一般是PI调节,而不是PID调节器,主要就是因为引入D控制后,系统抗干扰能力下降,而在现场是存在大量的干扰的。通过这样一个简单的举例,我想说明通过实际的调试,我加深了对书本与实际的区别,在我们的学习中,应该将实际与理论结合起来,理论是与实际有一定的差距。这是我学到的最有价值的知识。 在我设计这个控制系统中,由于时间的限制和个人知识的局限,在硬件上虽然可以设计出PCB板,但是对系统硬件电路抗干扰能力上还要进一步设计。同时在软件上面没有考虑到抗干扰。同时在实际中当水位超出一定范围实现手动操作时,对控制系统的手动操作没有一个足够好的设计。这是整个控制系统应该 1 改进的地方。同时在整个课程设计中,由于却小了实际的对设计内容的调试,因此对自己设计的系统没有一个充分的验证,这样就没法找出自己错误的地方,这是这个课程设计最大的缺陷。建议在后面的课程设计中最好根据实际的仪器设计一块控制板然后放到我们的实验室中来对仪器进行控制观察实际的效果,这样不但能加强自己的设计能力,同时也掌握了设计系统的能力。 参考文献 [1] 刘乐善.微机原理接口技术及应用.武汉:华中科技出版社,2004.7 [2] 于海生.微型计算机控制技术 北京:清华大学出版社,1999. [3] 向婉成 控制仪表与装置 北京:机械工业出版社. 1999.10 [4] 凌玉华.单片机原理及应用系统设计.长沙:中南大学出版社,2006年; [5] 过程控制仪表实验指导书.中南大学教材科.2008年 [6]飞思卡尔公司. MC9S12XS128数据手册. 2010.11 1 因篇幅问题不能全部显示,请点此查看更多更全内容