2024年3月11日发(作者:包鑫)
增量式
PID
控制算法程序
(
汇编
)
.********
增量式 PID 控制算法程序 ***********
;T、TD TI、KP依次从 30H, 33H, 36H, 39H开始。
;A , B, C的值依次存在 BL0CK,1 BL0CK2 BL0CK3勺地址里
这里 R(k) 给的是定值
;0RG 0000H
BL0CK1 EQU 43H ;A,B ,C BL0CK2 EQU 46H
BL0CK3 EQU 49H
UK EQU 4CH ;存结果 UK
RK EQU 50H
EK EQU 53H ;存放偏差值E(k)的始址EK1 EQU 56H ;存放E(k-1)的始址EK2
EQU 59H ;存放 E(k-2) 的始址 CK EQU 5CH ;采样数据始址
BUFF EQU 60H ;暂存区
BUFF1 EQU 63H
BUFF2 EQU 66H
REC EQU 69H
TEST:
MOV RK,#01H 常数 Rk 的 BCD码浮点数 MOV RK+1,#12H ;1.25 MOV
RK+2,#50H
MOV 3CH,#01H 常数 1 的 BCD码浮点数 MOV 3DH,#10H
MOV 3EH,#00H
MOV 40H,#01H 常数 2 的 BCD码浮点数 MOV 41H,#20H
MOV 42H,#00H
MOV 30H,#01H ;T的 BCD码浮点数 MOV 31H,#23H ;2.34 MOV 32H,#40H
MOV 33H,#01H ;Td的 BCD码浮点数 MOV 34H,#35H ;3.54 MOV 35H,#40H
MOV 36H,#01H ;Ti 的 BCD码浮点数 MOV 37H,#11H ;1.12 MOV 38H,#20H
MOV 39H,#01H ;Kp的 BCD码浮点数 MOV 3AH,#12H ;1.25 MOV 3BH,#50H
MOV R0,#RK ;指向,,, 码浮点操作数
LCALL BTOF ;将其转换成二进制浮点操作数 MOV R0,#3CH
LCALL BTOF
MOV R0,#40H
LCALL BTOF
MOV R0,#39H
LCALL BTOF
MOV R0,#36H ;指向,,, 码浮点操作数 Ti LCALL BTOF ;将其转换成二进制浮点 操作
数 MOV R0,#33H ;指向,,, 码浮点操作数 Td LCALL BTOF ;将其转换成二进制 浮点操
作数 MOV R0,#30H ;指向,,, 码浮点操作数 T LCALL BTOF ;将其转换成二进 制浮点操
作数
MOV R1, #BUFF1 保存 30H 中的值 即 T 值 LCALL FMOVR0
MOV R1, #36H ;计算 A值(1+T/Ti+Td/T).Kp
LCALL FDIV
MOV R1,#3CH ;常数1
LCALL FADD
MOV R0,#33H保存33H中的值
MOV R1,#BUFF
LCALL FMOVR0
MOV R1,#BUFF1
2024年3月11日发(作者:包鑫)
增量式
PID
控制算法程序
(
汇编
)
.********
增量式 PID 控制算法程序 ***********
;T、TD TI、KP依次从 30H, 33H, 36H, 39H开始。
;A , B, C的值依次存在 BL0CK,1 BL0CK2 BL0CK3勺地址里
这里 R(k) 给的是定值
;0RG 0000H
BL0CK1 EQU 43H ;A,B ,C BL0CK2 EQU 46H
BL0CK3 EQU 49H
UK EQU 4CH ;存结果 UK
RK EQU 50H
EK EQU 53H ;存放偏差值E(k)的始址EK1 EQU 56H ;存放E(k-1)的始址EK2
EQU 59H ;存放 E(k-2) 的始址 CK EQU 5CH ;采样数据始址
BUFF EQU 60H ;暂存区
BUFF1 EQU 63H
BUFF2 EQU 66H
REC EQU 69H
TEST:
MOV RK,#01H 常数 Rk 的 BCD码浮点数 MOV RK+1,#12H ;1.25 MOV
RK+2,#50H
MOV 3CH,#01H 常数 1 的 BCD码浮点数 MOV 3DH,#10H
MOV 3EH,#00H
MOV 40H,#01H 常数 2 的 BCD码浮点数 MOV 41H,#20H
MOV 42H,#00H
MOV 30H,#01H ;T的 BCD码浮点数 MOV 31H,#23H ;2.34 MOV 32H,#40H
MOV 33H,#01H ;Td的 BCD码浮点数 MOV 34H,#35H ;3.54 MOV 35H,#40H
MOV 36H,#01H ;Ti 的 BCD码浮点数 MOV 37H,#11H ;1.12 MOV 38H,#20H
MOV 39H,#01H ;Kp的 BCD码浮点数 MOV 3AH,#12H ;1.25 MOV 3BH,#50H
MOV R0,#RK ;指向,,, 码浮点操作数
LCALL BTOF ;将其转换成二进制浮点操作数 MOV R0,#3CH
LCALL BTOF
MOV R0,#40H
LCALL BTOF
MOV R0,#39H
LCALL BTOF
MOV R0,#36H ;指向,,, 码浮点操作数 Ti LCALL BTOF ;将其转换成二进制浮点 操作
数 MOV R0,#33H ;指向,,, 码浮点操作数 Td LCALL BTOF ;将其转换成二进制 浮点操
作数 MOV R0,#30H ;指向,,, 码浮点操作数 T LCALL BTOF ;将其转换成二进 制浮点操
作数
MOV R1, #BUFF1 保存 30H 中的值 即 T 值 LCALL FMOVR0
MOV R1, #36H ;计算 A值(1+T/Ti+Td/T).Kp
LCALL FDIV
MOV R1,#3CH ;常数1
LCALL FADD
MOV R0,#33H保存33H中的值
MOV R1,#BUFF
LCALL FMOVR0
MOV R1,#BUFF1