找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 20181|回復(fù): 20
收起左側(cè)

基于DSP的PID控制算法的實(shí)現(xiàn)

  [復(fù)制鏈接]
ID:208023 發(fā)表于 2017-6-5 15:11 | 顯示全部樓層 |閱讀模式
《數(shù)字信號(hào)處理與DSP應(yīng)用》
課程論文
題目:    基于DSP的PID控制算法的實(shí)現(xiàn)
學(xué) 號(hào):   2011080911
姓 名:             蔡*威         
班 級(jí):   6班         
專 業(yè):          電路與系統(tǒng)        
課程老師:         黃*生         

二零一二年二月二十日

摘 要:按偏差的比例、積分和微分進(jìn)行控制的調(diào)節(jié)器稱為PID調(diào)節(jié)器,PID調(diào)節(jié)器是連續(xù)系統(tǒng)中技術(shù)成熟、應(yīng)用最為廣泛的一種調(diào)節(jié)器。它構(gòu)簡單,參數(shù)易于調(diào)整,在長期的應(yīng)用中已積累了豐富的經(jīng)驗(yàn)。特別在工業(yè)過程中,由于控制對(duì)象的精確數(shù)學(xué)模型難以建立,系統(tǒng)的參數(shù)又經(jīng)常發(fā)生變化,運(yùn)用現(xiàn)代控制理論分析綜合要耗費(fèi)很大的代價(jià)進(jìn)行模型辨識(shí),但往往不能得到預(yù)期的效果,所以人們常采用數(shù)字PID調(diào)節(jié)器,并根據(jù)經(jīng)驗(yàn)進(jìn)行在線整定。這次課程設(shè)計(jì)將綜合用數(shù)字信號(hào)處理DSP以及自動(dòng)控制方面的知識(shí),使用CCS集成開發(fā)環(huán)境進(jìn)行代碼的編譯,仿真,才能完成了本次設(shè)計(jì)。


前言在數(shù)字PID算法是目前一般控制領(lǐng)域中經(jīng)常使用的自動(dòng)控制算法,它依據(jù)給定的設(shè)定值,反饋值,以及比例系數(shù),積分和微分時(shí)間,計(jì)算出一定的控制量,使被控對(duì)象能保持在設(shè)定的工作范圍,并且可以自動(dòng)的消除外部擾動(dòng)。由于軟件系統(tǒng)的靈活性,經(jīng)計(jì)算出的PID參數(shù)可以在調(diào)試過程中隨時(shí)改變。能更精確的控制系統(tǒng)。得到較好的控制效果。PID 控制原理簡單、實(shí)現(xiàn)方便,并且適應(yīng)面廣、魯棒性強(qiáng),其控制品質(zhì)對(duì)被控對(duì)象特性的變化不是很敏感。隨著計(jì)算機(jī)技術(shù)的發(fā)展,在 PID 控制的基礎(chǔ)上,出現(xiàn)了很多改進(jìn)的數(shù)字 PID 控制方法 ,如微分先行 PID 控制、積分分離 PID 控制、帶死區(qū)的PID 控制等。對(duì)于數(shù)字PID 控制方法,又分為增量式 PID 控制算式和位置式 PID 控制算式。在絕大多數(shù)工業(yè)控制中,數(shù)字 PID 控制仍然是一種穩(wěn)定的、可靠的、實(shí)現(xiàn)簡單的、使用廣泛的控制方法。

本設(shè)計(jì)以TI公司的TMS320VC5509和外接 D/ A芯片,實(shí)現(xiàn)數(shù)字 PID 控制器,采用的 PID 控制算法是增量式 PID 控制算法。TMS320VC5509 具有較高的運(yùn)行速度和數(shù)據(jù)處理能力,能保證系統(tǒng)對(duì)多路模擬信號(hào)的實(shí)時(shí)采集和處理,提高系統(tǒng)的整體性能和集成度。在 DSP 內(nèi)部設(shè)置參考輸入量,通過DSP片上 10 位 A/ D 轉(zhuǎn)換器采樣,把控制對(duì)象的實(shí)際輸出量采集到 DSP 中,經(jīng)過DSP 的數(shù)字運(yùn)算處理后,通過外部的 D/ A AD7237 進(jìn)行數(shù)/ 模轉(zhuǎn)換,得到實(shí)際的模擬控制量去控制被控對(duì)象,使之按照系統(tǒng)的設(shè)置運(yùn)行工作。

1、模擬PID調(diào)節(jié)器

模擬PID控制系統(tǒng)組成如圖1所示:

1.003.jpg

             圖1 模擬PID控制系統(tǒng)原理框圖

PID調(diào)節(jié)器是一種線性調(diào)節(jié)器,它將給定值r(t)與實(shí)際輸出值c(t)的偏差的比例(P)、積分(I)、微分(D)通過線性組合構(gòu)成控制量,對(duì)控制對(duì)象進(jìn)行控制。根據(jù)圖1,可以推導(dǎo)出PID調(diào)節(jié)器的微分方程為:

                   1.004.jpg

      式中   1.005.jpg

u(t)——控制器(也稱調(diào)節(jié)器)的輸出;

e(t)——控制器的輸入(常常是設(shè)定值與被控量之差,即e(t)=r(t)-c(t));

Kp——控制器的比例放大系數(shù);

Ti ——控制器的積分時(shí)間;

Td —— 控制器的微分時(shí)間。

1.1 PID調(diào)節(jié)器各校正環(huán)節(jié)的作用

比例環(huán)節(jié):即時(shí)成比例地反應(yīng)控制系統(tǒng)的偏差信號(hào)e(t),偏差一旦產(chǎn)生,調(diào)節(jié)器立即產(chǎn)生控制作用以減小偏差。對(duì)于大多數(shù)調(diào)節(jié)器而言,都不采用比例增益kc作為刻度,而是用比例度來刻度,即δ=1/kc*100%. 也就是說比例度與調(diào)節(jié)器的放大倍數(shù)的倒數(shù)成比例。調(diào)節(jié)器的比例度越小,它的放大倍數(shù)越大,它把偏差放大的能力越大,反之亦然。

積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強(qiáng)弱取決于積分時(shí)間常數(shù)TI,TI越大,積分作用越弱,反之則越強(qiáng)。調(diào)節(jié)器的積分作用就是為了消除自控系統(tǒng)的余差而設(shè)置的。所謂積分,就是隨時(shí)間進(jìn)行累積的意思,即當(dāng)有偏差輸入e存在時(shí),積分調(diào)節(jié)器就要將偏差隨時(shí)間不斷累積起來,也就是積分累積的快慢與偏差e的大小和積分速度成正比。只要有偏差e存在,積分調(diào)節(jié)器的輸出就要改變,也就是說積分作用總是起作用的,只有偏差不存在時(shí),積分才會(huì)停止。

微分環(huán)節(jié):能反應(yīng)偏差信號(hào)的變化趨勢(變化速率),并能在偏差信號(hào)的值變得太大之前,在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度,減小調(diào)節(jié)時(shí)間?梢姡⒎址至繉(duì)偏差的任何變化都會(huì)產(chǎn)生控制作用,以調(diào)整系統(tǒng)輸出,阻止偏差變化,預(yù)見隨后。偏差變化越快,則產(chǎn)生的阻止作用越大。對(duì)于一個(gè)固定不變的偏差e(t),不論其數(shù)值多大,根本不會(huì)有微分作用輸出。

2、 數(shù)字PID控制器
2.1 模擬PID控制規(guī)律的離散
模擬形式
離散化形式
1.006.jpg
1.007.jpg
1.008.jpg
1.009.jpg
1.010.jpg
1.011.jpg
根據(jù)上表和模擬PID的數(shù)學(xué)表達(dá)式,可以退出數(shù)字PID控制器的差分方程為:
1.012.jpg
式中   1.013.jpg                稱為比例項(xiàng)
       1.014.jpg           稱為積分項(xiàng)
       1.015.jpg   稱為微分項(xiàng)
常用的控制方式有
    P控制          1.016.jpg
PI控制          1.017.jpg
PD控制          1.018.jpg
PID控制         1.019.jpg
2.2 PID算法的兩種類
2.2.1 位置型控制
                  1.020.jpg
基本PID控制器的理想算式為
1.021.jpg               
式中 1.022.jpg

u(t)——控制器(也稱調(diào)節(jié)器)的輸出;

e(t)——控制器的輸入(常常是設(shè)定值與被控量之差,即e(t)=r(t)-c(t));

Kp——控制器的比例放大系數(shù);

Ti ——控制器的積分時(shí)間;

Td——控制器的微分時(shí)間。

設(shè)u(k)為第k次采樣時(shí)刻控制器的輸出值,可得離散的PID算式

               1.023.jpg                                                

式中 1.024.jpg ,               1.025.jpg 。

由于計(jì)算機(jī)的輸出u(k)直接控制執(zhí)行機(jī)構(gòu)(如閥門),u(k)的值與執(zhí)行機(jī)構(gòu)的位置(如閥門開度),所以通常稱上式為位置式PID控制算法。

1.026.jpg

圖2 位置式PID控制器流程圖

位置式PID控制算法的缺點(diǎn):當(dāng)前采樣時(shí)刻的輸出與過去的各個(gè)狀態(tài)有關(guān),計(jì)算時(shí)要對(duì)e(k)進(jìn)行累加,運(yùn)算量大;而且控制器的輸出u(k)對(duì)應(yīng)的是執(zhí)行機(jī)構(gòu)的實(shí)際位置,如果計(jì)算機(jī)出現(xiàn)故障,u(k)的大幅度變化會(huì)引起執(zhí)行機(jī)構(gòu)位置的大幅度變化。

2.2.2增量型控制
增量型PID算法的算式為:
1.027.jpg
或者寫成
            1.028.jpg
        式中 1.029.jpg , 1.030.jpg , 1.031.jpg

增量式PID是指數(shù)字控制器的輸出只是控制量的增量Δu(k)。采用增量式算法時(shí),計(jì)算機(jī)輸出的控制量Δu(k)對(duì)應(yīng)的是本次執(zhí)行機(jī)構(gòu)位置的增量,而不是對(duì)應(yīng)執(zhí)行機(jī)構(gòu)的實(shí)際位置,因此要求執(zhí)行機(jī)構(gòu)必須具有對(duì)控制量增量的累積功能,才能完成對(duì)被控對(duì)象的控制操作。執(zhí)行機(jī)構(gòu)的累積功能可以采用硬件的方法實(shí)現(xiàn);也可以采用軟件來實(shí)現(xiàn),如利用算式 1.032.jpg 程序化來完成。

由上式可得增量式PID控制算式

1.033.jpg             

式中 1.034.jpg

進(jìn)一步可以改寫成

1.035.jpg                                                                                                 

式中 1.036.jpg 、 1.037.jpg 、 1.038.jpg

一般計(jì)算機(jī)控制系統(tǒng)的采樣周期T在選定后就不再改變,所以,一旦確定了Kp、Ti、Td,只要使用前后3次測量的偏差值即可求出控制增量。

根據(jù)上述分析,其程序流程圖如下:

1.039.jpg

圖3 增量型控制算法路程圖

增量式算法優(yōu)點(diǎn):①算式中不需要累加。控制增量Δu(k)的確定僅與最近3次的采樣值有關(guān),容易通過加權(quán)處理獲得比較好的控制效果;②DSP每次只輸出控制增量,即對(duì)應(yīng)執(zhí)行機(jī)構(gòu)位置的變化量,故機(jī)器發(fā)生故障時(shí)影響范圍小、不會(huì)嚴(yán)重影響生產(chǎn)過程。

經(jīng)過綜合比較,最終選擇了增量式控制算法。

3.系統(tǒng)軟硬件設(shè)計(jì)
3.1硬件設(shè)計(jì)

為了實(shí)現(xiàn)上述控制算法,還需要硬件電路才行,設(shè)計(jì)電路原理圖如圖4所示:

從圖4 中可以看出,模擬量輸入,也即被控電機(jī)的實(shí)際輸出轉(zhuǎn)速,通過一個(gè)限流電阻 R 送到由 AD8041 構(gòu)成的電壓跟隨器里,經(jīng)過放大后,再經(jīng)二極管D1 和 D2嵌位以及電阻 R 限流,送到TMS320VC5509片上的 A/D 轉(zhuǎn)換其中使得 A/D 的輸入限制在 0~3 300 mV。TMS320VC5509 一共有16 路復(fù)用的片上 A/D 轉(zhuǎn)換器,本實(shí)例只采用第 0 通道的A/D轉(zhuǎn)換。由DSP計(jì)算出控制量,通過外部數(shù)據(jù)總線送給D/ A 轉(zhuǎn)換器,采用 AD 公司的 AD7237 芯片,他是 8 位 D/ A 轉(zhuǎn)換器,由DSP的外部地址總線A2 ,A1 ,A0 構(gòu)成D/ A轉(zhuǎn)換器的譯碼電路,D/ A轉(zhuǎn)換器的輸出采用AD7237 的A相輸出。TMS320VC5509 由外部提供復(fù)位信號(hào),由無源晶振提供6 MHz時(shí)鐘。片上 A/D 轉(zhuǎn)換器的參考電壓高電平 V 接DSP電源+3.3 V 。

1.040.jpg

圖4  DSP實(shí)現(xiàn)數(shù)字PID控制器的電路原理圖

3.2 軟件設(shè)計(jì)

本設(shè)計(jì)運(yùn)用了CCSV3.3軟件,它是一個(gè)完整的DSP集成開發(fā)環(huán)境,CCS支持軟仿真器、各種型號(hào)的硬仿真器、各種DSK和EVM板。

[11]CCS主要特點(diǎn)有:集成可視化代碼編輯界面,可以方便地直接編寫C、匯編、.h文件、.cmd文件等;集成代碼生成工具,包括匯編器、優(yōu)化的C編譯器和連接器等;具有完整的基本調(diào)試工具,可以載入執(zhí)行文件(.out),查看寄存器窗口、存儲(chǔ)器窗口和變量窗口、反匯編窗口等,支持在C源代碼級(jí)進(jìn)行調(diào)試;支持多片DSP聯(lián)合調(diào)試;

斷點(diǎn)工具,支持硬件斷點(diǎn)、數(shù)據(jù)空間讀/寫斷點(diǎn)、條件斷點(diǎn)等;探針工具(probe points),用于進(jìn)行算法仿真,數(shù)據(jù)監(jiān)視等;剖析工具(profile pionts),用于評(píng)估代碼執(zhí)行的時(shí)間;數(shù)據(jù)圖形顯示工具,可繪制時(shí)域/頻域波形、眼圖、星座圖等,并可以自動(dòng)刷新;提供GEI二工具,用戶可以根據(jù)需要編寫自己的控制面板/菜單,從而方便直觀地修改變量,配置參數(shù)。支持RTDX(Real time date exchange)技術(shù),利用該技術(shù)可以在不中斷目標(biāo)系統(tǒng)運(yùn)行的情況下,實(shí)現(xiàn)DSP與其它應(yīng)用程序(OLE)實(shí)現(xiàn)數(shù)據(jù)交換,具有開放式的plug-ins技術(shù),支持其它第三方的ActiveX插件。提供DSP、BIOS工具,利用該工具可增強(qiáng)對(duì)代碼的實(shí)時(shí)分析能力,減少開發(fā)人員對(duì)硬件資源熟悉程度的依賴性。

1.041.jpg

圖5 代碼調(diào)試與編譯

為了驗(yàn)證算法的可行性,現(xiàn)建立數(shù)字PID直流電機(jī)控制模型,然后用Matlab的LTI狀態(tài)分析工具箱進(jìn)行仿真,并繪制轉(zhuǎn)速及控制電壓變化圖形。

1.042.jpg
                   圖6 數(shù)字PID仿真模型
            
              利用Matlab軟件和 LTI工具箱函數(shù),仿真源程序代碼如下:
clear all;
close all;
ts=0.01;                      %采樣時(shí)間=0.001s
sys=tf(2652,[1,25,490]);      %建立被控對(duì)象傳遞函數(shù)
dsys=c2d(sys,ts,'z');         %把傳遞函數(shù)離散化
[num,den]=tfdata(dsys,'v');   %離散化后提取分子、分母
e_1=0                         %上一偏差      
Ee=0;                         %偏差累計(jì)
u_1=0.0;                      %上一狀態(tài)電壓
u_2=0.0;
y_1=0;                        %上一狀態(tài)輸出
y_2=0;
kp=2.5;                       %PID參數(shù)
ki=0.04;                        
kd=0.28;                        
for k=1:100
time(k)=k*ts;                  %時(shí)間參數(shù)
r(k)=500;                     %給定值
    y(k)=-1*den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
    e(k)=r(k)-y(k);          %偏差
    u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
    if u(k)>220
        u(k)=220;
    end
    if u(k)<=0
        u(k)=0;
    end      
    Ee=Ee+e(k);   
    u_2=u_1;
    u_1=u(k);   
    y_2=y_1;
    y_1=y(k);   
    e_2=e_1;
    e_1=e(k);
end
hold on;
plot(time,r,'r',time,y,'b',time,u,'r');
[kp,ki,kd];
程序調(diào)試好后,分別改變kp、ki和kd的參數(shù)值,看輸出圖形有何變化,理解PID控制中比例、積分和微分對(duì)控制系統(tǒng)的作用。
1.043.jpg
                   圖7  Matlab中仿真圖A
1.044.jpg
圖8 Matlab中仿真圖B
4 分析與結(jié)論
通過本次課程設(shè)計(jì)的軟件仿真與調(diào)試,才更加深刻的領(lǐng)悟了數(shù)字PID控制算法的精髓,使得理論得到了很好的驗(yàn)證,從而是我鞏固了所學(xué)知識(shí),得到了專業(yè)技能的鍛煉和提高。
5 參考文獻(xiàn)
[1] 胡壽松  自動(dòng)控制原理  北京:科學(xué)出版社
[2] 童詩白、華成英  模擬電子技術(shù)基礎(chǔ)  北京:高等教育出版社
[3] 黃忠霖 控制系統(tǒng)MATLAB設(shè)計(jì)與仿真 北京:國防工業(yè)出版社
[4] 謝劍英、賈青 微型計(jì)算機(jī)控制技術(shù) 北京:國防工業(yè)出版社
[5]趙洪亮.TMS320C55X DSP 應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.
[6]王獻(xiàn)峰,石東.基于DSP的FIR數(shù)字濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].通信電源技術(shù),2006,23(4):38-40.
[7]張雄偉.DSP芯片的原理與開發(fā)應(yīng)用(第三版)[M].北京:電子工業(yè)出版社,2003.
[8]丁玉美.數(shù)字信號(hào)處理(第二版)[M].西安:西安電子科技大學(xué)出版社,2005.
[9]楊大柱.基于TMS320C5510的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(17).
[10]陳懷琛.MATLAB及其在理工課程中的應(yīng)用指南[M].西安:西安電子科技大學(xué)出版社,2007.

附錄:源程序代碼

  1. /*****************************************************************
  2. PID Function
  3. The PID (比例、積分、微分) function is used in mainly
  4. control applications. PIDCalc performs one iteration of the PID
  5. algorithm.
  6. While the PID function works, main is just a dummy program showing
  7. a typical usage.
  8. ****************************************************************/
  9. /****************************頭文件******************************/
  10. #include "DSP28_Device.h"
  11. #include "System.h"
  12. #include "DSP28_Adc.h"

  13. typedef struct PID {
  14. double SetPoint;                        // 設(shè)定目標(biāo)Desired value
  15. double Proportion;                      // 比例常數(shù)Proportional Const
  16. double Integral;                        // 積分常數(shù)Integral Const
  17. double Derivative;                      // 微分常數(shù)Derivative Const
  18. double LastError;                       // Error[-1]
  19. double PrevError;                       // Error[-2]
  20. double SumError;                       // Sums of Errors
  21. } PID;
  22. /*********************PID計(jì)算部分*********************************/
  23. double PIDCalc( PID *pp, double NextPoint )
  24. {
  25. double dError,
  26. Error;
  27. Error = pp->SetPoint - NextPoint;                          // 偏差
  28. pp->SumError += Error;                                  // 積分
  29. dError = pp->LastError - pp->PrevError;                    // 當(dāng)前微分
  30. pp->PrevError = pp->LastError;
  31. pp->LastError = Error;
  32. return (pp->Proportion * Error                             // 比例項(xiàng)
  33. + pp->Integral * pp->SumError                            // 積分項(xiàng)
  34. + pp->Derivative * dError );                               // 微分項(xiàng)
  35. }

  36. /**********************Initialize PID Structure************************/
  37. void PIDInit (PID *pp)
  38. {
  39. memset ( pp,0,sizeof(PID));
  40. }

  41. /********************Main Program*********************************/
  42. double sensor (void)                                     // Dummy Sensor Function
  43. {
  44. return 100.0;
  45. }
  46. void actuator(double rDelta)                             // Dummy Actuator Function
  47. {}

  48. void InitAdc(void)
  49. {
  50. unsigned int i;
  51. AdcRegs.ADCTRL1.bit.RESET=1;
  52. NOP;
  53. AdcRegs.ADCTRL1.bit.RESET=0;                      //重新設(shè)置
  54. AdcRegs.ADCTRL1.bit.SUSMOD=3;              //設(shè)置仿真掛起模式 3,
  55. AdcRegs.ADCTRL1.bit.ACQ_PS=0;
  56. AdcRegs.ADCTRL1.bit.CPS=0;
  57. //對(duì)高速時(shí)鐘 HSPCLK 分頻,=0 時(shí),不分頻,=1 時(shí),二分頻
  58. AdcRegs.ADCTRL1.bit.CONT_RUN=0;             //開始-----停止模式
  59. AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
  60. //級(jí)聯(lián)模式,SEQ1 和 SEQ2 作為一個(gè) 16 狀態(tài)排序器工作。
  61. AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;           //帶隙和參考電路上電for(i=0;i<10000;i++) NOP;
  62. AdcRegs.ADCTRL3.bit.ADCPWDN=1;
  63. //除帶隙和參考電路外的 ADC 其它模擬電路上電
  64. for(i=0;i<5000;i++)  NOP;
  65. AdcRegs.ADCTRL3.bit.ADCCLKPS=15;
  66.                                             //時(shí)鐘分頻 ADCCLKPS=HSPCLKPS/[2*15*(ADCTRL1[7]+1)]
  67. AdcRegs.ADCTRL3.bit.SMODE_SEL=1;           //選擇同步采樣模式

  68. AdcRegs.MAX_CONV.bit.MAX_CONV=0;           //設(shè)置轉(zhuǎn)換通道0
  69. AdcRegs.CHSELSEQ1.bit.CONV00=0;
  70. AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;   //清除 SEQ1 的中斷標(biāo)志位
  71. AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;   //清除 SEQ2 的中斷標(biāo)志位
  72. AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;      //無作用
  73. AdcRegs.ADCTRL2.bit.RST_SEQ1=0;      
  74. //將排序器立即復(fù)位到 CONV00 狀態(tài)
  75. AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;  //使能 INT_SEQ1 的中斷請(qǐng)求
  76. AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
  77.                                           //每個(gè) SEQ1 序列結(jié)束時(shí),INT_SEQ1 置位
  78. AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;    //EVA 的觸發(fā)信號(hào)不啟動(dòng) SEQ1
  79. AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;    //無操作
  80. AdcRegs.ADCTRL2.bit.RST_SEQ2=0;        //無操作
  81. AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;         //清除一個(gè)掛起的 SOC 觸法
  82. AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;     //禁止 INT_SEQ2 產(chǎn)生的中斷請(qǐng)求
  83. AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
  84. //每個(gè) SEQ2 結(jié)束時(shí),INT_SEQ2 置位
  85. AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;   
  86. //EVB 的觸發(fā)信號(hào)不啟動(dòng) SEQ2
  87. AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
  88. //軟件觸法,從當(dāng)前停止的位置啟動(dòng) SEQ1

  89. void main(void)
  90. {
  91. PID sPID;                                // PID Control Structure
  92. double rOut;                             // PID Response (Output)
  93. double rIn;                              // PID Feedback (Input)
  94. PIDInit ( &sPID );                        // Initialize Structure
  95. sPID.Proportion = 0.5;                    // Set PID Coefficients
  96. sPID.Integral = 0.5;
  97. sPID.Derivative = 0.0;
  98. sPID.SetPoint = 100.0;                    // Set PID Setpoint
  99. for (;;) {                                // Mock Up of PID Processing
  100. rIn = sensor ();                           // Read Input
  101. rOut = PIDCalc ( &sPID,rIn );               // Perform PID Interation
  102. actuator ( rOut );                         // Effect Needed Changes
  103. while(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY==0)
  104. {
  105. AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
  106. }     //只要 SEQ1 不忙,那么就啟動(dòng) SOC_SEQ1
  107. }
  108. /*********************AD 中斷服*********************************/

  109. interrupt void ad(void)
  110. {      
  111.    PieCtrl.PIEACK.bit.ACK1=1;               //采集 ADC0 通道的數(shù)據(jù)     
  112. ADtemp[adflag]=(AdcRegs.RESULT0>>4)&0x0fff;
  113. //右移四位,減小誤差
  114.                     //RESULT 寄存器的低四位為無效位,故應(yīng)右移四位
  115.         adflag++;
  116.         if(adflag==MAX_DATA)
  117. {
  118.           adflag=0;
  119. }
  120.      AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;    //清除中斷標(biāo)志位
  121.      AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;      

  122. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整論文下載(word格式 可編輯):
基于DSP的PID控制算法的實(shí)現(xiàn).doc (477 KB, 下載次數(shù): 375)



回復(fù)

使用道具 舉報(bào)

ID:88957 發(fā)表于 2017-7-10 22:54 | 顯示全部樓層
學(xué)習(xí)了。謝謝!
回復(fù)

使用道具 舉報(bào)

ID:325305 發(fā)表于 2018-5-8 18:37 | 顯示全部樓層
良心大佬
回復(fù)

使用道具 舉報(bào)

ID:247467 發(fā)表于 2018-5-11 09:02 | 顯示全部樓層
謝謝分享資源
回復(fù)

使用道具 舉報(bào)

ID:47428 發(fā)表于 2018-5-21 20:20 | 顯示全部樓層
好東西
回復(fù)

使用道具 舉報(bào)

ID:341109 發(fā)表于 2018-5-30 09:10 | 顯示全部樓層
學(xué)習(xí)中。。!
回復(fù)

使用道具 舉報(bào)

ID:345500 發(fā)表于 2018-7-5 08:09 | 顯示全部樓層
很不錯(cuò),先Mark
回復(fù)

使用道具 舉報(bào)

ID:367123 發(fā)表于 2018-7-8 02:27 | 顯示全部樓層
資料不錯(cuò)  參考了
回復(fù)

使用道具 舉報(bào)

ID:417534 發(fā)表于 2018-10-29 20:43 | 顯示全部樓層
學(xué)習(xí)了。謝謝!
回復(fù)

使用道具 舉報(bào)

ID:399475 發(fā)表于 2019-4-26 09:06 來自手機(jī) | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:524173 發(fā)表于 2019-4-30 11:34 | 顯示全部樓層
不錯(cuò)的資料!。。。。。。!
回復(fù)

使用道具 舉報(bào)

ID:517387 發(fā)表于 2019-5-29 16:20 | 顯示全部樓層
System.h文件發(fā)一下唄。。這個(gè)在哪里找
回復(fù)

使用道具 舉報(bào)

ID:552849 發(fā)表于 2019-6-2 10:08 | 顯示全部樓層
請(qǐng)問一下作者利用MATLAB的LTI工具箱調(diào)試的時(shí)候,傳遞函數(shù)是自己嘗試給的還是從電路圖中看出來的,如果是來源于電路圖,能不能有個(gè)大佬解釋一下
回復(fù)

使用道具 舉報(bào)

ID:636505 發(fā)表于 2019-11-6 09:45 | 顯示全部樓層
很需要這個(gè),謝謝,過幾天再來下載
回復(fù)

使用道具 舉報(bào)

ID:636605 發(fā)表于 2019-11-6 11:36 來自手機(jī) | 顯示全部樓層
受教了
回復(fù)

使用道具 舉報(bào)

ID:438263 發(fā)表于 2020-6-13 17:05 | 顯示全部樓層
學(xué)習(xí)先靠后,先整個(gè)文檔
回復(fù)

使用道具 舉報(bào)

ID:438263 發(fā)表于 2020-6-13 17:13 | 顯示全部樓層
好像差點(diǎn)東西
回復(fù)

使用道具 舉報(bào)

ID:806006 發(fā)表于 2020-7-20 20:29 | 顯示全部樓層
學(xué)習(xí)了。。∠胍螺d文檔來看
回復(fù)

使用道具 舉報(bào)

ID:872450 發(fā)表于 2021-1-9 22:50 來自手機(jī) | 顯示全部樓層
這個(gè)不錯(cuò)!讓后人受益匪淺。為你點(diǎn)贊
回復(fù)

使用道具 舉報(bào)

ID:1122579 發(fā)表于 2024-5-27 21:28 | 顯示全部樓層
mengsx 發(fā)表于 2018-5-30 09:10
學(xué)習(xí)中!。!

加油加油加油
回復(fù)

使用道具 舉報(bào)

ID:228360 發(fā)表于 2024-9-27 23:04 | 顯示全部樓層
謝謝分享,有空試驗(yàn)一下.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表