积分分离PID控制算法程序

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

积分分离PID控制算法程序2007-01-05 15:23

;**********P10,积分分离PID控制算法程序********

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

;A,B,C,A',的值依次存在BLOCK1,BLOCK2,BLOCK3 BLOCK4 的地址里;这里B'与C值相同

; 这里R(k)给的是定值

ORG 0000H

E EQU 20H ; 一阈值

GK EQU 23H ;G(k)

GK1 EQU 26H ;G(k-1)

FK EQU 29H ;F(k)

FK1 EQU 2CH ;F(k-1)

BLOCK1 EQU 50H ;A

BLOCK2 EQU 53H ;B

BLOCK3 EQU 56H ;C

BLOCK4 EQU 5AH ;A'

UK EQU 5DH ;存放结果

BUFF EQU 43H ;暂存区

BUFF1 EQU 46H

BUFF2 EQU 49H

BUFFR0 EQU 4CH

REC EQU 63H ;采样次数

RK EQU 66H ;R(k)

CK EQU 69H ;采样数据始址

EK EQU 6CH ;存放偏差值E(k)的始址

EK1 EQU 70H ;存放E(k-1)的始址

TEST: MOV RK,#01H ;常数Rk 1.25的BCD码浮点数

MOV RK+1,#12H

MOV RK+2,#50H

; MOV E,#7EH ;设定一阈值0.001的BCD码浮点数

; MOV E+1,#10H

; MOV E+2,#00H

MOV E,#00H ;阈值为0.3

MOV E+1,#30H

MOV E+2,#00H

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 2.34的BCD 码浮点数

MOV 31H,#23H

MOV 32H,#40H

MOV 33H,#01H ;Td 3.54的BCD码浮点数MOV 34H,#35H

MOV 35H,#40H

MOV 36H,#01H ;Ti 1.12的BCD码浮点数MOV 37H,#11H

MOV 38H,#20H

MOV 39H,#01H ;Kp 1.25的BCD码浮点数MOV 3AH,#12H

MOV 3BH,#50H

MOV R0,#E ; 将其转换成二进制浮点操作数LCALL BTOF

MOV R0,#RK

LCALL BTOF

MOV R0,#3CH

LCALL BTOF

MOV R0,#40H

LCALL BTOF

MOV R0,#39H

LCALL BTOF

MOV R0,#36H

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

LCALL FDIV

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

LCALL FADD

MOV R1,#39H

LCALL FMUL

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

MOV R1,#BUFFR0 ;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,#33H ;计算A',保存33H中的值MOV R1,#BUFFR0

LCALL FMOVR0

MOV R1,#30H

LCALL FDIV

MOV R1,#3CH

LCALL FADD

MOV R1,#39H

LCALL FMUL

MOV R1,#BLOCK4 ;保存A'值到BLOCK4中LCALL FMOVR0

MOV R1,#BUFFR0 ;恢复33H中的值

LCALL FMOV

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

MOV R0,#FK1

LCALL FCLR

MOV R0,#GK1

LCALL FCLR

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

相关文档
最新文档