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

       --直流电机闭环调速实验

  实验目的:

1.了解直流电机闭环调速方法

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

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

 

二 实验设备

   TDN86+  教学实验系统

   直流电机(在 TDN86实验系统上)

 

三 实验原理

  1.实验原理及接线

  

            实验原理图

  

   2. 实验连线图

 

 

3.实验原理

    系统采用PWM控制电机转速,控制信号由 8255 PB0 提供,该信号经驱动电路驱动电机运转。霍尔测速元件输出的脉冲信号记录电机转速构成反馈量,在参数给定情况下,经 PID 运算,决定电机控制的PWM参数,电机可在控制量作用下,按给定转速闭环运转。其中 OPCLK1.193MHz 时钟信号,经 8253 2 号通道分频输出 1 ms 的方波,接入 8259 产生 IRQ6 中断,作为系统采样时钟;PB0 产生 PWM 脉冲控制信号,8259 IRQ7 接收霍尔测速元件输出的脉冲并产生中断用于测量电机转速。

 

   4. 参考程序

   STACK   SEGMENT   STACK

                DW       64 DUP(?)

TOP     LABEL WORD

STACK ENDS

 

DATA  SEGMENT                         ;数据段中具体参数定义见表

TS      DB               14H

SPEC    DW       0030H

IBAND DW       0060H

KPP      DW       1060H

KII      DW       0010H

KDD   DW       0020H

CH1      DB               ?

CH2    DB               ?

YK     DW       0

CK               DB               0

VADD  DW       0

ZV     DB               0

ZVV     DB               0

TC            DB               0

FPWM DB               01H

CK_1          DB               0

EK_1   DW              0

AEK_1 DW       0

BEK    DW       0

AAAH  DB 7FH

VAA    DB        7FH

BBBL   DB               0

VBB    DB               0

MARK  DB               0

R0     DW       0

R1     DW       0

R2     DW       0

R3     DW       0

R4     DW       0

R5     DW       0

R6     DW       0

R7     DB               0

R8     DW       0

DATA   ENDS

 

CODE   SEGMENT

                 ASSUME  CS:CODE, DS:DATA

START: MOV    AX,        DATA  ; 观察DATA的具体值,了解段寄存器中值

               MOV     DS,        AX     ; 以便对参数进行修改

MAIN:  CALL     SYSTEM                ; 初始化系统

      CALL  INIT                       ; 初始化变量

               STI                                    ; 开中断

M1:    MOV     AL,        TS      ; 采样周期是否到

               SUB      AL,        TC

               JNC       M1                       ; 没有到采样时间,继续循环等待

               MOV     TC,        00H     ; 将采用计数值置 0 ;变量TC 在通过IRQ6中断

                                                               ; 服务程序中修改

               MOV     AL,        ZVV       ; 计算反馈量 Yk

               MOV     AH,        00H   

               MOV     YK,        AX     ; 获得电机转速的反馈值

               CALL    PID             ; 调用PID算法,获得控制量 CK

               MOV     AL,        CK     ;  根据控制量产生 PWM 脉冲

               SUB      AL,        80H   

               JC         IS0

               MOV     AAAH,   AL

               JMP       COU

IS0:    MOV     AL,        10H

               MOV     AAAH,   AL  

COU:    MOV     AL,        7FH

               SUB      AL,        AAAH

               MOV     BBBL,    AL

        MOV     AX,        SPEC   ; 将给定值(SPEC)送入 CH1

               MOV     CH1,      AL

               MOV     AX,        YK     ; 将反馈值(YK  送入 CH2

        MOV     CH2,      AL

               CALL    PUT_COM      ; 显示波形

               JMP       M1

 

PUT_COM        PROC                  ;  PUT_COM 子程序为发送显示子程序

                                                     ;  可将 CH1CH2 单元中的内容在WMD86

                                ;  集成环境的示波器窗口显示

        PUSH   AX

        PUSH   DX

                                                        ;  0C0H  系统用 8251 数据口

                                                        ;  0C1H  系统用 8251 控制口

               MOV     AL,        31H    ;  00110001b

                    MOV   DX,    0C1H   ; 

                 OUT    DX,           AL

               MOV   AL,         CH1    ;  送出 CH1 中的值

            MOV    DX,    0C0H  

            OUT    DX,          AL

WAIT1: MOV   DX,    0C1H

IN     AL,     DX

               TEST     AL,        01H

               JZ          WAIT1

 

                     MOV      AL,        CH2    ;  送出 CH2 中的值

                     MOV   DX,     0C0H

               OUT      DX,        AL

WAIT2: MOV    DX,    0C1H

IN          AL,        DX

               TEST     AL,        01H

               JZ     WAIT2

 

               MOV     AL,        34H    ;  00110100b

            MOV          DX,       0C1H

               OUT      DX,        AL

                     POP    DX

                     POP    AX

               RET

PUT_COM          ENDP

 

INIT    PROC

                   NOP

                     CLI

               PUSH    DS

                     XOR      AX,        AX

                     MOV     DS,        AX                ;  中断转移表段值 0000

           MOV     SI,          0038H       ; IRQ6 INT   0EH

                     MOV     AX,        OFFSET  IRQ6 ; 8259 IRQ6(T0:1ms)

              MOV     [SI],       AX

               MOV     AX,        SEG  IRQ6  ; 

               MOV     [SI+2],    AX                ;  IRQ6 服务程序的段值

                   

 

MOV     SI,          003CH           ;  IRQ7    INT 0FH

                     MOV     AX,        OFFSET IRQ7;  8259 IRQ7 (INT0:HR-OUT,COUNT-VVV)

               MOV     [SI],       AX

                     MOV   AX,        SEG    IRQ7

               MOV     [SI+2],    AX

               POP      DS

 

               IN         AL,        21H

        AND     AL,        3FH        ;allow  IRQ6,IRQ7

               OUT     21H,              AL

 

        MOV     AL,        80H        ; 10000000B  B 口输出 Initiate 8255-B

              MOV   DX,     63H                     ; 8255 控制口 63H

        OUT     DX,        AL

        MOV     AL,        00H

              MOV   DX,    61H               ; 8255   B   61H

        OUT     DX,        AL

 

        MOV     AL,        0B6H        ; 10110110B  8253-OUT2

              MOV   DX,     43H         ; 8253  控制口 43H

        OUT     DX,        AL

              MOV   AX,     1193        ; 时间常数 1193   产生 1ms 方波

        MOV     DX,        42H        ;  8253 通道2 42H

        OUT     DX,        AL         ;  送时间常数低八位

        MOV     AL,        AH

        OUT     DX,        AL               ; 送时间常数高八位

        RET

INIT    ENDP

 

SYSTEM      PROC

MOV     AL,        76H ;    01110110B  8253 通道1 设置

                     MOV   DX,    43H ;  8253 控制口 43H

        OUT     DX,        AL  

               MOV     AL,        0CH  ; 时间常数 000CH

            MOV    DX,    41H

               OUT      DX,        AL

        MOV     AL,        00H

               OUT     DX,        AL

 

        MOV     AL,        00H      ; 系统用 8251 控制口:0C1H

               OUT     0C1H,    AL       ; 连续送四个 00H ,是 8251 编程约定

        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    ;  01111110B 

               OUT     0C1H,    AL    

               CALL    DALLY

        MOV     AL,        34H   

               OUT      0C1H,    AL

               CALL   DALLY

 

                     IN         AL,        21H    ; 8259 状态口 21H

               OR               AL,        01H

        OUT      21H,              AL     ;

                     RET

SYSTEM      ENDP

 

DALLY       PROC           ;  软件延时程序

     NOP

        PUSH   CX

              PUSH   AX

               MOV          CX,        3000H

B2:     INC    AX

               DEC    AX

               LOOP    B2

                     POP           AX

        POP      CX

               RET

     DALLY       ENDP

 

       IRQ7     PROC

NOP                     ; DS内容与主程序相同

       PUSH    AX

               PUSH    DX 

               MOV     AL,        MARK

               CMP      AL,        01H

               JZ          IN1              ; IRQ6中转速累计值,计算出电机转速

               MOV     MARK,  01H      ; 设定标志,每两次中断计算一次转速

                     JMP    FINIRQ7

 

IN1:    MOV     MARK,  00H     ; 设定标志信息,下次中断不进行转换

          MOV     DX,        0000H 

               MOV     AX,        1000    ;

               MOV     CX,        VADD   ; 记录的霍尔器件输出的脉冲信号个数

               CMP      CX,        0000H

               JZ         MM1

               DIV       CX

MM:   MOV     ZV,         AL     ;  AL 中是转速

               MOV     VADD,   0000H

    MM1:   MOV    AL,        ZV

                MOV     ZVV,      AL

 

    FINIRQ7:MOV    AL,        20H        ;Close IRQ7

            MOV   DX,     20H

                    OUT      DX,        AL

               POP      DX

               POP      AX

               IRET

     IRQ7  ENDP

 

IRQ6   PROC

NOP

    PUSH    AX

               INC       TC                ; TC 1 ,为采样周期计数

               CALL    KJ

               CLC

               CMP      MARK,  01H

               JC         TT1

               INC       VADD

               CMP      VADD,   0700H

               JC         TT1

               MOV     VADD,   0700H

               MOV     MARK,  00H

TT1:   NOP

               MOV     AL,        20H          ;Close IRQ6

               OUT      20H,              AL      

               POP      AX

               IRET

       IRQ6      ENDP

 

    KJ         PROC

                   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      

    KJ      ENDP

 

    PID    PROC

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

PID     ENDP

 

CODE  ENDS

                END      START

 

 

  

  实验步骤

1.按图连线。

2.编写、编译、链接和装入程序

3.在 Windows 菜单下,选择示波器功能,做电机调速控制控制实验,有关数值及显示值之间的换算方法如下:

速控实验中给定与反馈值都为单极性,屏幕最底端对应值为 FFH,对于时间刻度值由于采样周期不同存在以下关系:

 

    实际时间() (采样周期×实际刻度值)20

 

电机转速范围设定在 6转/秒~ 48转/秒之间,速度过低会受阻力影响较大而不稳定,当然也不能过高,电机也有速度限制,最大转速不超过 4000 转/分,即 67转/秒。这样给定值的 (SPEC) 范围约在 06H 30H 之间,参考程序中给定 SPEC   20H 32 转/秒。TS 14H,由于 8253 OUT2 IRQ6 中断为 1 ms,故采样周期 14H * l 0.02s ,如果实际刻度值 900,则实际响应时间() (0.02x 900)20 = 0.9s

观察电机转速及示波器上给定值与反馈值的波形,分析其响应特性,改变参数 IBANDKPPKIIKDD 的值后再观察其响应特性,选择一组较好的控制参数并填写下表:

 

 

项目                       参数

IBAND

KPP

KII

KDD

超调

稳定<2%时间

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

0060H

1060H

0010H

0020H

10%

10分钟

去掉 IBAND

0000H

1060H

0010H

0020H

 

 

自测一组较好参数

 

 

 

 

 

 

 

 

  参考程序中参数表、取值范围和作用

 

符号

单位

取值范围

名称及作用

TS

mS

00H~FFH

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

SPEC

N/s

06H~30H

给定:即要求电机达到的转速值,建议给定为20H

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 算法产生用于控制的量 

VADD

 

0000H~FFFFH

转速累加单元:记录霍尔输出脉冲用于转速计算

ZV

 

00H~FFH

转速计算变量

ZVV

 

00H~FFH

转速计算变量

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 计算用变量

 

  技术支持

     1.典型的控制系统分开环和闭环系统

     开环控制是无反馈控制方式。在开环控制系统中只存在控制器对被控对象的单方向控制作用,不存在被控制量(输出量)对控制量的反向作用。系统的控制效果取决于控制策略和组成系统的元器件的精度和特性调整的精确度。开环系统对外扰及内部参量变化的影响缺乏仰制能力。但开环系统结构简单,比较容易设成和调整。可用于输出量与输入量之间的关系是已知,内外扰动对系统影响不大并且控制精度要求不高的场合。

     闭环控制是一种反馈控制,在控制过程中对被控制量(输出量)不断测量,并将其反馈到输入端与给定(参考输入量)比较,利用放大后的偏差信号产生控制作用。因此,有可能利用相对精度不高、成本较低的元器件组成控制精度较高的控制系统,可能遇到的问题是,与开环比较,闭环的引入的信号有可能使系统出现强烈震荡,甚至不稳定,这是采用闭环控制系统需注意和解决的问题。 

 

   2.  PID控制

    比例微分积分控制

   比例环节

     比例环节又称放大环节,其输出量与输入量之间的关系为一种固定的比例关系。

  

  

   3.PWM: 脉宽调速    

在一个开关周期内 T 内,设定t on,在 0t t on 时刻导通,有电流通过电机,在

t on t T 时刻断开,无电流通过电机,这样占空比ρ

   ρ ton / T ;

   Ud =ρUs  Ud:电机两端平均电压,Us:外接驱动电压

  改变ρ即改变占空比,可以改变控制电压的脉冲宽度,达到在电动机两端获得不同大小的平均电压Ud,从而达到调速的目的,这种调速方法就叫做脉宽调速(PWM)

  

   4. 霍尔测速元件

霍尔传感器是利用霍尔效应制成的测量转速传感器。所谓霍尔效应是在置于磁场中的导体或半导体通入电流,若电流垂直磁场,则在与磁场和电流都垂直的力向上会出现一个电势差的现象。利用霍尔效应组成的元件称为霍尔元件。

       转速测量原理 在非磁材料的园盘边缘上粘贴一块磁铁,将圆盘固定在被测电机转轴上。霍尔传感器固定在圆盘外缘附近,圆盘每旋转一周,霍尔传感器便输出一个脉冲,通过测量这些脉冲,便可知道转速。