目录
8.1实验目的
1.了解直流电机闭环调速的方法
2.掌握 PID 控制规律及算法。
3.了解计算机在控制系统中的应用。
8.2实验设备
PC 机一台,TDX-PITE 实验装置一套。
8.3实验内容
直流电机闭环调速实验原理如图 8.1 所示
如图 8.1 所示,人为数字给定直流电机转速,与霍尔测速得到的直流电机转速 (反馈量)进行比较,其差值经过 PID 运算,将得到控制量并产生 PWM 脉冲,通过驱动电路控制直流电机的转动,构成直流电机闭环调速控制系统。
实验系统中直流电机电路原理图如图 8.2 所示。
8.4实验步骤
1.根据图 8.4 连接实验线路图。
2.参考图 8.3 的流程图编写实验程序(程文件名为: ZHILIU.ASM) ,实验参数取值范围见表 8.1,检查无误后编译、链接并装入系统。
;=========================================================
; 文件名: ZHILIU.ASM
; 功能描述: 直流电机闭环调速实验,通过专用图形显示界面
; 观察实验现象。
; IOY0--8255, IOY3--8254
;=========================================================
SSTACK SEGMENT STACK
DW 64 DUP(?)
TOP LABEL WORD
SSTACK ENDS
DATA SEGMENT
TS DB 14H ;采样周期
SPEC DW 0030H ;给定电机转速30H为48转/秒
IBAND DW 0060H ;PID算法中积分分离值
KPP DW 1060H ;PID算法中比例项系数值
KII DW 0010H ;PID算法中积分项系数值
KDD DW 0020H ;PID算法中微分项系数值
CH1 DB ? ;专用图形显示的CH1通道
CH2 DB ? ;专用图形显示的CH2通道
CH3 DB ? ;专用图形显示的CH3通道
YK DW ? ;电机转速反馈量
CK DB ? ;电机转速控制量
VADD DW ?
ZV DB ?
ZVV DB ?
TC DB ?
FPWM DB ?
CK_1 DB ?
EK_1 DW ?
AEK_1 DW ?
BEK DW ?
AAAA DB ?
VAA DB ?
BBB DB ?
VBB DB ?
MARK DB ?
R0 DW ?
R1 DW ?
R2 DW ?
R3 DW ?
R4 DW ?
R5 DW ?
R6 DW ?
R7 DB ?
R8 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MAIN: CALL INIT ;初始化
STI
M1: MOV AL, TS ;判断 Ts=Tc ?
SUB AL, TC
JNC M1
MOV TC, 00H ;得到 Yk
MOV AL, ZVV
MOV AH, 00H
MOV YK, AX
CALL PID ;调用PID计算控制量 CK
MOV AL, CK ;根据 CK 产生 PWM 脉冲
SUB AL, 80H
JC IS0
MOV AAAA, AL
JMP COU
IS0: MOV AL, 10H
MOV AAAA, AL
COU: MOV AL, 7FH
SUB AL, AAAA
MOV BBB, AL
MOV AX, SPEC ;将给定量 SPEC 存入 CH1
MOV CH1, AL
MOV AX, YK ;将反馈量 YK 存入 CH2
MOV CH2, AL
MOV AL, CK ;将控制量CK 存入 CH3
MOV CH3, AL
CALL PUT_COM ;调用PUT_COM显示给定、反馈与控制量的波形
JMP M1
PUT_COM:MOV DX, 03FDH
WAIT1: IN AL, DX
TEST AL, 20H
JZ WAIT1
MOV DX, 03F8H
MOV AL,CH2
OUT DX, AL
MOV DX, 03FDH
WAIT2: IN AL, DX
TEST AL, 20H
JZ WAIT2
MOV DX, 03F8H
MOV AL, CH1
OUT DX, AL
MOV DX, 03FDH
WAIT3: IN AL, DX
TEST AL, 20H
JZ WAIT3
MOV DX, 03F8H
MOV AL, CH3
OUT DX, AL
RET
INIT: CLI
PUSH DS
XOR AX, AX
MOV DS, AX
MOV AX, OFFSET IRQ6 ;8259 IRQ6(T0:1ms)
MOV SI, 0038H
MOV [SI], AX
MOV AX, CS
MOV SI, 003AH
MOV [SI], AX
MOV AX, OFFSET IRQ7 ;8259 IRQ7(INT0:HR-OUT,COUNT-VVV)
MOV SI, 003CH
MOV [SI], AX
MOV AX, CS
MOV SI, 003EH
MOV [SI], AX
POP DS
MOV AL, 2FH ;允许 IRQ6,IRQ7
OUT 21H, AL
MOV VADD, 0000H ;变量初始化
MOV ZV, 00H
MOV ZVV, 00H
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 MARK, 00H
MOV FPWM, 01H
MOV AAAA, 7FH
MOV VAA, 7FH
MOV TC, 00H
MOV DX, 606H
MOV AL, 90H ;初始化 8255-B口
OUT DX, AL
MOV DX, 602H
MOV AL, 00H
OUT DX, AL
MOV DX, 6C6H
MOV AL, 36H ;8254计数器0的输出OUT0
OUT DX, AL
MOV DX, 6C0H
MOV AL, 0E8H ;定时1ms
OUT DX, AL
MOV AL, 03H
OUT DX, AL
RET
IRQ7: NOP ;7号中断程序,计算转速
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF
MOV AL,MARK
CMP AL,01H
JZ IN1
MOV MARK,01H
IN2: NOP
MOV AL,20H ;中断返回,关闭 IRQ7
OUT 20H,AL
POPF
POP DX
POP CX
POP BX
POP AX
IRET
IN1: MOV MARK, 00H
CALL VV
MOV AL, ZV
MOV ZVV, AL
JMP IN2
VV: MOV DX, 0000H ;计算电机转速
MOV AX, 03E8H
MOV CX, VADD
CMP CX, 0000H
JZ MM1
DIV CX
MM: MOV ZV, AL
MOV VADD, 0000H
MM1: RET
IRQ6: PUSH AX
PUSH DX
PUSHF
INC TC
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 ;中断返回,关闭 IRQ6
OUT 20H, AL
POPF
POP DX
POP AX
IRET
KJ: NOP ;PWM发生子程序
PUSH AX
CMP FPWM, 01H ;FPWM为1,产生PWM的高电平
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 DX, 0602H ;输出高电平
MOV AL, 01H
OUT DX, AL
TEST2: CMP FPWM, 02H ;FPWM为2,产生PWM的低电平
JNZ OUTT
CMP VBB, 00H
JNZ BNOT0
MOV FPWM, 01H
MOV AL, AAAA
CLC
RCR AL, 01H
MOV VAA, AL
JMP OUTT
BNOT0: DEC VBB
MOV DX, 0602H ;输出低电平
MOV AL, 00H
OUT DX, AL
OUTT: POP AX
RET
;==============================================
;PID算法子程序
;根据SPEC, KPP, KII, KDD及YK计算对应控制量CK
;==============================================
PID: MOV AX, SPEC ;求偏差EK
SUB AX, YK
MOV R0, AX
MOV R1, AX ;求偏差的变化量AEK
SUB AX, EK_1
MOV R2, AX
SUB AX, AEK_1 ;求BEK
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 ;将微分项缩小8倍,防止溢出
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 ;CK=CK+CK_1
ADD AL, CK_1
JO L8
L18: MOV CK_1, AL
ADD AL, 80H
MOV CK, AL
RET ;PID子程序返回
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
3.点击按钮口,启动 86 专用图形界面。
4.在专用图形界面中,点击迫,运行程序,观察电机转速及示波器上给定值与反馈值的波形。
5.点击按钮,暂停程序运行,根据实验波形分析直流电机的响应特性。
6.改变参数IBAND、KPP、KII、KDD 的值后再观察其响应特性,选择一组较好的控制参数并填入下表
注: 实验中给定值、反馈值都为单极性,屏幕最底端对应值为 00H,最顶端对应值为 FFH,对于时间刻度值由于采样周期不同存在以下关系:
实际时间 (秒) = n(实际刻度值) 采样周期
控制量具有双极性,00H~7FH 为负值,80H~FFH 为正值。
直流电机闭环调速实验中,电机转速范围为 6 转秒~48 转/秒。即: 给定值 SPEC 范围约在06H~30H 之间。示例程序中给定 SPEC = 30H为 48 转/秒。TS = 14H,由于 8253 0UT2 接R06 中断为 1ms,故采样周期=14Hxlms = 0.2s。如实际刻度值 n = 100,则实际响应时间0.02x100 = 2s。
实验现象结果如图 8.5 所示:
改变参数IBAND、KPP、KII、KDD 的值后: