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