最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

增量式PID控制算法程序

IT圈 admin 26浏览 0评论

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

发布评论

评论列表 (0)

  1. 暂无评论