PID控制算法程序文件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;********增量式PID控制算法程序***********

;T、TD、TI、KP依次从30H,33H,36H,39H开始。

;A,B,C的值依次存在BLOCK1,BLOCK2,BLOCK3的地址里; 这里R(k)给的是定值

;

ORG 0000H

BLOCK1 EQU 43H ;A,B ,C

BLOCK2 EQU 46H

BLOCK3 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 ;指向BCD码浮点操作数LCALL BTOF ;将其转换成二进制浮点操作数MOV R0,#3CH

LCALL BTOF

MOV R0,#40H

LCALL BTOF

MOV R0,#39H

LCALL BTOF

MOV R0,#36H ;指向BCD码浮点操作数Ti LCALL BTOF ;将其转换成二进制浮点操作数MOV R0,#33H ;指向BCD码浮点操作数Td LCALL BTOF ;将其转换成二进制浮点操作数MOV R0,#30H ;指向BCD码浮点操作数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

LCALL FDIV

MOV R1,#30H ;30H里存的是T/Ti+1 LCALL FADD

MOV R1,#39H

LCALL FMUL

MOV R1 ,#BLOCK1 ;将结果保存在BLOCK1中LCALL FMOVR0

MOV R1,#BUFF1 ;30H恢复原值

MOV R0,#30H

LCALL FMOV

MOV R1,#BUFF ;33H恢复原值

MOV R0,#33H

LCALL FMOV

MOV R0,#40H ;计算B的值Kp.(1+2.Td/T) MOV R1,#33H

LCALL FMUL

MOV R1,#30H

LCALL FDIV

MOV R1,#3CH

LCALL FADD

MOV R1,#39H

LCALL FMUL

MOV R1,#BLOCK2 ;保存B值到BLOCK2中LCALL FMOVR0

MOV R0,#39H ;计算C的值Kp.Td/T

MOV R1,#33H

LCALL FMUL

MOV R1,#30H

LCALL FDIV

MOV R1,#BLOCK3 ;保存C值到BLOCK3中LCALL FMOVR0

MOV R0,#EK1 ;将EK1,EK2设初值0 LCALL FCLR

MOV R0,#EK2

LCALL FCLR

MOV REC,#03H ;设置采样次数

LOOP: MOV CK,#7eH ;采样数据暂时给了一个定值MOV CK+1,#21H ;0.002112

MOV CK+2,#12H

MOV R0,#CK

LCALL BTOF

MOV R0,#RK ;保存R(k)中的值

MOV R1,#BUFF

LCALL FMOVR0

MOV R1,#CK

LCALL FSUB ;计算R(k)-C(k)的值送给E(k)

MOV R1,#EK

LCALL FMOVR0

MOV R1,#BUFF ;恢复RK的值释放BUFF

MOV R0,#RK

LCALL FMOV

MOV R0,#BLOCK2 ;将B.e(k-1)的值暂存在BUFF1中MOV R1,#BUFF ;保存B

LCALL FMOVR0

MOV R1,#EK1

LCALL FMUL

MOV R1,#BUFF1

LCALL FMOVR0

MOV R1,#BUFF ;恢复B释放BUFF

LCALL FMOV

相关文档
最新文档