实验九 计算机控制综合应用实验之一
--直流电机闭环调速实验
一 实验目的:
1.了解直流电机闭环调速方法
2.了解 PID 控制的规律及算法
3.了解计算机应用的闭环系统结构
二 实验设备
TDN86+ 教学实验系统
直流电机(在 TDN86实验系统上)
三 实验原理
1.实验原理及接线
实验原理图
2. 实验连线图
3.实验原理
系统采用PWM控制电机转速,控制信号由 8255 PB0 提供,该信号经驱动电路驱动电机运转。霍尔测速元件输出的脉冲信号记录电机转速构成反馈量,在参数给定情况下,经 PID 运算,决定电机控制的PWM参数,电机可在控制量作用下,按给定转速闭环运转。其中 OPCLK为1.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
JMP COU
IS0: MOV AL, 10H
MOV
COU: MOV
SUB AL, AAAH
MOV
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 子程序为发送显示子程序
; 可将 CH1和CH2 单元中的内容在WMD86
; 集成环境的示波器窗口显示
PUSH AX
PUSH DX
; 0C0H 系统用 8251 数据口
; 0C1H 系统用 8251 控制口
MOV AL, 31H ; 00110001b
MOV DX, 0C1H ;
OUT
MOV AL, CH1 ; 送出 CH1 中的值
MOV DX, 0C0H
OUT
WAIT1: MOV DX, 0C1H
IN AL, DX
TEST AL, 01H
JZ WAIT1
MOV AL, CH2 ; 送出 CH2 中的值
MOV DX, 0C0H
OUT
WAIT2: MOV DX, 0C1H
IN AL, DX
TEST AL, 01H
JZ WAIT2
MOV AL, 34H ; 00110100b
MOV DX, 0C1H
OUT
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
OUT 21H, AL
MOV AL, 80H ; 10000000B B 口输出 Initiate 8255-B
MOV DX, 63H ; 8255 控制口 63H
OUT
MOV AL, 00H
MOV DX, 61H ; 8255 B 口 61H
OUT
MOV
MOV DX, 43H ; 8253 控制口 43H
OUT
MOV AX, 1193 ; 时间常数 1193 产生 1ms 方波
MOV DX, 42H ; 8253 通道2 :42H
OUT DX, AL ; 送时间常数低八位
MOV
OUT DX, AL ; 送时间常数高八位
RET
INIT ENDP
SYSTEM PROC
MOV AL, 76H ; 01110110B 对 8253 通道1 设置
MOV DX, 43H ; 8253 控制口 43H
OUT
MOV AL, 0CH ; 时间常数 000CH
MOV DX, 41H
OUT
MOV AL, 00H
OUT
MOV AL, 00H ; 系统用 8251 控制口:0C1H
OUT 0C1H, AL ; 连续送四个 00H ,是 8251 编程约定
CALL DALLY
OUT 0C1H,
CALL DALLY
OUT 0C1H,
CALL DALLY
OUT 0C0H,
CALL DALLY
OUT 0C0H,
CALL DALLY
MOV AL, 40H
OUT 0C1H,
CALL DALLY ;
MOV
OUT 0C1H,
CALL DALLY
MOV AL, 34H
OUT 0C1H,
CALL DALLY
IN AL, 21H ; 8259 状态口 21H
OR AL, 01H
OUT
RET
SYSTEM ENDP
DALLY PROC ; 软件延时程序
NOP
PUSH CX
PUSH AX
MOV CX, 3000H
B2: INC AX
DEC AX
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
FINIRQ7:MOV AL, 20H ;Close IRQ7
MOV DX, 20H
OUT
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
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
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
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
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
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
RET
L8: TEST R7, 80H
JNZ L17
MOV
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。
观察电机转速及示波器上给定值与反馈值的波形,分析其响应特性,改变参数 IBAND、KPP、KII、KDD 的值后再观察其响应特性,选择一组较好的控制参数并填写下表:
项目 参数 |
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,在 0<t ≤ t on 时刻导通,有电流通过电机,在
t on< t ≤ T 时刻断开,无电流通过电机,这样占空比ρ:
ρ= ton / T
;
有 Ud =ρUs ; Ud:电机两端平均电压,Us:外接驱动电压
改变ρ即改变占空比,可以改变控制电压的脉冲宽度,达到在电动机两端获得不同大小的平均电压Ud,从而达到调速的目的,这种调速方法就叫做脉宽调速(PWM)。
4. 霍尔测速元件
霍尔传感器是利用霍尔效应制成的测量转速传感器。所谓霍尔效应是在置于磁场中的导体或半导体通入电流,若电流垂直磁场,则在与磁场和电流都垂直的力向上会出现一个电势差的现象。利用霍尔效应组成的元件称为霍尔元件。
转速测量原理 在非磁材料的园盘边缘上粘贴一块磁铁,将圆盘固定在被测电机转轴上。霍尔传感器固定在圆盘外缘附近,圆盘每旋转一周,霍尔传感器便输出一个脉冲,通过测量这些脉冲,便可知道转速。