实验   计算机控制综合应用实验之二 

电热箱闭环控制实验

 

  实验目的:

1.了解温度闭环控制方法

2.了解 PID 控制的规律及算法

3.了解计算机应用的闭环系统结构

 

二 实验设备

   TDN86+  教学实验系统

   电热烤箱

 

三 实验原理

  1.实验原理及接线

 

 

 

  2.实验连线图

   系统的 8255 B PB0输出 PWM 脉冲信号为控制量,经驱动电路控制固态继电器的吸合以达到给烤箱升温的效果。温度测量使用了 10K 热敏电阻,经 AD 转换构成反馈量,在参数给定的情况下,经 PID 运算产生相应的PWM脉冲控制量,使烤箱温度升温并稳定在给定值。OPCLK 1.193 MHz 时钟信号,经 8253 2 号通道分频输出 10 ms 的方波,一方面作为 AD 的定时启动信号,另一方面接入 8259 IRQ6 产生中断,作为系统采样时钟。

 

烤箱温度控制范围在室温~ 250℃,不要过高,即设定 SPEC 范围在 14H(20) FAH (250 )之间,参考程序中设定温度为100 SPEC = 64H)。采样参数为 100,即TS设为 64H,由于 8253 OUT2 IRQ6 中断为 10 ms,故采样周期为1 64 H* 10 = 1s)。 温度控制响应时间较长,一般一屏不能完全观测到整个响应过程,这样就需要更新显示,每增加屏,实际控制时间要累加前面的。

 

 

 

3参考程序(提供的参考程序略有不足,可参考实验九的参考程序注释)(A20-2.ASM)

 

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 ?

AAAH       DB ?

VAA       DB ?

BBBL       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     AAAH,   AL

           JMP       COU

IS0:        MOV     AL,00H

           MOV     AAAH,AL       

COU:      MOV     AL,7FH

           SUB      AL,AAAH

           MOV     BBBL,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     BBBL,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     AAAH,7FH

           MOV     VAA,7FH

           MOV     TC,00H

           MOV     AL,80H                ;Initiate 8255-B(out)

           OUT      63H,AL

           OUT      1FH,AL         ; START ADC0809    

           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    DALLY

           OUT      0C1H,AL

           CALL    DALLY

           OUT      0C1H,AL

           CALL    DALLY

           OUT      0C0H,AL

           CALL    DALLY

           OUT      0C0H,AL

           CALL    DALLY

           MOV     AL,40H

           OUT      0C1H,AL

           CALL    DALLY

           MOV     AL,7EH        

           OUT      0C1H,AL       

           CALL    DALLY

           MOV     AL,34H        

           OUT      0C1H,AL

           CALL    DALLY

           IN AL,21H        

                 OR        AL,01H

                 OUT      21H,AL

                 RET

 

DALLY:   NOP

           PUSH    CX

           MOV     CX,3000H

B2:        PUSH    AX

           POP      AX

           LOOP    B2

           POP      CX

           RET

 

IRQ7:       NOP

            PUSH    AX

            IN   AL,1FH         ;READ ADC0809

            MOV   ADVALUE,AL

            MOV     ADMARK,01H 

            MOV     AL,20H          ;Close IRQ7

            OUT      20H,AL

            POP      AX

            IRET

 

 

IRQ6:       NOP

            PUSH    AX

            OUT      1FH,AL

            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,BBBL

            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,AAAH

            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

四 实验步骤

1. 按图接线,电热烤箱接在220V上,插好温度计

2. 装入参考程序,运行程序

3. 设定参数,注意:参考程序的头两条语句是 MOV AX,DATA MOV DS,AX ,可以获知DS的确切值,根据参数的设置位置,可对参数进行设定和修改。

需要设定的参数值有:

l        烤箱期望达到的温度 SPEC

l        PID算法中积分分离值积分分离值 IBAND

l        PID算法中比例项系数 KPP

l        PID算法中积分项系数值 KII

l        PID算法中微分项系数值 KDD

 

4. 打开示波器窗口,观察温度变化

5. 修改PID参数,观察实验结果

 

项目                       参数

IBAND

KPP

KII

KDD

超调

稳定<2%时间

参考程序中参数及响应特性

0060H

1F60H

0010H

0020H

10%

10分钟

去掉 IBAND

0000H

1060H

0010H

0020H

 

 

自测一组较好参数

 

 

 

 

 

 

 

五 参考程序参数表

 

符号

单位

取值范围

名称及作用

TS

10mS

00H~FFH

采用周期,决定每采集一次数据的时间

SPEC

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

N/s

0000H~0042H

反馈:通过热敏电阻反馈算出的电烤箱的温度值

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)

AER_1

 

0000H~FFFFH

ΔE(K) = E(K) – E(K-1)

BEK

 

0000H~FFFFH

ΔΔE(K) = ΔE(K) –ΔE(K-1)

AAAH

 

00H~FFH

用于PWM 脉冲高电平时间计算

VAA

 

00H~FFH

AAAH变量

BBBL

 

00H~FFH

用于PWM 脉冲低电平时间计算

VBB

 

00H~FFH

BBBL变量

MARK

 

00H~01H

 

R0~R8

 

 

PID 计算用变量

 

六 技术支持: