当前位置:文档之家› 增量式PID控制算法程序

增量式PID控制算法程序

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

增量式PID控制算法程序

;********增量式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

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

MOV R0,#BLOCK3 ;将C.e(K-2)的值暂存在BUFF2中MOV R1,#BUFF ;保存C

LCALL FMOVR0

MOV R1,#EK2

LCALL FMUL

MOV R1,#BUFF2

LCALL FMOVR0

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

LCALL FMOV

MOV R0,#BLOCK1 ;A.E(k)

MOV R1,#BUFF

LCALL FMOVR0

MOV R1,#EK

LCALL FMUL

MOV R1,#BUFF1 ;计算Uk值A.E(k)-B.E(k-1)+C.E(k-2) LCALL FSUB

MOV R1,#BUFF2

LCALL FADD

MOV R1,#UK ;保存结果到UK中

LCALL FMOVR0

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

LCALL FMOV

MOV R0,#UK ;UK转换成BCD码浮点数输出

LCALL FTOB

MOV R1,#EK1 ;将E(k-1)-->E(k-2),E(k)-->E(k-1)

MOV R0,#EK2

LCALL FMOV

MOV R1,#EK

MOV R0,#EK1

LCALL FMOV

LCALL DELAY ;等待采样时刻

DJNZ REC,NEXT1

SJMP $

NEXT1: LJMP LOOP

DELAY: MOV R7,#02H

DELAY1: MOV R6,#0FFH

DELAY2: DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

; (1)标号:FSDT功能:浮点数格式化

;入口条件:待格式化浮点操作数在[R0]中。

;出口信息:已格式化浮点操作数仍在[R0]中。

;影响资源:PSW、A、R2、R3、R4、位1FH 堆栈需求:6字节

FSDT: LCALL MVR0 ;将待格式化操作数传送到第一工作区中

LCALL RLN ;通过左规完成格式化

LJMP MOV0 ;将已格式化浮点操作数传回到[R0]中

; (2)标号:FADD功能:浮点数加法

;入口条件:被加数在[R0]中,加数在[R1]中。

;出口信息:OV=0时,和仍在[R0]中,OV=1时,溢出。

;;影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节FADD: CLR F0 ;设立加法标志

SJMP AS ;计算代数和

; (3)标号:FSUB功能:浮点数减法

;入口条件:被减数在[R0]中,减数在[R1]中。

;出口信息:OV=0时,差仍在[R0]中,OV=1时,溢出。

;影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节

FSUB: SETB F0 ;设立减法标志

AS: LCALL MVR1 ;计算代数和。先将[R1]传送到第二工作区

MOV C,F0 ;用加减标志来校正第二操作数的有效符号

CLR A ; ********???应加的一条语句

RRC A

XRL A,@R1

MOV C,ACC.7

ASN: MOV 1EH,C ;将第二操作数的有效符号存入位1EH中

XRL A,@R0 ;与第一操作数的符号比较

RLC A

MOV F0,C ;保存比较结果

LCALL MVR0 ;将[R0]传送到第一工作区中

LCALL AS1 ;在工作寄存器中完成代数运算

MOV0: INC R0 ;将结果传回到[R0]中的子程序入口

INC R0

MOV A,R4 ;传回尾数的低字节

MOV @R0,A

DEC R0

MOV A,R3 ;传回尾数的高字节

MOV @R0,A

DEC R0

MOV A,R2 ;取结果的阶码

MOV C,1FH ;取结果的数符

MOV ACC.7,C ;拼入阶码中

MOV @R0,A

CLR ACC.7 ;不考虑数符

CLR OV ;清除溢出标志

CJNE A,#3FH,MV01;阶码是否上溢?******** 应为#40H

SETB OV ;设立溢出标志

MV01: MOV A,@R0 ;取出带数符的阶码

RET

MVR0: MOV A,@R0 ;将[R0]传送到第一工作区中的子程序MOV C,ACC.7 ;将数符保存在位1FH中

MOV 1FH,C

MOV C,ACC.6 ;将阶码扩充为8bit补码

MOV ACC.7,C

MOV R2,A ;存放在R2中

INC R0

MOV A,@R0 ;将尾数高字节存放在R3中

MOV R3,A ;

INC R0

MOV A,@R0 ;将尾数低字节存放在R4中

MOV R4,A

DEC R0 ;恢复数据指针

DEC R0

RET

MVR1: MOV A,@R1 ;将[R1]传送到第二工作区中的子程序

MOV C,ACC.7 ;将数符保存在位1EH中

MOV 1EH,C

MOV C,ACC.6 ;将阶码扩充为8bit补码

MOV ACC.7,C

MOV R5,A ;存放在R5中

INC R1

MOV A,@R1 ;将尾数高字节存放在R6中

MOV R6,A

INC R1

MOV A,@R1 ;将尾数低字节存放在R7中

MOV R7,A

DEC R1 ;恢复数据指针

DEC R1

RET

AS1: MOV A,R6 ;读取第二操作数尾数高字节

ORL A,R7

JZ AS2 ;第二操作数为零,不必运算

MOV A,R3 ;读取第一操作数尾数高字节

ORL A,R4

JNZ EQ

MOV A,R6 ;第一操作数为零,结果以第二操作数为准

MOV R3,A

MOV A,R7

MOV R4,A

MOV A,R5

MOV R2,A

MOV C,1EH

MOV 1FH,C

AS2: RET

EQ: MOV A,R2 ;对阶,比较两个操作数的阶码

XRL A,R5

JZ AS4 ;阶码相同,对阶结束

JB ACC.7,EQ3;阶符互异

MOV A,R2 ;阶符相同,比较大小

CLR C

SUBB A,R5

JC EQ4

EQ2: CLR C ;第二操作数右规一次

MOV A,R6 ;尾数缩小一半

RRC A

MOV R6,A

MOV A,R7

RRC A

MOV R7,A

INC R5 ;阶码加一

ORL A,R6 ;尾数为零否?

JNZ EQ ;尾数不为零,继续对阶

MOV A,R2 ;尾数为零,提前结束对阶

MOV R5,A

SJMP AS4

EQ3: MOV A,R2 ;判断第一操作数阶符

JNB ACC.7,EQ2;如为正,右规第二操作数

EQ4: CLR C

LCALL RR1 ;第一操作数右规一次

ORL A,R3 ;尾数为零否?

JNZ EQ ;不为零,继续对阶

MOV A,R5 ;尾数为零,提前结束对阶

MOV R2,A

AS4: JB F0,AS5 ;尾数加减判断

MOV A,R4 ;尾数相加

ADD A,R7

MOV R4,A

MOV A,R3

ADDC A,R6

MOV R3,A

JNC AS2

LJMP RR1 ;有进位,右规一次

AS5: CLR C ;比较绝对值大小

MOV A,R4

SUBB A,R7

MOV B,A

MOV A,R3

SUBB A,R6

JC AS6

MOV R4,B ;第一尾数减第二尾数

MOV R3,A

LJMP RLN ;结果规格化

AS6: CPL 1FH ;结果的符号与第一操作数相反

CLR C ;结果的绝对值为第二尾数减第一尾数

MOV A,R7

SUBB A,R4

MOV R4,A

MOV A,R6

SUBB A,R3

MOV R3,A

RLN: MOV A,R3 ;浮点数规格化

ORL A,R4 ;尾数为零否?

JNZ RLN1

MOV R2,#0C1H;阶码取最小值******??应为#C0H RET

RLN1: MOV A,R3

JB ACC.7,RLN2;尾数最高位为一否?

CLR C ;不为一,左规一次

LCALL RL1

SJMP RLN ;继续判断

RLN2: CLR OV ;规格化结束

RET

RL1: MOV A,R4 ;第一操作数左规一次

RLC A ;尾数扩大一倍

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

DEC R2 ;阶码减一

CJNE R2,#0C0H,RL1E;阶码下溢否?***** 应改为CJNE R2,#0BFH,RL1E;CLR A

MOV R3,A ;阶码下溢,操作数以零计

MOV R4,A

MOV R2,#0C1H ; ******应改为MOV R2,#0C0H

RL1E: CLR OV

RET

RR1: MOV A,R3 ;第一操作数右规一次

RRC A ;尾数缩小一半

MOV R3,A

MOV A,R4

RRC A

MOV R4,A

INC R2 ;阶码加一

CLR OV ;清溢出标志

CJNE R2,#40H,RR1E;阶码上溢否?

MOV R2,#3FH ;阶码溢出

SETB OV

RR1E: RET

; (4)标号:FMUL功能:浮点数乘法

;入口条件:被乘数在[R0]中,乘数在[R1]中。

;出口信息:OV=0时,积仍在[R0]中,OV=1时,溢出。

;影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节

FMUL: LCALL MVR0 ;将[R0]传送到第一工作区中

MOV A,@R0

XRL A,@R1 ;比较两个操作数的符号

RLC A

MOV 1FH,C ;保存积的符号

LCALL MUL0 ;计算积的绝对值

LJMP MOV0 ;将结果传回到[R0]中

MUL0: LCALL MVR1 ;将[R1]传送到第二工作区中

MUL1: MOV A,R3 ;第一尾数为零否?

ORL A,R4

JZ MUL6

MOV A,R6 ;第二尾数为零否?

ORL A,R7

JZ MUL5

MOV A,R7 ;计算R3R4×R6R7-→R3R4

MOV B,R4

MUL AB

MOV A,B

XCH A,R7

MOV B,R3

MUL AB

ADD A,R7

MOV R7,A

CLR A

ADDC A,B

XCH A,R4

MOV B,R6

MUL AB

ADD A,R7

MOV R7,A

MOV A,B

ADDC A,R4

MOV R4,A

CLR A

RLC A

XCH A,R3

MOV B,R6

MUL AB

ADD A,R4

MOV R4,A

MOV A,B

ADDC A,R3

MOV R3,A

JB ACC.7,MUL2;积为规格化数否?R7四舍五入MOV A,R7 ;左规一次

RLC A

MOV R7,A

LCALL RL1

MUL2: MOV A,R7

JNB ACC.7,MUL3

INC R4

MOV A,R4

JNZ MUL3

INC R3

MOV A,R3

JNZ MUL3

MOV R3,#80H

INC R2

MUL3: MOV A,R2 ;求积的阶码

ADD A,R5

MD: MOV R2,A ;阶码溢出判断

JB ACC.7,MUL4

JNB ACC.6,MUL6

MOV R2,#3FH ;阶码上溢,设立标志

SETB OV

RET

MUL4: JB ACC.6,MUL6

MUL5: CLR A ;结果清零(因子为零或阶码下溢)

MOV R3,A

MOV R4,A

MOV R2,#41H

MUL6: CLR OV

RET

; (5)标号:FDIV功能:浮点数除法

;入口条件:被除数在[R0]中,除数在[R1]中。

;出口信息:OV=0时,商仍在[R0]中,OV=1时,溢出。

;影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:5字节

FDIV: INC R0

MOV A,@R0

INC R0

ORL A,@R0

DEC R0

DEC R0

JNZ DIV1

MOV @R0,#41H;被除数为零,不必运算

CLR OV

RET

DIV1: INC R1

MOV A,@R1

INC R1

ORL A,@R1

DEC R1

DEC R1

JNZ DIV2

SETB OV ;除数为零,溢出

RET

DIV2: LCALL MVR0 ;将[R0]传送到第一工作区中MOV A,@R0

XRL A,@R1 ;比较两个操作数的符号

RLC A

MOV 1FH,C ;保存结果的符号

LCALL MVR1 ;将[R1]传送到第二工作区中LCALL DIV3 ;调用工作区浮点除法

LJMP MOV0 ;回传结果

DIV3: CLR C ;比较尾数的大小

MOV A,R4

SUBB A,R7

MOV A,R3

SUBB A,R6

JC DIV4

LCALL RR1 ;被除数右规一次

SJMP DIV3

DIV4: CLR A ;借用R0R1R2作工作寄存器

XCH A,R0 ;清零并保护之

PUSH ACC

CLR A

XCH A,R1

PUSH ACC

MOV A,R2

PUSH ACC

MOV B,#10H ;除法运算,R3R4/R6R7-→R0R1 DIV5: CLR C

MOV A,R1

RLC A

MOV R1,A

MOV A,R0

RLC A

MOV R0,A

MOV A,R4

RLC A

MOV R4,A

XCH A,R3

RLC A

XCH A,R3

MOV F0,C

CLR C

MOV R2,A

MOV A,R3

SUBB A,R6

ANL C,/F0

JC DIV6

MOV R3,A

MOV A,R2

MOV R4,A

INC R1

DIV6: DJNZ B,DIV5

MOV A,R6 ;四舍五入

CLR C

RRC A

SUBB A,R3

CLR A

ADDC A,R1 ;将结果存回R3R4

MOV R4,A

CLR A

ADDC A,R0

MOV R3,A

POP ACC ;恢复R0R1R2

MOV R2,A

POP ACC

MOV R1,A

POP ACC

MOV R0,A

MOV A,R2 ;计算商的阶码

CLR C

SUBB A,R5

LCALL MD ;阶码检验

LJMP RLN ;规格化

; (6)标号:FCLR功能:浮点数清零

;入口条件:操作数在[R0]中。

;出口信息:操作数被清零。

;影响资源:A 堆栈需求:2字节

FCLR: INC R0

INC R0

CLR A

MOV @R0,A

MOV @R0,A

DEC R0

MOV @R0,#41H

RET

; (7)标号:FZER功能:浮点数判零

;入口条件:操作数在[R0]中。

;出口信息:若累加器A为零,则操作数[R0]为零,否则不为零。;影响资源:A 堆栈需求:2字节

FZER: INC R0

INC R0

MOV A,@R0

DEC R0

ORL A,@R0

DEC R0

JNZ ZERO

MOV @R0,#41H

ZERO: RET

; (8)标号:FMOV功能:浮点数传送

;入口条件:源操作数在[R1]中,目标地址为[R0]。

;出口信息:[R0]=[R1],[R1]不变。

;影响资源:A 堆栈需求:2字节

FMOV: INC R0

INC R0

INC R1

INC R1

MOV A,@R1

MOV @R0,A

DEC R0

DEC R1

MOV A,@R1

MOV @R0,A

DEC R0

DEC R1

MOV A,@R1

MOV @R0,A

RET

; (8.1)标号:FMOVR0 功能:浮点数传送

;入口条件:源操作数在[R0]中,目标地址为[R1]。

;出口信息:[R1]=[R0],[R0]不变。

;影响资源:A 堆栈需求:2字节

FMOVR0: INC R1

INC R1

INC R0

INC R0

MOV A,@R0

MOV @R1,A

DEC R1

DEC R0

MOV A,@R0

MOV @R1,A

DEC R1

DEC R0

MOV A,@R0

MOV @R1,A

RET

; (24)标号:DTOF功能:双字节十六进制定点数转换成格式化浮点数

;入口条件:双字节定点数的绝对值在[R0]中,数符在位1FH中,整数部分的位数在A中。

;出口信息:转换成格式化浮点数在[R0]中(三字节)。

;影响资源:PSW、A、R2、R3、R4、位1FH 堆栈需求:6字节

DTOF: MOV R2,A ;按整数的位数初始化阶码

MOV A,@R0 ;将定点数作尾数

MOV R3,A

INC R0

MOV A,@R0

MOV R4,A

DEC R0

LCALL RLN ;进行规格化

LJMP MOV0 ;传送结果到[R0]中

; (25)标号:FTOD功能:格式化浮点数转换成双字节定点数

;入口条件:格式化浮点操作数在[R0]中。

;出口信息:OV=1时溢出,OV=0时转换成功:定点数的绝对值在[R0]中(双字节),数符

;在位1FH中,F0=1 时为整数,CY=1时为一字节整数一字节小数,否则为纯小数。

;影响资源:PSW、A、B、R2、R3、R4、位1FH 堆栈需求:6字节

FTOD: LCALL MVR0 ;将[R0]传送到第一工作区

MOV A,R2

JZ FTD4 ;阶码为零,纯小数

JB ACC.7,FTD4;阶码为负,纯小数

SETB C

SUBB A,#10H

JC FTD1

SETB OV ;阶码大于16,溢出

RET

FTD1: SETB C

MOV A,R2

SUBB A,#8 ;阶码大于8否?

JC FTD3

FTD2: MOV B,#10H ;阶码大于8,按双字节整数转换

LCALL FTD8

SETB F0 ;设立双字节整数标志

CLR C

CLR OV

RET

FTD3: MOV B,#8 ;按一字节整数一字节小数转换

LCALL FTD8

SETB C ; 设立一字节整数一字节小数标志

CLR F0

CLR OV

RET

FTD4: MOV B,#0 ;按纯小数转换

LCALL FTD8

CLR OV ;设立纯小数标志

CLR F0

CLR C

RET

FTD8: MOV A,R2 ;按规定的整数位数进行右规***阶码是扩展后的值CJNE A,B,FTD9

MOV A,R3 ;将双字节结果传送到[R0]中

MOV @R0,A

INC R0

MOV A,R4

MOV @R0,A

DEC R0

RET

FTD9: CLR C

LCALL RR1 ;右规一次

SJMP FTD8

; (26)标号:BTOF功能:浮点BCD码转换成格式化浮点数

;入口条件:浮点BCD码操作数在[R0]中。

;出口信息:转换成的格式化浮点数仍在[R0]中。

;影响资源:PSW、A、B、R2~R7、位1DH~1FH 堆栈需求:6字节

BTOF: INC R0 ;判断是否为零。

INC R0

MOV A,@R0

MOV R7,A

DEC R0

MOV A,@R0

MOV R6,A

DEC R0

ORL A,R7

JNZ BTF0

MOV @R0,#41H;为零,转换结束。

RET

BTF0: MOV A,@R0

MOV C,ACC.7

MOV 1DH,C ;保存数符。

CLR 1FH ;以绝对值进行转换。

MOV C,ACC.6 ;扩充阶码为八位。

MOV ACC.7,C

MOV @R0,A

JNC BTF1

ADD A,#19 ;是否小于1E-19?

JC BTF2

MOV @R0,#41H ;小于1E-19时以0计。

INC R0

MOV @R0,#0

INC R0

MOV @R0,#0

DEC R0

DEC R0

RET

BTF1: SUBB A,#19

JC BTF2

MOV A,#3FH ;大于1E19时封顶。

MOV ACC.7,C

MOV @R0,A

INC R0

MOV @R0,#0FFH

INC R0

MOV @R0,#0FFH

DEC R0

DEC R0

RET

BTF2: CLR A ;准备将BCD码尾数转换成十六进制浮点数。

MOV R4,A

MOV R3,A

MOV R2,#10H ;至少两个字节。

BTF3: MOV A,R7

ADD A,R7

DA A

MOV R7,A

MOV A,R6

ADDC A,R6

DA A

MOV R6,A

MOV A,R4

RLC A

MOV R4,A

MOV A,R3

RLC A

MOV R3,A

DEC R2

JNB ACC.7,BTF3;直到尾数规格化。

MOV A,R6 ;四舍五入。

ADD A,#0B0H ; ******加#80H,也可以

CLR A

ADDC A,R4

MOV R4,A

CLR A

ADDC A,R3

MOV R3,A

JNC BTF4

MOV R3,#80H ; ****有进位右规一次

INC R2

BTF4: MOV DPTR,#BTFL;准备查表得到十进制阶码对应的浮点数。

ADD A,#19 ;计算表格偏移量。

MOV B,#3

MUL AB

ADD A,DPL

MOV DPL,A

JNC BTF5

INC DPH

BTF5: CLR A ;查表。

MOVC A,@A+DPTR

MOV C,ACC.6

MOV ACC.7,C

MOV R5,A

MOV A,#1

MOVC A,@A+DPTR

MOV R6,A

MOV A,#2

MOVC A,@A+DPTR

MOV R7,A

LCALL MUL1 ;将阶码对应的浮点数和尾数对应的浮点数相乘。

MOV C,1DH ;取出数符。

MOV 1FH,C

LJMP MOV0 ;传送转换结果。

; (27)标号:FTOB功能:格式化浮点数转换成浮点BCD码

;入口条件:格式化浮点操作数在[R0]中。

;出口信息:转换成的浮点BCD码仍在[R0]中。

;影响资源:PSW、A、B、R2~R7、位1DH~1FH 堆栈需求:6字节

FTOB: INC R0

MOV A,@R0

INC R0

ORL A,@R0

DEC R0

DEC R0

JNZ FTB0

MOV @R0,#41H

RET

FTB0: MOV A,@R0

MOV C,ACC.7

MOV 1DH,C

CLR ACC.7

LCALL MVR0

MOV DPTR,#BFL0;绝对值大于或等于1时的查表起点。

MOV B,#0 ;十的0次幂。

MOV A,R2

JNB ACC.7,FTB1

MOV DPTR,#BTFL;绝对值小于1E-6时的查表起点。

MOV B,#0EDH ;十的-19次幂。

ADD A,#16

JNC FTB1

MOV DPTR,#BFLN;绝对值大于或等于1E-6时的查表起点。MOV B,#0FAH ;十的-6次幂。

FTB1: CLR A ;查表,找到一个比待转换浮点数大的整数幂。MOVC A,@A+DPTR

MOV C,ACC.6

MOV ACC.7,C

MOV R5,A

MOV A,#1

MOVC A,@A+DPTR

MOV R6,A

MOV A,#2

MOVC A,@A+DPTR

MOV R7,A

MOV A,R5 ;和待转换浮点数比较。

CLR C

SUBB A,R2

JB ACC.7,FTB2;差为负数。

JNZ FTB3

MOV A,R6

CLR C

SUBB A,R3

JC FTB2

JNZ FTB3

MOV A,R7

CLR C

SUBB A,R4

JC FTB2

JNZ FTB3

MOV R5,B ;正好是表格中的数。

INC R5 ;幂加一。

MOV R6,#10H ;尾数为0·1000。

MOV R7,#0

三菱PID控制实例

三菱PLC和FX2N-4AD-TC实现温度PID闭环控制系统的学习参考。。。。。。

风机鼓入的新风经加热交换器、制冷交换器、进入房间。原理说明:进风不断被受热体加温,欲使进风维持一定的温度,这就需要同时有一加热器以不同加热量给进风加热,这样才能保证进风温度保持恒定。 plc接线图如下,按图接好线。配线时,应使用带屏蔽的补偿导线和模拟输入电缆配合,屏蔽一切可能产生的干扰。fx2n-4ad-tc的特殊功能模块编号为0。

输入和输出点分配表 这里介绍pid控制改变加热器(热盘管)的加热时间从而实现对温度的闭环控制。

在温度控制系统中,电加热器加热,温度用热电耦检测,与热电耦型温度传感器匹配的模拟量输入模块 fx2n-4ad-tc将温度转换为数字输出,cpu将检测的温度与温度设定值比较,通过plc的pid控制改变加热器的加热时间从而实现对温度的闭环控制。pid控制时和自动调谐时电加热器的动作情况如上图所示。其参数设定内容如下表所示。 三菱plc和fx2n-4ad-tc实现温度pid闭环控制系统程序设计:

用选择开关置x10作为自动调谐控制后的pid控制,用选择开关置x11作为无自动调谐的pid控制。 当选择开关置x10时,控制用参数的设定值在pid运算前必须预先通过指令写入,见图程序0步开始,m8002为初始化脉冲,用mov指令将目标值、输入滤波常数、微分增益、输出值上限、输出值下限的设定值分别传送给数据寄存器d500、d512、d515、d532、d533。 程序第26步,使m0得电,使用自动调谐功能是为了得到最佳pid控制,自动调谐不能自动设定的参数必须通过指令设定,在第29步~47步之间用mov指令将自动调谐用的参数(自动调谐采用时间、动作方向自动调谐开始、自动调谐用输出值)分别传送给数据寄存器d510、d511、d502。 程序第53步开始,对fx2n-4ad-tc进行确认、模式设定,且在plc运行中读取来自fx2n-4ad-tc的数据送到plc的d501中,103步开始对pid动作进行初始化。 第116步开始,x10闭合,在自动调谐后实行pid控制,当自动调谐开始时的测定值达到目标值的变化量变化1/3以上,则自动调谐结束,程序第128步~140步,自动调谐

温度控制的PID算法-及C程序实现

温度控制与PID算法 温度控制与PID算法j较为复杂,下面结合实际浅显易懂的阐述一下PID控制理论,将温度控制及PID算法作一个简单的描述。 1.温度控制的框图 这是一个典型的闭环控制系统,用于控制加热温区的温度(PV)保持在恒定的温度设定值(SV)。系统通过温度采集单元反馈回来的实时温度信号(PV)获取偏差值(EV),偏差值经过PID调节器运算输出,控制发热管的发热功率,以克服偏差,促使偏差趋近于零。例如,当某一时刻炉内过PCB板较多,带走的热量较多时,即导致温区温度下降,这时,通过反馈的调节作用,将使温度迅速回升。其调节过程如下:

温度控制的功率输出采用脉宽调制的方法。固态继电器SSR的输出端为脉宽可调的电压U OUT 。当SSR的触发角触发时,电源电压U AN通过SSR的输出端加到发热管的两端;当SSR的触发角没有触发信号时,SSR关断。因此,发热管两端的平均电压为U d=(t/T)* U AN=K* U AN 其中K=t/T,为一个周期T中,SSR触发导通的比率,称为负载电压系数或是占空比,K 的变化率在0-1之间。一般是周期T固定不便,调节t, 当t在0-T的范围内变化时,发热管的电压即在0-U AN之间变化,这种调节方法称为定频调宽法。下面将要描述的PID 调节器的算式在这里的实质即是运算求出一个实时变化的,能够保证加热温区在外界干扰的情况下仍能保持温度在一个较小的范围内变化的合理的负载电压系数K。 2.温度控制的两个阶段 温度控制系统是一个惯性较大的系统,也就是说,当给温区开始加热之后,并不能立即观察得到温区温度的明显上升;同样的,当关闭加热之后,温区的温度仍然有一定程度的上升。另外,热电偶对温度的检测,与实际的温区温度相比较,也存在一定的滞后效应。这给温度的控制带来了困难。因此,如果在温度检测值(PV)到达设定值时才关断输出,可能因温度的滞后效应而长时间超出设定值,需要较长时间才能回到设定值;如果在温度检测值(PV)未到设定值时即关断输出,则可能因关断较早而导致温度难以达到设定值。为了合理地处理系统响应速度(即加热速度)与系统稳定性之间地矛盾,我们把温度控制分为两个阶段。

温度的PID控制及程序示例

温度的PID 控制 一.温度检测部分首先要OK. 二、PID 调节作用 PID 控制时域的公式 ))()(1)(()(?++ =dt t de Td t e Ti t e Kp t y 分解开来: (1) 比例调节器 y(t) = Kp * e(t) e(k) 为当前的温差(设定值与检测值的插值) y(k) 为当前输出的控制信号(需要转化为PWM 形式) # 输出与输入偏差成正比。只要偏差出现,就能及时地产生与之成比例的调节 作用,使被控量朝着减小偏差的方向变化,具有调节及时的特点。但是, Kp 过大会导致动态品质变坏,甚至使系统不稳定。比例调节器的特性曲线. (2) 积分调节器 y(t) = Ki * ∫(e(t))dt Ki = Kp/Ti Ti 为积分时间 #TI 是积分时间常数,它表示积分速度的大小,Ti 越大,积分速度越慢,积分作用越弱。只要偏差不为零就会产生对应的控制量并依此影响被控量。增大Ti 会减小积分作用,即减慢消除静差的过程,减小超调,提高稳定性。 (3) 微分调节器 y(t) = Kd*d(e(t))/dt Kd = Kp*Td Td 为微分时间 #微分分量对偏差的任何变化都会产生控制作用,以调整系统输出,阻止偏差变化。偏差变化越快,则产生的阻止作用越大。从分析看出,微分作用的特点是:加入微分调节将有助于减小超调量,克服震荡,使系统趋于稳定。他加快了系统的动作速度,减小调整的时间,从而改善了系统的动态性能。 三.PID 算法: 由时域的公式离散化后可得如下公式:

y(k) = y(k-1)+(Kp+Ki+Kd)*e(k)-(Kp +2*Kd)*e(k-1) + Kd*e(k-2) y(k) 为当前输出的控制信号(需要转化为PWM形式) y(k-1)为前一次输出的控制信号 e(k) 为当前的温差(设定值与检测值的插值) e(k-1) 为一次前的温差 e(k-2) 为二次前的温差 Kp 为比例系数 Ki = Kp*T/Ti T为采样周期 Kd = Kp*Td/T 四.PID参数整定(确定Kp,Ts,Ti,Td): 温度控制适合衰减曲线法,需要根据多次采样的数据画出响应曲线。 所以需要通过串口将采样时间t, 输出y(t)记录下来,方便分析。 1)、不加入算法,系统全速加热,从常温加热到较高的温度的时间为Tk, 则采样时间一般设为 T = Tk/10。 2)、置调节器积分时间TI=∞,微分时间TD=0,即只加比例算法: y(k) = y(k-1)+Kp*e(k) 比例带δ置于较大的值。将系统投入运行。(δ = 1/Kp) 3)、待系统工作稳定后,对设定值作阶跃扰动,然后观察系统的响应。若响应振荡衰减太快,就减小比例带;反之,则增大比例带。如此反复,直到出现如图所示的衰减比为4:1的振荡过程时,记录此时的δ值(设为δS),以及TS 的值(如图中所示)。当采用衰减比为10:1振荡过程时,应用上升时间Tr替代 振荡周期TS计算。 系统衰减振荡曲线 图中,TS为衰减振荡周期,Tr为响应上升时间。 据表中所给的经验公式计算δ、TI及TD的参数。

温度PID控制实验

温度PID 控制实验 一、实验目的 1.加深对PID 控制理论的理解; 2.认识Labview 虚拟仪器在测控电路的应用; 3.掌握时间比例P、积分I、微分D 对测控过程连续测控的影响以及提高测控系统的精度; 4.通过实验,改变P、I、D 参数,观察对整个温度测控系统的影响; 5.认识固态继电器和温度变送器,了解其工作原理。 二、预习要点 1.PID 控制理论与传递函数。请学生在0-100 的范围里,自己选择较好的KP,KI,KD 值,用该控制参数进行后续实验; 2.了解A/D、D/A 转换原理; 3.Labview 虚拟仪器图形软件(本实验指导书附录中对使用环境详细介绍)。 三、实验原理 温度是通过固态继电器的导通关断来实现加热的,控制周期即是一个加热和 冷却周期,PID 调节的实现也是通过这个周期实现的,在远离温度预设值的时固 态继电器在温度控制周期中持续加热(假设导通时间是T),在接近温度预设值 时通过PID 得到的值来控制这一周期内固态继电器的开关时间(假设导通时间是 1/2T)维持温度(假设导通时间是1/4T)。如图1 所示: 图1 加热周期控制示意图 8 四、实验项目 1.用PID 控制水箱温度; 2.用控制效果对比完成数据对比操作,选出最佳值。 五、实验仪器 ZCK-II 型智能化测控系统。 六、实验步骤及操作说明 1.打开仪器面板上的总电源开关,绿色指示灯亮起表示系统正常;

2.打开仪器面板上的液位电源开关,绿色指示灯亮起表示系统正常; 3,确保贮水箱内有足够的水,参照图2 中阀门位置设置阀门开关,将阀门1、3、5、6 打开,阀门2、4 关闭; 图2 水箱及管道系统图 4.参看变频器操作说明书将其设置在手动操作挡; 5.单击控制器RUN 按钮,向加热水箱注水,直到水位接近加热水箱顶部,完 全 淹没加热器后单击STOP 按钮结束注水; 6.关闭仪器面板上的液位电源开关,红色指示灯亮起表示系统关闭; 7.打开仪器面板上的加热电源开关,绿色指示灯亮起表示系统正常; 8.打开计算机,启动ZCK-II 型智能化测控系统主程序; 9.用鼠标单击温度控制动画图形进入温度控制系统主界面,小组实验无须在个 人信息输入框填写身份,直接确定即可; 10.在温度系统控制主界面中,单击采集卡测试图标,进入数据采集卡测试程序。 请在该选项中确定选择设备号为端口1,因为我们接入数据采集卡的端口是1 号 9 端口,其他数据端口留做其他方面使用的,所以切记不能选错,否则程序会报 错 并强制关闭。选择采集通道时请选择0 号通道即温度传感器占用的通道。控制上、 下限选项是为设置报警电路所预设的,在本实验中暂未起用该功能,感兴趣的 同 学可以试着完善它,本实验报警数值是+1V 以下和+5V 以上,这里只做了解即可。 采样点数(单位:个)、采样速率(单位:个/秒)和控制周期(单位:毫秒) 请 参照帮助显示区进行操作,一切设置确认无误后即可单击启动程序图标,观察 温 度和电压的变化,也可以单击冷却中左边的开关按钮进入加热程序,观察温度 上 升曲线及电流表和电压表变化,确认传感器正常工作后点击程序结束,等待返 回 主界面图标出现即可返回温度控制主界面进入下一步实验。 11.在温度系统控制主界面中,单击传感器标定图标,进入传感器标定程序。 本 程序界面和数据采集卡测试程序界面基本相同,操作请参照步骤10 进行,一切 设置确认无误后即可单击启动程序图标,观察温度和电压的变化,同时用温度

PID温度控制的PLC程序设计

PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带: DM51 积分时间: DM52 微分时间: DM53 滞后值: DM54 控制周期: DM55 偏移量: DM56 数据刷新: 22905 l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STA TEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57 [NETWORK] Name="Setting Start"//设置开始 [STA TEMENTLIST] LD 253.13 OUT TR0 AND 229.05 //触摸屏上的开始设置开关

PID温度控制的PLC程序设计(梯形图语言)教学文案

P I D温度控制的P L C 程序设计(梯形图语言)

PID温度控制的PLC程序设计(梯形图语言) PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带 : DM51 积分时间 : DM52 微分时间 : DM53 滞后值 : DM54 控制周期 : DM55 偏移量 : DM56 数据刷新 : 22905

l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STATEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 字串1 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57 [NETWORK] Name="Setting Start"//设置开始 [STATEMENTLIST] LD 253.13 OUT TR0 AND 229.05 //触摸屏上的开始设置开关 DIFU 080.05 //设置微分

基于PID控制算法的温度控制系统的设计与仿真

摘要 本设计是一种温度控制系统,温度控制在工业生产和科学研究中具有重要意义。其控制系统属于一阶纯滞后环节,具有大惯性、纯滞后、非线性等特点,导致传统控制方式超调大、调节时间长、控制精度低。采用单片机进行炉温控制,具有电路设计简单、精度高、控制效果好等优点,对提高生产效率、促进科技进步等具有重要的现实意义。PID控制法最为常见,控制输出采用PWM波触发可控硅来控制加热通断。使系统具有较高的测量精度和控制精度。单片机控制部分采用AT89S51单片机为核心,采用Keil软件进行编程,同时采用分块的模式,对整个系统的硬件设计进行分析,分别给出了系统的总体框图、温度检测调理电路、A/D转换接口电路,按键输入电路以及显示电路,并对相应电路进行相关的阐述软件采用PID算法进行了建模和编程,在Proteus环境中进行了仿真。 关键词:PID;单片机;温度控制;Keil;Proteus

Abstract This design is a kind of temperature control system,The temperature control in industrial production and scientific research is of great to pure first-order lag link, the control system has the characteristics of big inertia, pure lag and nonlinear, the traditional control overshoot and adjustment time is long, low control single chip microcomputer temperature control, has simple circuit design, high accuracy and good control effect, to improve the production efficiency, promote the progress of science and technology has important practical control is the most common, the control output PWM wave triggering thyristor is used to control the heating on and the system has high accuracy of measurement and control microcomputer control part adopts single chip microcomputer AT89S51 as the core,Using Keil software programming,Using block pattern at the same time, analyzes the hardware design of the whole system, respectively, of the overall system block diagram is given, the temperature detection circuit, A/D conversion interface circuit, key input circuit and display circuit, and the corresponding circuit are related in this paper, the software, the PID algorithm is used for modeling and programming in the Proteus simulation environment. Key words:PID;Single chip microcomputer;The temperature control;Keil;Proteus

温度控制的PID算法的C语言程序

我的题目是:基于PID算法的温度控制系统 89C51单片机,通过键盘输入预设值,与DS18B20测得的实际值做比较,然后驱动制冷或加热电路。用keil C语言来实现PID的控制。 最佳答案 7f0f2f1c2f

89C 89C89C1 L50℃3℃2006-02-17 2009-04-23 2009-04-23 2009-04-24 2009-04-24

2009-10-11 超低温漂移高精度运算放大器0P07将温度一电压信号进行放大,便于A/D进行转换,以提高温度采集电路的可靠性。模拟电路硬件部分见图2。 图2 ?温度电压转换电路 电控制执行电路的设计 ??? 由输出来控制电炉,电炉可以近似建立为具有滞后性质的一阶惯性环节数学模型。其传递函数形式为: ??? 可控硅可以认为是线形环节实现对水温的控制。单片机输出与电炉功率分别属于弱电与强电部分,需要进行隔离处理,这里采用光耦元件TLP521 在控制部分进行光电隔离,此外采用变压器隔离实现弱强电的电源隔离。 ??? 单片机PWM 输出电平为0 时,光耦元件导通,从而使三极管形成有效偏置而导通,通过整流桥的电压经过集电极电阻以及射集反向偏压,有7V 左右的电压加在双向可控硅控制端,从而使可控硅导通,交流通路形成,电阻炉工作;反之单片机输出电平为0 时,光耦元件不能导通,三极管不能形成有效偏置而截止,可控硅控制端电压几乎为零,可控硅截止从而截断交流通路,电炉停止工作。此外,还有越限报警,当温度低于下限时发光二极管亮;高上限时蜂鸣器叫。控制执行部分的硬件电路如下: 图3? 控制执行部分电路 3 键盘及显示的设计 ??? 键盘采用软件查询和外部中断相结合的方法来,低电平有效。图3 中按键AN1,AN2,AN3,AN4, AN5的功能定义如表1所示。 ??? 按键AN3与相连,采用外部中断方式,并且优先级定为最高;按键AN5和AN4分别与和相连,采用软件查询的方式;AN1则为硬件复位键,与R、C构成复位电路。

温度的PID控制及程序示例

温度的PID 控制 一.温度检测部分首先要OK. 二、PID 调节作用 PID 控制时域的公式 1 de(t) y(t) Kp(e(t) e(t) Td ) Ti dt 分解开来: (1) 比例调节器 y(t) = Kp * e(t) e(k) 为当前的温差(设定值与检测值的插值) y(k) 为当前输出的控制信号(需要转化为PWM 形式) # 输出与输入偏差成正比。只要偏差出现,就能及时地产生与之成比例的调节 作用,使被控量朝着减小偏差的方向变化,具有调节及时的特点。但是,Kp 过 大会导致动态品质变坏,甚至使系统不稳定。比例调节器的特性曲线. (2) 积分调节器 y(t) = Ki * ∫(e(t))dt Ki = Kp/Ti Ti为积分时间 #TI 是积分时间常数,它表示积分速度的大小,Ti 越大,积分速度越慢,积分作用越弱。只要偏差不为零就会产生对应的控制量并依此影响被控量。增大Ti 会减小积分作用,即减慢消除静差的过程,减小超调,提高稳定性。 (3) 微分调节器 y(t) = Kd*d(e(t))/dt Kd = Kp*Td Td 为微分时间 #微分分量对偏差的任何变化都会产生控制作用,以调整系统输出,阻止偏差变化。偏差变化越快,则产生的阻止作用越大。从分析看出,微分作用的特点是:加入微分调节将有助于减小超调量,克服震荡,使系统趋于稳定。他加快了系统的动作速度,减小调整的时间,从而改善了系统的动态性能。 三.PID 算法:由时域的公式离散化后可得如下公式:

y(k) = y(k-1)+(Kp+Ki+Kd)*e(k)-(Kp +2*Kd)*e(k-1) + Kd*e(k-2) y(k) 为当前输出的控制信号(需要转化为PWM 形式) y(k-1)为前一次输出的控制信号 e(k) 为当前的温差(设定值与检测值的插值) e(k-1) 为一次前的温差 e(k-2) 为二次前的温差 Kp 为比例系数 Ki = Kp*T/Ti T 为采样周期 Kd = Kp*Td/T 四.PID 参数整定(确定Kp,Ts,Ti,Td ):温度控制适合衰减曲线法,需要根据多次采样的数据画出响应曲线。所以需要通过串口将采样时间t, 输出y(t) 记录下来,方便分析。 1) 、不加入算法,系统全速加热,从常温加热到较高的温度的时间为Tk, 则采样时间一般设为T = Tk/10 。 2) 、置调节器积分时间TI= ∞,微分时间TD=0,即只加比例算法: y(k) = y(k-1)+Kp*e(k) 比例带δ置于较大的值。将系统投入运行。 (δ = 1/Kp ) 3) 、待系统工作稳定后,对设定值作阶跃扰动,然后观察系统的响应。若响应振荡衰减太快,就减小比例带;反之,则增大比例带。如此反复,直到出现如图所示的衰减比为4:1的振荡过程时,记录此时的δ值(设为δS),以及TS 的值(如图中所示)。当采用衰减比为10:1振荡过程时,应用上升时间Tr 替代 振荡周期TS 计算。 系统衰减振荡曲线图中,TS为衰减振荡周期,Tr 为响应上升时间。据表中所给的经验公式计算δ、TI 及TD的参数。 表衰减曲线法整定计算公式

基于单片机的PID温度控制毕业设计

前言 温度是表征物体冷热程度的物理量。在很多生产过程中,特别是在冶金、化工、建材、食品、机械、石油等工业中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。 单片机系统的开发应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。但随之而来的是巨额的成本。在很多的小型系统中,处理机的成本占了系统成本的比例高达20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。 随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且可以很容易地做到多点的温度检测,如果对此原理图稍加改进,还可以进行不同地点的实时温度检测和控制。

1绪论 1.1研究的目的和意义 温度是工业生产中主要被控参数之一,温度控制自然是生产的重要控制过程。工业生产中温度很难控制,对于要求严格的的场合,温度过高或过低将严重影响工业生产的产质量及生产效率,降低生产效益。这就需要设计一个良好温度控制器,随时向用户显示温度,而且能够较好控制。单片机具有和普通计算机类似的强大数据处理能力,结合PID,程序控制可大大提高控制效力,提高生产效益[9]。 例如钢铁生产过程中,按照工艺条件的规定保持一定的温度才能保证产品质量和设备的安全。对电气设备进行温度的监控,例如高压开关、变压器的出线套管等,判断可能存在的热缺陷,进而能及时发现、处理、预防重大事故的发生。因此研究温度控制仪具有重要的意义[10]。 在单片机温度测量系统中的关键是测量温度、控制温度和保持温度,温度测量是工业对象中主要的被控参数之一。因此,单片机温度测量则是对温度进行有效的测量,并且能够在工业生产中得到了广泛的应用,尤其在电力工程、化工生产、机械制造、冶金工业等重要工业领域中,担负着重要的测量任务。在日常生活中,也可广泛实用于地热、空调器、电加热器等各种家庭室温测量及工业设备温度测量场合[16]。 目前市场上热水器的控制系统大多存在功能单一、操作复杂、控制不方便等问题,很多控制器只具有温度和水位显示功能,不具有温度控制功能.即使热水器具有辅助加热功能。也可能由于加热时间不能控制而产生过烧,从而浪费电能。本文设计的热水器控制系统以51单片机为检测控制中心单元,具有温度设定与控制功能。该控制器和以往显示仪相比具有性价比高、温度控制与显示精度高、使用方便和性能稳定等优点,提

基本PID温度控制

1实习内容及其要求 实习内容:通过温度的设定和反馈值,计算偏差,并使用PID控制算法输出控制信号,整定PID参数,是被控温度达到设定值,具体包括AC6611过程卡的接线和测试、人机界面程序设计、数据采集程序设计、PID算法程序设计,控制输出程序设计、PID参数的整定。 实习目的:通过实训,让学生了解计算机控制系统的基本组成,学会计算机控制硬件和软件的设计以及程序的调试,具备技术实现能力,基本能够处理实践过程中的问题并提出解决办法,进一步提高学生的计算机应用水平。在实训中设计出的方案和程序要满足规定和切合实际。 2 AC6611多功能过程通道卡 AC6611是一款廉价通用A/D、D/A板,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。AC6611具有16路单端模拟输入、32路开关量(16路输入及16路输出)、一路12位D/A。AC6611采用CH PCI接口芯片及门阵列作为主控芯片,可以提高可靠性。对不需要模拟输出的用户可以选择AC6610,与6611兼容。 2.1 功能特点与技术指标 AC6611可以实现慢速直流电压、电流(需要转换板)信号采集以及小型测控、仪表系统的控制。AC6611有模拟量输入、模拟量输出、开关量输入输出,他们可以完成相应不同的功能。 (1)模拟量输入(A/D) A/D转换器: 120KHZ ,12位A/D,ADS7816,A/D内置采样保持器。 工作方式:软件查询。 16路单端输入,输入阻抗:1MΩ 最大输入耐压电压:< +12V/-5.5V,瞬时输入耐压:-25V - +30V 连接器:DB25孔式输入连接器。 A/D最大通过率: 70KHZ,输入通道建立时间<8uS。 双极性输入范围:5V,单极性输入范围:5V、10V。输入范围跳线器选择,对应输入幅度及精度如下: 输入系统精度(FSR)跳字 0-10V 0.1% 1LSB

PID 温度控制的实现

PID 温度控制的实现 PID 简介 PID(Proportional Integral Derivative)控制是控制工程中技术成熟、应用广泛的一种控制策略,经过长期的工程实践,已形成了一套完整的控制方法和典型的结构。它不仅适用于数学模型已知的控制系统中,而且对于大多数数学模型难以确定的工业过程也可应用,在众多工业过程控制中取得了满意的应用效果。 PID 工作基理:由于来自外界的各种扰动不断产生,要想达到现场控制对象值保持恒定的目的,控制作用就必须不断的进行。若扰动出现使得现场控制对象值(以下简称被控参数)发生变化,现场检测元件就会将这种变化采集后经变送器送至PID 控制器的输入端,并与其给定值(以下简称SP 值)进行比较得到偏差值(以下简称e 值),调节器按此偏差并以我们预先设定的整定参数控制规律发出控制信号,去改变调节器的开度,使调节器的开度增加或减少,从而使现场控制对象值发生改变,并趋向于给定值(SP 值),以达到控制目的,如图1 所示,其实PID 的实质就是对偏差(e 值)进行比例、积分、微分运算,根据运算结果控制执行部件的过程。 图1 模拟PID 控制系统原理图 PID 控制器的控制规律可以描述为: (1) 比例(P)控制能迅速反应误差,从而减小稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,会引起系统的不稳定。积分(I)控制的作用是:只要系统有误差存在,积分控制器就不断地积累,输出控制量,以消除误差。因而,只要有足够的时间,积分控制将能完全消除误差,使系统误差为零,从而消除稳态误差。积分作用太强会使系统超调加大,甚至使系统出现振荡。微分(D)控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能。根据不同的被控对象的控制特性,又可以分为P、PI、PD、PID 等不同的控制模型。 数字PID 的实现 在连续-时间控制系统(模拟PID 控制系统)中,PID 控制器应用得非常广泛。其设计技术成熟,长期以来形成了典型的结构,参数整定方便,结构更改灵活,能满足一般的控制要求。随着计算机的快速发展,人们将计算机引入到PID 控制领域,也就出现了数字式PID 控制。 由于计算机基于采样控制理论,计算方法也不能沿袭传统的模拟PID 控制算法(如公式1 所示),所以必须将控制模型离散化,离散化的方法:以T 为采样周期,k 为采样序号,用求和的形式代替积分,用增量的形式(求差)代替微分,这样可以将连续的PID 计算公式离散: (2) 式1 就可以离散为:

计算机控制课程设计基于某PID算法电加热炉温度控制系统设计

成绩 《计算机控制技术》 课程设计 题目:基于数字PID的电加热炉温度控制系统设计 班级:自动化09-1 姓名: 学号: 2013 年 1 月 1 日

基于数字PID的电加热炉温度控制系统设计 摘要:电加热炉控制系统属于一阶纯滞后环节,具有大惯性、纯滞后、非线性等特点,导致传统控制方式超调大、调节时间长、控制精度低。本设计采用PID算法进行温度控制,使整个闭环系统所期望的传递函数相当于一个延迟环节和一个惯性环节相串联来实现温度的较为精确的控制。 电加热炉加热温度的改变是由上、下两组炉丝的供电功率来调节的,它们分别由两套晶闸管调功器供电。调功器的输出功率由改变过零触发器的给定电压来调节,本设计以AT89C51单片机为控制核心,输入通道使用AD590传感器检测温度,测量变送传给ADC0809进行A/D转换,输出通道驱动执行结构过零触发器,从而加热电炉丝。本系统PID算法,将温度控制在50~350℃范围内,并能够实时显示当前温度值。 关键词:电加热炉;PID ;功率;温度控制; 1.课程设计方案 1.1 系统组成中体结构 电加热炉温度控制系统原理图如下,主要由温度检测电路、A/D转换电路、驱动执行电路、显示电路及按键电路等组成。 系统采用可控硅交流调压器,输出不同的电压控制电阻炉温度的大小,温度通过热电偶检测,再经过变送器变成0 - 5 V 的电压信号送入A/D 转换器使之变成数字量,此数字量通过接口送到微机,这是模拟量输入通道。 2.控制系统的建模和数字控制器设计 2.1 数字PID控制算法 在电子数字计算机直接数字控制系统中,PID控制器是通过计算机PID控制算法程序实现的。计算机直接数字控制系统大多数是采样-数据控制系统。进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。

高精度 PID温度控制器

高精度PID温度控制器 时间:2007-04-19 来源: 作者:江孝国王婉丽祁双喜点击:4468 字体大小:【大中小】 摘要:介绍一种高精度的、采用PID 控制原理的温度控制器, 给出了实验结果。这种控制器适用于小功率半导体器件的工作温度控制, 其控制精度可达±0.05℃。 1 引言 温度控制已成为工业生产、科研活动中很重要的一个环节, 能否成功地将温度控制在所需的范围内关系到整个活动的成败。由于控制对象的多样性和复杂性, 导致采用的温控手段的多样性。例如: 某种半导体激光器对工作温度的稳定性有较高的要求, 一般要将温度控制在±0.1℃左右, 才能保证器件输出的激光波长不发生超出要求的漂移, 否则,激光波长的超范围漂移将使研究工作难以开展。为达到这种温控要求, 笔者根据工作中的情况, 采用PID 控制原理研制成适合用于小功率半导体器件的温度控制器。该控制器能够达到很好的控制效果, 若精心选择PID 的各种参数, 温度控制的精度可以达到±0.05℃, 完全可以保证器件的正常工作。 2 温度控制原理 在上述温控实例中, 器件工作时产生的热量将使器件本身工作温度升高, 最后达到很高的基本稳定的温度。较高的温度将严重影响器件的各种性能参数, 也很可能导致器件不能正常工作, 甚至损坏。温度控制的目的就是将器件的工作温度以一定的精度稳定在一个较低的水平上, 这样一来就要求根据器件工作时的实际情况(如产热量大小等) 采取一定的措施,随时将产生的热量即时散掉, 并且要求器件在单位时间里产生的热量等于控制器在单位时间里吸收的热量, 若两者达到动态平衡, 则可以保持器件工作温度的稳定[1]。 在一定的控制系统中, 首先将需要控制的被测参数(如温度) 由传感器转换成一定的信号后再与预先设定的值进行比较, 把比较得到的差值信号经过一定规律的计算后得到相应的控制值, 将控制量送给控制系统进行相应的控制, 不停地进行上述工作, 从而达到自动调节的目的。当控制对象的精确数学模型难以建立时, 比较成熟且广泛使用的控制方法是采用按差值信号的比例、积分和微分进行计算控制量的方法, 即PID 法, 其控制规律的数学模型为: 其中: K P 为比例系数; e 为差值信号, e= T - Tset (T : 温度测量值, Tset: 温度设定值) ; Ti 为积分常数; Td 为微分常数; V0、V0-1为当时及前一时刻的控制量。 实现PID 控制原理的具体方法因系统的不同而不同[2]。在我们的系统中, 采用了增量式计算方法, 而控制量的输出则采用了位置式的输出形式。在数值控制系统中, 其控制规律

PID温度控制的PLC程序设计(梯形图语言)

PID温度控制的PLC程序设计(梯形图语言) PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带: DM51 积分时间: DM52 微分时间: DM53 滞后值: DM54 控制周期: DM55 偏移量: DM56 数据刷新: 22905 l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STATEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 字串1 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57

PID温度控制的PLC程序设计(欧姆龙)

PID温度控制的PLC程序设计 PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带: DM51 积分时间: DM52 微分时间: DM53 滞后值: DM54 控制周期: DM55 偏移量: DM56 数据刷新: 22905 l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STATEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57 [NETWORK] Name="Setting Start"//设置开始 [STATEMENTLIST] LD 253.13

单片机温度控制及PID控制程序的设计

河南工程学院毕业设计(论文)单片机温度控制及PID控制程序的设计 学生姓名:_ 系(部):电子信息工程系 专业:电气自动化 指导教师: 2008 年 5 月16 日

摘要 随着生产的发展,自动化程度越来越高,热电设备对温度的控制要求也越来越高。随着人们生活水平的提高,对日常用品的自动化也提出了更高的要求,单片机的不断更新换代,既要满足了上述的要求,又要达到提高自动化品质的目的。因此设计出此温度控制系统。本温度控制系统的对象是一热水电磁炉的水温,深入日常生活,要求所设计的系统具有软硬件结构简单、成本低廉、可靠性高(即不易出错)等特点。 关键字: 单片机PID A/D反馈并行I/O口

Abstract With the development of the production, in industry, the equipment to control temperature rising demand, as people's living standards improve, the automation of daily necessities also a higher demand, the continuous upgrading of SCM, Meet the above requirements, to achieve the purpose of quality control. The temperature control system is the object of a hot water resistance furnace, for daily life, requested by the design of hardware and software systems with simple, low-cost, high reliability (that is, less error-prone), and other characteristics. The design of the system while these characteristics for the purpose of the design. Keyword: MCU PID A / D feedback LPT I / O port

相关主题
文本预览
相关文档 最新文档