图4.1系统主程序
控制系统的软件主要包括:采样、标度变换、控制计算、控制输出、中断、显示、报警、调节参数修改、温度设定及修改。其中控制算法采用数字PID调节,应用增量型控制算法,并对积分项和微分项进行改进,以达到更好的控制效果。
考虑到电加热炉是一个非线性、时变和分布参数系统,所以本文采用一种新型的智能控制算法。它充分吸取数学和自动控制理论成果,与定性知识相结合,做到取长补短,在实时控制中取得较好的成果。
控制输出 求出输出控制量 计算温差e(k)和温差变化率 e(k)?0? 开始 系统的初始化 温度数据采集及处理 温度值显示 N Y 智能控制算法程序 结束
4.2 A/D 转换器程序流程图
图4.2 AD转换程序流程图
PSW出栈并返回 输出控制量 N 溢出标志TF1是否为零 -20%<结果<20% 设定值与AD结果比较 结果=0 置位状态位F0 结果>or<设定关闭报警 F0是否等于零 值的20% F0=0 报警子程序 F0=0 调PID控制算法程序 N 交流电是否过零 Y 启动定时器T1 Y 4.3 LED显示模块程序流程图
8段LED显示屏是最常用的显示器件,分为共阳极和共阴极两种形式。共阳极LED将所有发光二极管的阳极接在一起作为公共端,当公共端接高电平,某一段的发光二极管阴极接低电平时,相应的字段就被点亮。共阴极LED将所有发光二极管的阴极接在一起作为公共端,当公共端接低电平,某一段的发光二极管阳极接高电平时,相应的字段就被点亮。
LED数码管的显示方法
动态显示:动态扫描,分时循环; 静态显示:一次输出,结果保持 (1)动态显示
动态显示,就是微型机定时地对显示器件扫描,在这种方法中,显示器件分时工作,每次只能一个器件显示。但由于人视觉的暂留现象,所以,仍感觉所有的器件都在显示。
(2)静态显示
静态显示,是由微型机一次输出显示后,就能保持该显示结果,直到下次送新的显示模型为止。这种显示占用机时少,显示可靠。
通过比较及对程序的分析,本设计当中两组数码管均采用了共阴极静态显示。
子程序返回 译码选择显示位 送入8255PA口 将数据转换为七段码 开始 图4.3 显示子程序
4.4报警模块程序设计
根据设计要求,在保温阶段,温度控制精度为正负1度,故当温度下降或上升2度时为故障状态,需要报警提醒。所以在电路设计上应用了蜂鸣器和发光二极管,系统正常运行时
绿色发光二极管点亮,当出现故障时红色发光二极管点亮并且蜂鸣器鸣叫,提醒操作人员注意。报警状态可通过按键复位和系统恢复正常后自动复位。
开始
置报警位P3.4
清除报警状态位F0
子程序返回 图4.4 报警子程序
4.5 键盘模块程序设计
在本次设计当中,输入设备采用4*4矩阵键盘。当“设定”键按下时触发键盘中断服务程序,由程序程控扫描法确定那个键按下并执行相应的动作。程控扫描的任务是:
(1)首先判断是否有键按下。方法:使所有的行输出均为低电平,然后从端口A读入列值。如果没有键按下,则读人值为FFH.如果有链按下.则不为FFH。
(2)去除键抖动。方法:延时10—20 ms,再一次判断有无键按下,如果此时仍有键按下,则认为键盘上确实有键处于稳定闭合期。
(3)若有键闭合,则求出闭合键的键值。方法:对键盘逐行扫描。 (4)程序中需等闭合键释放后才对其进行处理。
4.6 控制对象数学模型
在本控制对象电阻加热炉功率为800W,由220V交流电供电,采用双向可控硅进行控制。本设计针对一个温度区进行温度控制,要求控制温度范围50~350C,保温阶段温度控制精度为正负1度。选择合适的传感器,计算机输出信号经转换后通过双向可控硅控制器控制加热电阻两端的电压。其对象问温控数学模型为:
Kde??sG(s)?
Tds?1
其中:时间常数Td=350秒 放大系数Kd=50
滞后时间?=10秒 控制算法选用改PID控制。
由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此积分和微分项不能直接计算,只能用数值计算的方法逼近。在采样时刻t=iT(T为采样周期),可得PID调节公式:
Tui?K[ei?TiTdej??ei?ei?1?]?u0?Tj?0
i如果采样周期T取得足够小,这种逼近可相当准确,被控过程与连续控制过程十分接近,我们把这种情况称为“准连续控制”。
上式表示的控制算法提供了执行机构的位置ui,所以称为位置式PID控制算法。当执行机构需要的不是控制量的绝对数值,而是其增量时,由上式可导出提供增量的PID算法。
Tui?K[ei?TiTdej??ei?ei?1?]?u0?Tj?0
Tdej??ei?1?ei?2?]?u0?Tj?0iiTui?1?K[ei?1?Ti
只要将上述两个公式相减可得下面的公式:
??TdT?ui?ui?ui?1?K?ei?ei?1?ei??ei?2ei?1?ei?2??TiT??
上式称为增量式PID控制算法。也可进一步改写为:
?ui?d0ei?d1ei?1?d2ei?2其中:
?TTd?d0?K?1????TiT?
?2Td?d1??K?1??T??