是给定值;y(t)为被控变量;U(t)为调节器输出的控制信号;Kp为比例系数;Ti为积分时间常数;Td为微
分时间常数。计算机只能处理数字信号,若采样周期为T,第几次采样输入偏差为en,调节器输出为Un,PID算法中的微分
推形式:
改写成:
由于电阻炉一般都属于一阶对象和带纯滞后的一阶对象,所以式中KP、KI、KD的选择取决于电阻炉的阶跃响应特性和实际经验,在程序中假设都为正小数,参与运算的数都变为计算机易于处理的形式,数据处理方法如下:
(1) 把所有的数都变成定点纯小数进行处理
(2) 算式中的各项都有正负,用补码表示,计算结果以原码输出。
(3) 双精度运算,为了保证运算精度把单字节16位进行运算,最后结果取8位有效值输出。
第七章 系统程序设计
系统控制程序采用两次中断嵌套方式来设计,首先使T0计数器能产生与秒钟定时中断,作为本系统的采样周期,在中断服务程序中启动A/D读入采样数据,进行数据滤波、上下线报警处理、PID计算,然后输出控制脉冲信号,脉冲的宽度由T1计数器溢出中断决定。在等待T1中断时,将本次采样数值转换成对应的温度值放入显示缓冲区,然后用显示子程序,从T1中断返回后,再从 T0中断返回主程序并继续显示本次采样温度,等待下次T0中断。
7.1 系统控制主程序的设计
其中T1中断嵌套在T0中断之中,而T1的初值是由PID计算值决定的。所以PID的最大输出必须小于250,即保证在T0再次溢出中断之前,T1中断服务结束,并以T0中断返回到主程序,否则程序不能正常进行。
程序所点用8031内部数据存贮的单元如图:
图7.1 参数内部RAM分配图
图7.2 主程序流程图
主程序
MOV 81H, #50H;设堆栈
CLR 5EH ;清本次越限标志
CLR 5FH ;清上次
CLR A ;
MOV 2FH, A ;
MOV 30H, A ;
MOV 3BH, A ;
MOV 3CH, A ;清暂存单元
MOV 3DH, A ;
MOV 3EH, A ;
MOV 44H, A ;
MOV DISM0,A ;
MOV DISM1,A ;
MOV DISM2,A ;
MOV DISM3,A ;
MOV DISM4,A ;
MOV DISM5,A ;清显示缓冲
MOV TMOD,#56H;T0方式2:T1方式1计数
MOV TL0, #06H;
MOV TH0, #06H;TO赋值
CLR PT0 ;T0为低优先级中断
SETB TR0 ;启动T0
SETB ET0 ;允许T0中断
SETB EA ;CPU中断
LOOP: ACALL DISPLY ;调用显示程序
ACALL SCAN ;调用扫描程序
ATMP LOOP ;等待中断
7.2
T0中断服务程序:
PUSH A ;
PUSH DPL ;
PUSH DPH ;保护现场
SETB D5H ;置标志
ACALL SAMP ;调用采样子程序
ACALL FILTER ;调用数字滤波程序
CJNE A,42H,TPL;Ui(K)≠Umax则TPL
WL: MOV C,5EH ;
MOV 5FH,C ;交换标志
CLR 5EH ;清本次标志
ACALL UPL ;上限处理
POP DPH ;
POP DPL ;恢复现场
POP A ;
RETI ;中断返回
TPL: JNC TPL1 ;若Ui(K)>Vmax则TPL1
CLR 5FH ;清上次越限标志
CJNE A,43H,MTPL;Ui(K)≠Umin则MTPL
HAT:SETB P1.1 ;正常,绿
ACALL PID ;计算PID
MOV A,2FH ;PLD值→(A)
CPL A ;
INC A ;求TL1值
NM: SETB P1.3 ;输出控制脉冲
MOV TL1, A ;T1赋初值
MOV TH1,#OFFH ;
SETB PT1 ;T1高优先级中断³
SETB TR1 ;启动T1
SETB ET1 ;允许T1中断
ACALL TRAST ;标度转换
LOOP:ACALL DISPLY ;显示温度
JB D5H,LOOP;等待T1中断
POP A ;
POP DPH ;
POP DPL ;
RETI ;中断返回
MTPL:JNC HAT ;若Ui(k)>Umin则HAT
SETB P1.0 ;
MOV A,45H ;
CPL A ;
INC A ;
AJMP NM ;
TPL1:SETB 5EH ;置本次越限标志
JNB 5FH,WL ;若上次没越限则转
INC 44H ;越限计数器加1
MOV A,44H ;
CLR C ;
SUBB A, #N ;
JNZ WL ;越限次数不等于N转
SETB P1.2 ;上限报警,红灯亮
CLR 5EH ;
CLR 5FH ;清标志
POP A ;
POP DPH ;
POP DPL ;恢复现场
RETI ;从中断返回
T1中断服务程序(由001BH转来)
CLR D5H ;清标志
CLR P1.3 ;停止输出
RETI ;从中断返回
图7.3T1中断程序图
图7.4系统控制流程图
7.3 采样程序的设计
根据流程图写程序如下:
SMAP: MOV R0,#2CH ;采样值首址
MOV R1, #03H ;计数器赋值
SAM1: MOV DPTR,#03F8H ;
MOVX @DPTR, A ;启动ADC
MOV R2, #20H ;延时
DLY: DJNZ R2, DLY ;结束?
HERE:JB P3.3, HERE ;等待ADC结束
MOVX A, @DPTR ;
MOV @RO, A ;存放采样值
INC RO ;
DJNE R1 SAM1 ;
RET ;
7.4 数字滤波子程序设计
微机控制系统通常直接放在生产现场,会受到严重干扰,系统采用滤波方法来滤除干扰,数字滤波算法有很多,本系统采用中值滤波,就是连续三次取样,取中间值作为本次采样值。
三次采样值分别放于2CH,2DH,2EH中,取中间值放在累加器A中,同时也转放在2AH单元中,以备进行温度标度转换用。