经典PID控制算法的表达式为:
y(t)=KP*[e(t)+1/ TI *∫e (t)dt+TD *de(t)/dt] (3.1)
式中:
y(t)—调节器的输出信号
e(t) —调节器的偏差信号,它等于给定值与测量值之差
KP—调节器的比例系数
TI—调节器的积分系数
TD—调节器的微分时间
为了用DSP实现上式,必须将其离散化,用数字形式描述为:
y(n)-y(n-1)=KP[e(n)-e(n-1)]+KI*e(n)+KD[e(n)-2e(n-1)+e(n-2)] (3.2)
其中:
KI=KP*T/TI ;
KD=KP*TD/T
T—采样周期
e (n) —第n次采样的偏差;
e(n-1) —第n-1次采样时的偏差;
e(n-2) —第n-2次采样时的偏差。
由式(3.2)可知,要计算第n次输出值y(n),只要知道y(n-1),e(n)、e(n-1)、e(n-2)即可。
式(3.2)还可以表示为下式:
y(n)- y(n-1)=d0*e(n)+d1*e(n-1)+d2*e(n-2) (3.3)
式中:
d0 = KP(1+T/TI+TD/T)
d1 = -KP(1+2TD/T)
d2 = KP*TD/T
将式(3.3)代入(3.2)得:
y(n)=d0*e(n)+d1*e(n-1)+d2*e(n-2)+y(n-1)
上述式子是典型的乘加算式,而DSP具有专门的乘加指令,在DSP上非常容易实现;所以,该式成为PID算法在DSP上实现的依据。
在C5402DSP上实现的PID算法程序包括:PID各参量的初始化,计算偏差值e(n),PID算法处理,e(n) 、y(n)参数更新等。这些功能在DSP上实现较之单片机而言,显得非常方便。
在DSP上实现的程序代码如下。
(1)PID初始化
startpid: SSBX FRCT ;小数方式标志位
STM #en+1, AR1 ;取e(n-1)地址送AR1
RPT #1 ;重复2次
MVPD #table,*AR1+ ;传送初始数据e(n-2),e(n-1)
STM #yn, AR1 ;取y(n-1)地址送AR1
MVPD #table+2,*AR1 ;传送初始数据y(n-1))
STM #Kpid,AR1
RPT #2 ;重复3次
MVPD #table+3,*AR1+ ;传送初始数据d2,d1,d0
(2)PID算法程序
STM #en, AR1 ;取e(n)地址送AR1
LD @Tx, A ;调入温度值
SUB #TSTD, A ;计算温度值与标准值的偏差
STH A, *AR1+ ;输入偏差e(n)
STM #en+2, AR1
STM # Kpid+2, AR2
STM #2, AR0
LD *AR1-, T ;e(n-2)送T
MPY *AR2-, A ;d2* e(n-2)
LTD *AR1- ; e(n-1)送T, e(n-1)送e(n-2)
MAC *AR2-, A ;A+ d1*e(n-1)
LTD *AR1+0 ; e(n)送T, e(n)送e(n-1)
MAC *AR2+0, A
ADD A, @yn, A
STH A, @yn ;保存y(n)
PORTW @yn, PA1
RET
4 结语
在过去的设计中我们选用了80C51 MCU实现了PID温度控制,但由于单片机的运算功能较差,程序实现的效率不够高,实时性不好。本设计中由于选用了性价比高、运算能力强、实时性好的TMS320C5402 DSP来实现PID温度控制算法,取得了较好的控制效果。目前,许多MCU制造厂家在它们的体系结构中增加或扩充了各种 DSP 功能,例如增加了 MAC(乘法累加)指令等。同样,一些 DSP 体系结构也增加了像集成的外围设备、可编程的外部芯片选择连线、中断驱动的 I/O、定时器以及较大的外部存储器等功能部件。将来,对复杂的应用系统,可能不会再明确地区分DSP应用还是MCU应用。因此,DSP与MCU融合的时代即将到来。