资源描述
电烤箱闭环控制实验
一、 实验目的
1.了解PID控制器控制电烤箱的方法;
2.掌握数字PID算法及实现方法。
二、原理
TDN-AC/ACS
系统
驱动电路单元
电 路
烤箱
测温电路
给定量
温度
图8-15 电烤箱闭环控制实验原理图
电烤箱闭环控制实验原理图如图7-23所示。控制器、D/A、A/D由TDN-AC/ACS系统的相应单元完成。
三、接线图
电烤箱闭环控制实验接线图GATE2
IRQ6 PB10
OUT2
OPCLK
CLK2
IRQ7
PA0
V
PA7
8088 CPU
1 CLOCK
IN0 EOC
A D0
B V
C D7
U12 A/DC
+5V
A +12V
A1
U17 DRIVER
1+ 电烤箱
2- 固态继
电 器
电烤箱
AD
+5
500W
TDN-ACS系统
热敏电阻
10K
图7-23 电烤箱闭环控制实验接线图
如图8-16所示,具体工作说明如下:
1.控制量:TDN-ACS系统的8255PB10口输出的PWM脉冲信号为控制量,经驱动电路驱动烤箱上加热用固态继电器的吸合。
2.测温系统:温度测量使用了10K的热敏电阻,经A/D转换后构成反馈量。
3.控制器:由8088CPU组成。在8088CPU中控制偏差经PID运算产生相应控制量,使烤箱稳定在给定值。
4.8253的2号通道输出10ms方波的作用:
① 定时启动A/D转换器;
② 介入8259产生IRQ6中断,作为系统采样时钟。
四、实验内容
1.按图8-14接线;
2.将程序装入并调试;
3.调整PID参数找出合适的参数并纪录在表8-6。
表8-6 实验数据记录表
IBAND
KPP
KII
KDD
MP
TS
1.例程中参数响应特征
0060H
1060H
0010H
0020H
10%
10min
2.去掉IBAND
0000H
1060H
0010H
0020H
3.自测一组较好参数
五、程序清单
STACK SEGMENT STACK
DW 256 DUP(?)
TOP LABEL WORD
STACK ENDS
DATA SEGMENT
TS DB 64H
SPEC DW 0064H
IBAND DW 0060H
KPP DW 1F60H
KII DW 0010H
KDD DW 0020H
CH1 DB ?
CH2 DB ?
YK DW ?
CK DB ?
TC DB ?
TKMARK DB ?
ADMARK DB ?
ADVALUE DB ?
FPWM DB ?
CK_1 DB ?
EK_1 DW ?
AEK_1 DW ?
BEK DW ?
AAA DB ?
VAA DB ?
BBB DB ?
VBB DB ?
R0 DW ?
R1 DW ?
R2 DW ?
R3 DW ?
R4 DW ?
R5 DW ?
R6 DW ?
R7 DB ?
R8 DW ?
TABLE DB 14H,14H,14H,14H,14H,14H,14H,14H,14H,14H,15H,16H,17H,18H
DB 19H,1AH
DB 1BH,1CH,1DH,1EH,1EH,1FH,20H,21H,23H,24H,25H,26H,27H,28H,29H,2AH
DB 2BH,2CH,2DH,2EH,2FH,31H,32H,32H,33H,34H,35H,36H,37H,38H,39H,3AH
DB 3BH,3CH,3DH,3EH,3FH,40H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH
DB 4CH,4DH,4EH,4FH,50H,4FH,50H,51H,52H,53H,54H,55H,56H,57H,58H,59H
DB 5AH,5BH,5CH,5DH,5EH,5FH,60H,61H,62H,63H,64H,64H,65H,65H,66H,66H
DB 67H,68H,69H,6AH,6BH,6CH,6DH,6EH,6EH,6FH,6FH,70H,71H,72H,73H,74H
DB 75H,76H,77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,80H,81H,82H,83H,84H
DB 84H,85H,86H,87H,88H,89H,8AH,8BH,8CH,8EH,8FH,90H,91H,92H,93H,94H
DB 95H,96H,97H,98H,99H,9AH,9BH,9BH,9CH,9CH,9DH,9DH,9EH,9EH,9FH,9FH
DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H,0A8H,0A9H,0AAH,0ABH,0ACH
DB 0ADH,0AEH,0AFH
DB 0B0H,0B0H,0B1H,0B2H,0B3H,0B4H,0B4H,0B5H,0B6H,0B7H,0B8H,0B9H,0BAH
DB 0BBH,0BDH,0BEH
DB 0BEH,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C8H,0CAH,0CCH,0CEH,0CFH,0D0H
DB 0D1H,0D2H,0D4H
DB 0D5H,0D6H,0D7H,0D8H,0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0E3H,0E6H,0E9H
DB 0ECH,0F0H,0F2H
DB 0F6H,0FAH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MAIN: CALL SYSTEM ;Initiate System
CALL INIT ;Initiate
STI
M1: CMP TKMARK,01H ;Judge Ts=Tc ?
JNZ M1
MOV TKMARK,00H
M2: CMP ADMARK,01H
JNZ M2
MOV ADMARK,00H
MOV AX,0000H
MOV AL,ADVALUE
MOV BX,OFFSET TABLE
ADD BX,AX
MOV AL,[BX]
MOV YK,AX
CALL PID ;Count Ck
MOV AL,CK ;Translate Ck into PWM
SUB AL,80H
JC IS0
MOV AAA,AL
JMP COU
IS0: MOV AL,00H
MOV AAA,AL
COU: MOV AL,7FH
SUB AL,AAA
MOV BBB,AL
MOV AX,SPEC ;SPEC to CH1
MOV CH1,AL
MOV AX,YK ;YK to CH2
MOV CH2,AL
CALL PUT_COM ;Display Wave
JMP M1
PUT_COM:
MOV AL,31H
OUT 0C1H,AL
MOV AL,CH1
OUT 0C0H,AL
WAIT1: IN AL,0C1H
TEST AL,01H
JZ WAIT1
MOV AL,CH2
OUT 0C0H,AL
WAIT2: IN AL,0C1H
TEST AL,01H
JZ WAIT2
MOV AL,34H
OUT 0C1H,AL
RET
INIT: NOP
PUSH DS
XOR AX,AX
MOV DS,AX
MOV AX,OFFSET IRQ6 ;8259 IRQ6(T0:10ms)
ADD AX,2000H ;LOAD IP adress=2000H
MOV SI,0038H
MOV [SI],AX
MOV AX,0000H
MOV SI,003AH
MOV [SI],AX
MOV AX,OFFSET IRQ7 ;8259 IRQ7(INT0:Get ADvalue)
ADD AX,2000H ;LOAD IP adress=2000H
MOV SI,003CH
MOV [SI],AX
MOV AX,0000H
MOV SI,003EH
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,3FH ;allow IRQ6,IRQ7
OUT 21H,AL
MOV CK,00H
MOV YK,0000H
MOV CK_1,00H
MOV EK_1,0000H
MOV AEK_1,0000H
MOV BEK,0000H
MOV BBB,00H
MOV VBB,00H
MOV R0,0000H
MOV R1,0000H
MOV R2,0000H
MOV R3,0000H
MOV R4,0000H
MOV R5,0000H
MOV R6,0000H
MOV R7,00H
MOV R8,0000H
MOV TKMARK,00H
MOV FPWM,01H
MOV ADMARK,00H
MOV ADVALUE,00H
MOV AAA,7FH
MOV VAA,7FH
MOV TC,00H
MOV AL,90H ;Initiate 8255-B(out) A(IN)
OUT 63H,AL
MOV AL,00H
OUT 61H,AL
MOV AL,0B6H ;8253-OUT2
OUT 43H,AL
MOV AL,69H ;10ms
OUT 42H,AL
MOV AL,2DH
OUT 42H,AL
RET
SYSTEM: MOV AL,76H
OUT 43H,AL
MOV AL,0CH
OUT 41H,AL
MOV AL,00H
OUT 41H,AL
MOV AL,00H
OUT 0C1H,AL
CALL DLY1
OUT 0C1H,AL
CALL DLY1
OUT 0C1H,AL
CALL DLY1
OUT 0C0H,AL
CALL DLY1
OUT 0C0H,AL
CALL DLY1
MOV AL,40H
OUT 0C1H,AL
CALL DLY1
MOV AL,7EH
OUT 0C1H,AL
CALL DLY1
MOV AL,34H
OUT 0C1H,AL
CALL DLY1
IN AL,21H
OR AL,01H
OUT 21H,AL
RET
DLY1: NOP
PUSH CX
MOV CX,3000H
B2: PUSH AX
POP AX
LOOP B2
POP CX
RET
IRQ7: NOP
PUSH AX
IN AL,60H
MOV ADVALUE,AL
MOV ADMARK,01H
MOV AL,20H ;Close IRQ7
OUT 20H,AL
POP AX
IRET
IRQ6: NOP
PUSH AX
MOV AL,TC
CMP AL,TS
JNC TT2
INC TC
TT1: CALL KJ
MOV AL,20H ;Close IRQ6
OUT 20H,AL
POP AX
IRET
TT2: MOV TKMARK,01H
MOV TC,00H
JMP TT1
KJ: NOP
PUSH AX
CMP FPWM,01H
JNZ TEST2
CMP VAA,00H
JNZ ANOT0
MOV FPWM,02H
MOV AL,BBB
CLC
RCR AL,01H
MOV VBB,AL
JMP TEST2
ANOT0: DEC VAA
MOV AL,01H
OUT 61H,AL
TEST2: CMP FPWM,02H
JNZ OUTT
CMP VBB,00H
JNZ BNOT0
MOV FPWM,01H
MOV AL,AAA
CLC
RCR AL,01H
MOV VAA,AL
JMP OUTT
BNOT0: DEC VBB
MOV AL,00H
OUT 61H,AL
OUTT: POP AX
RET
PID: MOV AX,SPEC
SUB AX,YK
MOV R0,AX
MOV R1,AX
SUB AX,EK_1
MOV R2,AX
SUB AX,AEK_1
MOV BEK,AX
MOV R8,AX
MOV AX,R1
MOV EK_1,AX
MOV AX,R2
MOV AEK_1,AX
TEST R1,8000H
JZ EK1
NEG R1
EK1: MOV AX,R1
SUB AX,IBAND
JC II
MOV R3,00H
JMP DDD
II: MOV AL,TS
MOV AH,00H
MOV CX,R1
MUL CX
MOV CX,KII
DIV CX
MOV R3,AX
TEST R0,8000H
JZ DDD
NEG R3
DDD: TEST BEK,8000H
JZ DDD1
NEG BEK
DDD1: MOV AX,BEK
MOV CX,KDD
MUL CX
PUSH AX
PUSH DX
MOV AL,TS
MOV AH,00H
MOV CX,0008H
MUL CX
MOV CX,AX
POP DX
POP AX
DIV CX
MOV R4,AX
TEST R8,8000H
JZ DD1
NEG R4
DD1: MOV AX,R3
ADD AX,R4
MOV R5,AX
JO L9
L2: MOV AX,R5
ADD AX,R2
MOV R6,AX
JO L3
L5: MOV AX,R6
MOV CX,KPP
IMUL CX
MOV CX,1000H
IDIV CX
MOV CX,AX
RCL AH,01H
PUSHF
RCR AL,01H
POPF
JC LLL1
CMP CH,00H
JZ LLL2
MOV AL,7FH
JMP LLL2
LLL1: CMP CH,0FFH
JZ LLL2
MOV AL,80H
LLL2: MOV R7,AL
ADD AL,CK_1
JO L8
L18: MOV CK_1,AL
ADD AL,80H
MOV CK,AL
RET
L8: TEST R7,80H
JNZ L17
MOV AL,7FH
JMP L18
L17: MOV AL,80H
JMP L18
L9: TEST R3,8000H
JNZ L1
MOV R5,7FFFH
JMP L2
L1: MOV R5,8000H
JMP L2
L3: TEST R2,8000H
JNZ L4
MOV R6,7FFFH
JMP L5
L4: MOV R6,8000H
JMP L5
CODE ENDS
END START
六、实验程序参数说明
符号
单位
取值范围
名 称 及 作 用
TS
10ms
00H-FFH
采样周期:决定数据采集处理快慢程度
SPEC
°C
14H-FAH
给定:即要求烤箱达到的温度值
IBAND
0000H-007FH
积分分离值:PID算法中积分分离值
KPP
0000H-1FFFH
比例系数:PID算法中比例项系数值
KII
0000H-1FFFH
积分系数:PID算法中积分项系数值
KDD
0000H-1FFFH
微分系数:PID算法中微分项系数值
CH1
00H-FFH
通道1值:在示波器功能中所显示值需放入此单元中然后再调用PUT_COM发送子程序
CH2
00H-FFH
通道2值:(同上)
YK
°C
0014H-00FAH
反馈:通过热敏电阻反馈算出的烤箱温度反馈值
CK
00H-FFH
控制量:PID算法产生用于控制的量
TKMARK
00H-01H
采样标志位
ADMARK
00H-01H
A/D转换结束标志位
ADVALUE
00H-FFH
A/D转换结果寄存单元
TC
00H-FFH
采样周期变量
FPWM
00H-01H
PWM脉冲中间标志位
CK_1
00H-FFH
控制量变量:纪录上次控制量值
EK_1
0000H-FFFFH
PID偏量:E(K)=SPEC(K)-YK(K)
AEK_1
0000H-FFFFH
DE(K)=E(K)-E(K-1)
BEK
0000H-FFFFH
D2E(K)=DE(K)-DE(K-1)
AAA
00H-FFH
用于PWM脉冲高电平时间计算
VAA
00H-FFH
AAA变量
BBB
00H-FFH
用于PWM脉低冲电平时间计算
VBB
00H-FFH
BBB变量
R0-R8
PID计算用变量
展开阅读全文