摘 要:與通常在嵌入式測(cè)控系統(tǒng)中采用MCU(單片機(jī))相比,TMS320C5402 DSP的運(yùn)算和數(shù)據(jù)處理能力強(qiáng)、實(shí)時(shí)性好,在本設(shè)計(jì)中實(shí)現(xiàn)了較理想的PID溫度控制效果;而且,文中給出了在TMS320C5402 DSP上實(shí)現(xiàn)的數(shù)據(jù)采集程序和PID算法程序的代碼。
關(guān)鍵詞:MCU PID DSP 溫度
1 C5402DSP的應(yīng)用特點(diǎn)
盡管從一般意義上講, 基于MCU(單片機(jī))與DSP(數(shù)字信號(hào)處理器)這兩類器件的系統(tǒng)都有各自的用途,但現(xiàn)在很多新興的嵌入式應(yīng)用,尤其是那些大型的復(fù)雜系統(tǒng),在系統(tǒng)內(nèi)同時(shí)實(shí)現(xiàn)信號(hào)與控制兩種處理,它們既需要DSP的功能又需要MCU的功能。筆者正是基于這種嘗試,在PID溫度控制系統(tǒng)中,將DSP 應(yīng)用到MCU的應(yīng)用場(chǎng)合,取得了較好的控制效果。隨著DSP(數(shù)字信號(hào)處理器)制造技術(shù)的發(fā)展,其成本已經(jīng)下降到較低水平;而DSP的處理速度可滿足控制的實(shí)時(shí)性需求。本設(shè)計(jì)中選用了性價(jià)比高、運(yùn)算能力強(qiáng)、實(shí)時(shí)性好的TMS320C5402 DSP來(lái)實(shí)現(xiàn)PID溫度控制算法。C5402DSP相對(duì)于單片機(jī)的主要優(yōu)勢(shì)在于:首先,C5402DSP采用的是哈佛結(jié)構(gòu),有多組總線分別連接到程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間結(jié)構(gòu),片內(nèi)有三組16bit數(shù)據(jù)總線CB、DB、EB和一組程序總線PB以及對(duì)應(yīng)的4組地址線CBA、DBA、EBA、PBA;其次,具有硬件乘加器,包括一個(gè)17*17bit乘法器和一個(gè)40bit專用加法器,可以在單周期內(nèi)完成乘、加運(yùn)算各一次,運(yùn)算能力很強(qiáng);還有,采用了流水線技術(shù),指令具有6級(jí)流水線,相對(duì)于單片機(jī)而言,速度大大提高;另外,還具有串行口和并行口等外設(shè),可滿足控制的輸入輸出要求。
2 系統(tǒng)硬件結(jié)構(gòu)與工作原理
系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。本設(shè)計(jì)主要分為溫度采集和PID控制兩部分。DSP檢查所得溫度是否超過上下限值,若超過則報(bào)警并轉(zhuǎn)入相應(yīng)處理;否則根據(jù)所要求的標(biāo)準(zhǔn)溫度值計(jì)算采集溫度與標(biāo)準(zhǔn)值的偏差e(n),轉(zhuǎn)入PID算法程序進(jìn)行處理,得到輸出控制信號(hào)y(n),通過y(n)來(lái)控制加熱/降溫裝置進(jìn)行工作,達(dá)到控溫的效果。
[align=center]
圖1 系統(tǒng)結(jié)構(gòu)原理框圖[/align]
3 軟件設(shè)計(jì)
本設(shè)計(jì)主要包括主程序、溫度采集子程序、上下限溫度值查詢子程序、PID子程序等。其中,溫度采集子程序和PID子程序是核心,本文將著重介紹。
3.1 溫度采集程序
DSP芯片通過串口0與單總線溫度傳感器DS18B20的數(shù)據(jù)線相連,對(duì)現(xiàn)場(chǎng)溫度進(jìn)行采集,DSP芯片TMS320C5402通過串口0讀出采集到的溫度并對(duì)它進(jìn)行濾波處理;通過串口1寫中斷,調(diào)用顯示程序進(jìn)行溫度顯示。為便于讀者參考,下面給出DS18B20的DSP溫度讀寫程序。
?。?)DSP寫數(shù)據(jù)子程序
TX0 STM #PCR0,SPSA0
STM #0011001000000010B,McBSP0
RPT #100
NOP
STM #PCR0,SPSA0
STM #0011001000000000B,McBSP0
RPT #1500
NOP
STM #PCR0,SPSA0
STM #0011001000000010B,McBSP0
RET
?。?)DSP讀數(shù)據(jù)子程序
RX STM #PCR0,SPSA0
STM #0011001000000010B,McBSP0
RPT #120
NOP
STM #PCR0,SPSA0
STM #0011001000000000B,McBSP0
RPT #120
STM #PCR0,SPSA0
STM #0011001000000010B,McBSP0
RPT #120
NOP
LD #04H,A
STL A,TMP
PORTW TMP,7H
STM #PCR0,SPSA0
LD McBSP0,A
AND #0001H,A
BC RX1, ANEQ
RSBX C
B RX2
RX1 SSBX C
RX2 ROR B
LD #02H,A
STL A,TMP
PORTW TMP,7H
RET
3.2 PID算法在DSP上的實(shí)現(xiàn)
經(jīng)典PID控制算法的表達(dá)式為:
y(t)=KP*[e(t)+1/ TI *∫e (t)dt+TD *de(t)/dt] (3.1)
式中:
y(t)—調(diào)節(jié)器的輸出信號(hào)
e(t) —調(diào)節(jié)器的偏差信號(hào),它等于給定值與測(cè)量值之差
KP—調(diào)節(jié)器的比例系數(shù)
TI—調(diào)節(jié)器的積分系數(shù)
TD—調(diào)節(jié)器的微分時(shí)間
為了用DSP實(shí)現(xiàn)上式,必須將其離散化,用數(shù)字形式描述為:
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次采樣時(shí)的偏差;
e(n-2) —第n-2次采樣時(shí)的偏差。
由式(3.2)可知,要計(jì)算第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上非常容易實(shí)現(xiàn);所以,該式成為PID算法在DSP上實(shí)現(xiàn)的依據(jù)。
在C5402DSP上實(shí)現(xiàn)的PID算法程序包括:PID各參量的初始化,計(jì)算偏差值e(n),PID算法處理,e(n) 、y(n)參數(shù)更新等。這些功能在DSP上實(shí)現(xiàn)較之單片機(jī)而言,顯得非常方便。
在DSP上實(shí)現(xiàn)的程序代碼如下。
?。?)PID初始化
startpid: SSBX FRCT ;小數(shù)方式標(biāo)志位
STM #en+1, AR1 ;取e(n-1)地址送AR1
RPT #1 ;重復(fù)2次
MVPD #table,*AR1+ ;傳送初始數(shù)據(jù)e(n-2),e(n-1)
STM #yn, AR1 ;取y(n-1)地址送AR1
MVPD #table+2,*AR1 ;傳送初始數(shù)據(jù)y(n-1))
STM #Kpid,AR1
RPT #2 ;重復(fù)3次
MVPD #table+3,*AR1+ ;傳送初始數(shù)據(jù)d2,d1,d0
?。?)PID算法程序
STM #en, AR1 ;取e(n)地址送AR1
LD @Tx, A ;調(diào)入溫度值
SUB #TSTD, A ;計(jì)算溫度值與標(biāo)準(zhǔn)值的偏差
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 結(jié)語(yǔ)
在過去的設(shè)計(jì)中我們選用了80C51 MCU實(shí)現(xiàn)了PID溫度控制,但由于單片機(jī)的運(yùn)算功能較差,程序?qū)崿F(xiàn)的效率不夠高,實(shí)時(shí)性不好。本設(shè)計(jì)中由于選用了性價(jià)比高、運(yùn)算能力強(qiáng)、實(shí)時(shí)性好的TMS320C5402 DSP來(lái)實(shí)現(xiàn)PID溫度控制算法,取得了較好的控制效果。目前,許多MCU制造廠家在它們的體系結(jié)構(gòu)中增加或擴(kuò)充了各種 DSP 功能,例如增加了 MAC(乘法累加)指令等。同樣,一些 DSP 體系結(jié)構(gòu)也增加了像集成的外圍設(shè)備、可編程的外部芯片選擇連線、中斷驅(qū)動(dòng)的 I/O、定時(shí)器以及較大的外部存儲(chǔ)器等功能部件。將來(lái),對(duì)復(fù)雜的應(yīng)用系統(tǒng),可能不會(huì)再明確地區(qū)分DSP應(yīng)用還是MCU應(yīng)用。因此,DSP與MCU融合的時(shí)代即將到來(lái)。
參考文獻(xiàn)
[1] 戴明楨,周建江. TMS320C54x DSP結(jié)構(gòu)、原理及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社, 2001
[2] 潘新民,王燕芳. 單片微型機(jī)算機(jī)實(shí)用系統(tǒng)設(shè)計(jì)[M]. 北京:人民郵電出版社, 1996
[3] 肖洪兵等.跟我學(xué)用單片機(jī)[M].北京:北京航空航天大學(xué)出版社,2002