PID控制課程設計.doc
《PID控制課程設計.doc》由會員分享,可在線閱讀,更多相關《PID控制課程設計.doc(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
大 連 海 事 大 學課 程 設 計課 程 控制工程軟件課程設計 題 目 離散系統(tǒng)的數(shù)字PID控制仿真 院 系 信息科學技術學院 專業(yè)班級 自動化一班 學生姓名 張亞婷 學生學號 2220142511 指導教師 徐慧樸 2016年 1月 13日大連海事大學課程設計任務書課程 控制工程軟件課程設計 題目 離散系統(tǒng)的數(shù)字PID控制仿真 專業(yè) 自動化一班 姓名 張亞婷 學號 2220142511 主要內容: 控制對象為采樣時間為1ms,針對離散系統(tǒng)的階躍信號、正弦信號和方波信號的位置響應,設計離散的位置式PID控制器。其中S為信號選擇變量,并對控制器的輸出進行進行限幅:-10,-10。基本要求:(1) 設計可視化窗口實現(xiàn); (2)系統(tǒng)輸入信號可選擇,完成對PID參數(shù),系統(tǒng)階次的調節(jié);(3)顯示誤差大?。唬?)完成全系統(tǒng)的詳細分析設計報告。參考資料: 1 鄭阿奇,曹戈.MATLAB實用教程(第三版)M.北京:電子工業(yè)出版社 2 網(wǎng)上查找離散系統(tǒng)的PID參數(shù)調節(jié)相關資料完成時間 2016.1.32016.1.13 學生 (簽名) 指導教師 (簽名)專業(yè)負責人 (簽名)2016年1月 13 日目錄1設計要求12方案設計12.1設計思路12.2總體方案方框圖12.3基本原理23位置式PID算法及其仿真33.1位置式PID算法原理33.2不同輸入下的仿真界面結果顯示64增量式PID算法及其仿真74.1增量式PID算法原理74.2 不同輸入下的仿真界面結果顯示85調節(jié)PID參數(shù)得到最優(yōu)解106位置式PID和增量式PID比較127 總結13參考文獻14附錄151設計要求控制對象為采樣時間為1ms,針對離散系統(tǒng)的階躍信號、正弦信號和方波信號的位置響應,設計離散的位置式PID控制器。其中S為信號選擇變量,S=1時為階躍跟蹤,S=2時為方波跟蹤,S=3為正弦跟蹤。對控制器的輸出進行限幅:-10,10。要求:(1)系統(tǒng)的階次和系數(shù)可調;(2)PID參數(shù)可調;(3)用兩種方式顯示離散系統(tǒng)的數(shù)字PID控制仿真,并顯示誤差; (4)用MATLAB編寫成為可視化窗口實現(xiàn)上述功能;2方案設計2.1設計思路(1) 根據(jù)設計要求,理解PID控制的原理,確定控制仿真的方式為位置式和增量式兩種典型形式。(2) 建立可視化窗口界面,設計顯示界面,產生對應的腳本,編輯回調函數(shù),首先獲得可變的PID參數(shù),再獲得可變的分子分母系數(shù)。(3) 最后編輯顯示誤差值。優(yōu)化顯示界面,并調節(jié)擬合程度最好的PID參數(shù)。2.2總體方案方框圖比例yout(k)被控對象ran(k) Y(k)ff積分 微分圖1 基本原理框圖2.3基本原理總體基本原理框圖如圖1所示。PID控制器是一種線性控制器,它根據(jù)給定值rin(t)與實際的輸出值yout(t)構成偏差 PID的控制規(guī)律為 或寫成傳遞函數(shù)的形式為式中,比例系數(shù);積分時間常數(shù);微分時間常數(shù)。PID控制器各個校正環(huán)節(jié)的作用如下:(1) 比例環(huán)節(jié):成比例的反應控制系統(tǒng)的偏差信號。偏差一旦產生,控制器立即產生控制作用,以減少偏差。(2) 積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強弱主要取決于積分時間常數(shù),越大,積分作用越弱,反之則越強。(3) 微分環(huán)節(jié):反應偏差信號的變化趨勢(變化速率),并能在偏差信號變得太大之前,在系統(tǒng)中引入一個有效的早期修正信號。從而加快系統(tǒng)的動作速率,減少調節(jié)時間。3 位置式PID控制算法及其仿真3.1位置式PID算法原理yuer受控對象PID位置算法 + 位置式PID控制算法的簡化示意圖 d dteu上圖傳遞函數(shù)為: 在時域的傳遞函數(shù)表達式 對上式中的微分和積分進行近似: 式中n是離散點的個數(shù)于是傳遞函數(shù)可以簡化為: 其中 u(n)第k個采樣時刻的控制:比例放大系數(shù);積分放大系數(shù);微分放大系數(shù);T 采樣周期。如果采樣周期足夠小,則近似計算可以得到足夠精確的結果,離散控制結果和連續(xù)系統(tǒng)十分接近。它表示的控制算法直接按所給的PID控制規(guī)律定義進行計算的,所以它給出了全部控制量的大小,因此被稱為位置式PID控制算法。控制對象為 采樣時間為1ms,采用z變換進行離散化,經(jīng)過z變換后的離散化對象為 控制算法程序框圖可如下所示:開始 參數(shù)初始化 采入rin(k)和yout(k) 計算偏差值 計算控制器輸出 參數(shù)更新 返回程序及其批注見附錄所示。3.2不同輸入下的仿真界面結果顯示S=1時輸入為階躍的結果S=2時輸入為方波的結果S=3時輸入為正弦的結果4增量式PID算法及其仿真4.1增量式PID算法原理當我們把離散系統(tǒng)看做相等的增量值時間增加時,可以用增量式PID控制算法根據(jù)遞推原理可得 增量式PID控制算法 我們可以看出,如果我們采用恒定的采樣周期T,只要只用前后三次測量的偏差,就可以得到控制量。PID算法的流程圖如下所示 開始讀取給定值r(k) 計算偏差e(k)=r(k)-y(k)計算 存以備輸出參數(shù)傳遞 返回程序以及注釋見附錄4.2不同輸入下的界面仿真顯示S=1時階躍輸入S=2方波輸入時S=3正弦輸入時5. 調節(jié)PID控制器參數(shù)得到最優(yōu)解比例控制:就是對偏差進行控制,偏差一旦產生,控制器立即就發(fā)生作用即調節(jié)控制輸出,使被控量朝著減小偏差的方向變化,偏差減小的速度取決于比例系數(shù)Kp, Kp越大偏差減小的越快,但是很容易引起振蕩,尤其是在遲滯環(huán)節(jié)比較大的情況下,Kp減小,發(fā)生振蕩的可能性減小但是調節(jié)速度變慢。但單純的比例控制存在靜差不能消除的缺點。這里就需要積分控制。積分控制:實質上就是對偏差累積進行控制,直至偏差為零。積分控制作用始終施加指向給定值的作用力,有利于消除靜差,其效果不僅與偏差大小有關,而且還與偏差持續(xù)的時間有關。簡單來說就是把偏差積累起來,一起來運算。 微分控制:它能敏感出誤差的變化趨勢,可在誤差信號出現(xiàn)之前就起到修正誤差的作用,有利于提高輸出響應的快速性,減小被控量的超調和增加系統(tǒng)的穩(wěn)定性。但微分作用很容易放大高頻噪聲,降低系統(tǒng)的信噪比,從而使系統(tǒng)抑制干擾的能力下降。因此,在實際應用中,應慎用微分控制。 調節(jié)的過程中首先使得積分和微分系數(shù)為0,首先調節(jié)比例系數(shù),得到臨界震蕩的Kp,再調節(jié)Ki由大到小調節(jié),消除靜差,最后調節(jié)Kd,減小調節(jié)時間,最后得到最優(yōu)的控制器參數(shù),其誤差不一定最小。以下為階躍輸入下調節(jié)的最優(yōu)參數(shù)位置式增量式6. 位置式PID和增量式PID的比較整體圖形用戶界面如下所示:位置式PID控制算法的缺點:當前采樣時刻的輸出與過去的各個狀態(tài)有關,計算時要對e(k)即誤差進行累加,運算量大;而且控制器的輸出u(k)對應的是執(zhí)行機構的實際位置,如果計算機出現(xiàn)故 障,u(k)的大幅度變化會引起執(zhí)行機構位置的大幅度變化。增量式PID是數(shù)字控制器的輸出只是控制量的增量u(k)。采用增量式算法時,計算機輸出的控制量u(k)對應的是本次執(zhí)行機構位置的增量,而不是對應執(zhí)行機構的實際位置,因此要求執(zhí)行機構必須具有對控制量增量的累積功能,才能完成對被控對象的控制操作。 增量式算法優(yōu)點:算式中不需要累加。控制增量u(k)的確定僅與最近3次的采樣值有關,容易通過加權處理獲得比較好的控制效果;計算機每次只輸出控制增量,即對應執(zhí)行機構位置的變化量,故機器發(fā)生故障時影響范圍小、不會嚴重影響生產過程;手動自動切換時沖擊小。當控制從手動向自動切換時,可以作到無擾動切換。7 總結1. 就實現(xiàn)要求的用戶圖形界面來說,設計整體布局,以及實現(xiàn)需要的功能需要的圖形對象面板工具常用控件的選擇,雖然選擇是比較自由的,方式也是多樣的,第一次做位置式時我選擇了一組按鈕,來切換輸入信號。在做第二種增量式時,希望得到更多的方式或者學到不同常用控件的實用方法,我選擇了設定一組單選按鈕,用了兩種語句來實現(xiàn),一種是ifelse語句,一種是switch語句,兩種方法都可以實現(xiàn)單選按鈕的功能。2. 就PID控制系統(tǒng)而言,除了自動控制原理課堂上的,通過這次課程設計對于PID有了更加深刻的認識,對于其在矯正系統(tǒng)功能方面有了更加系統(tǒng)的認知,也進一步揭開了其常被應用的面紗。3. 離散系統(tǒng)的分析源自于連續(xù)系統(tǒng)的離散,首先進行離散化z變換,知道了位置式和增量式的區(qū)別最重要的在于位置式的變化和之前的每一個時刻都有關系,而增量式的只和最近三次的增量有關系。4. 這個課程設計鍛煉了我的思考和查閱資料的能力。 參考文獻1 鄭阿奇,曹戈.MATLAB實用教程(第三版)M.北京:電子工業(yè)出版社 附錄主程序:function varargout = PID(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, PID_OpeningFcn, . gui_OutputFcn, PID_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction PID_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = PID_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function jieyue_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String);ki=str2double(get(handles.Ki,String);kd=str2double(get(handles.Kd,String);axes(handles.tu1); %選坐標軸1作圖nums=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);out=PIDcontrol(1,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function fangbo_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String); ki=str2double(get(handles.Ki,String);kd=str2double(get(handles.Kd,String);axes(handles.tu1);%選坐標軸1作圖nums=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);out=PIDcontrol(2,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function zhengxian_Callback(hObject, eventdata, handles)kp=str2double(get(handles.Kp,String);ki=str2double(get(handles.Ki,String);kd=str2double(get(handles.Kd,String);axes(handles.tu1);%選坐標軸1作圖nums=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);out=PIDcontrol(3,kp,ki,kd,nums,dens);set(handles.error,String,num2str(out);function Kp_Callback(hObject, eventdata, handles)function Kp_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Ki_Callback(hObject, eventdata, handles)function Ki_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Kd_Callback(hObject, eventdata, handles)function Kd_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction error_Callback(hObject, eventdata, handles)function error_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction den_Callback(hObject, eventdata, handles)function den_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction num_Callback(hObject, eventdata, handles)function num_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction tuichu_Callback(hObject, eventdata, handles)ss=questdlg(你真的要退出嗎?,退出窗口,不,我還想看看!,是的,我要退出!,是的,我要退出!);switch sscase 是的,我要退出!delete(handles.figure1);endfunction Kp1_Callback(hObject, eventdata, handles)function Kp1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Ki1_Callback(hObject, eventdata, handles)function Ki1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction Kd1_Callback(hObject, eventdata, handles)function Kd1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction error1_Callback(hObject, eventdata, handles)function error1_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction jieyue1_Callback(hObject, eventdata, handles)function fangbo1_Callback(hObject, eventdata, handles)function zhengxian1_Callback(hObject, eventdata, handles)function uibuttongroup2_SelectionChangedFcn(hObject, eventdata, handles)kp1=str2double(get(handles.Kp1,String);ki1=str2double(get(handles.Ki1,String);kd1=str2double(get(handles.Kd1,String);nums=str2num(get(handles.num,String);dens=str2num(get(handles.den,String);S_3=get(handles.zhengxian1,Value);S_2=get(handles.fangbo1,Value);S_1=get(handles.jieyue1,Value);axes(handles.tu2); %選坐標軸2作圖if S_3=1 out1=PIDcontrol1(3,kp1,ki1,kd1,nums,dens);elseif S_2=1 out1=PIDcontrol1(2,kp1,ki1,kd1,nums,dens);elseif S_1=1 out1=PIDcontrol1(1,kp1,ki1,kd1,nums,dens);end set(handles.error1,String,num2str(out1);% axes(handles.tu2); %選坐標軸2作圖% kp1=str2double(get(handles.Kp1,String);% ki1=str2double(get(handles.Ki1,String);% kd1=str2double(get(handles.Kd1,String);% nums=str2num(get(handles.num,String);% dens=str2num(get(handles.den,String);% n = get(handles,Tag);% switch n% case jieyue1% out1=PIDcontrol1(1,kp1,ki1,kd1,nums,dens);% case fangbo1% out1=PIDcontrol1(2,kp1,ki1,kd1,nums,dens);% case zhengxian1% out1=PIDcontrol1(3,kp1,ki1,kd1,nums,dens);% end% set(handles.error1,String,num2str(out1);位置式調用程序:function out=PIDcontrol(S,kp,ki,kd,nums,dens)ts=0.001; %采樣時間sys=tf(nums,dens);dsys=c2d(sys,ts,z); %將系統(tǒng)離散化num,den=tfdata(dsys,v); %獲取離散后的分子分母系數(shù)n=length(den);for i=1:(n-1) u_(i)=0;y_(i)=0;endx=0,0,0;error_1=0; %初始偏差設置為0out=0; %初始誤差和為0for k=1:1000; time(k)=k*ts; %采樣時刻 if S=1 %階躍信號 rin(k)=1; elseif S=2 %方波信號 rin(k)=sign(sin(2*2*pi*k*ts); elseif S=3 %正弦波信號 rin(k)=0.5*sin(2*2*pi*k*ts); end u_(k)=kp*x(1)+kd*x(2)+ki*x(3); %控制器輸出,根據(jù)離散PID表達式 if u_(k)=10 %限幅 u_(k)=10; end if u_(k)=10u(k)=10;endif u(k)=-10u(k)=-10;endyout(k)=0;for j=2:1:m yout(k)=yout(k)-den(j)*y(j-1)+num(j)*u_(j-1);enderror(k)=rin(k)-yout(k); %誤差等于期望減去實際for i=m-1:-1:2 u_(i)=u_(i-1); y(i)=y(i-1);endu_(1)=u(k);y(1)=yout(k);x(1)=error(k)-error_(1); %此刻誤差減去上一刻的誤差x(2)=error(k);x(3)=error(k)-2*error_(1)+error_(2); %下一個位置控制器輸出P I D系數(shù)和此刻誤差和上一個位置誤差的關系error_(2)=error_(1);error_(1)=error(k); %誤差在參數(shù)之間的傳遞out1=out1+error(k)2; %誤差的積累endout1=out1/1000; plot(time,rin,b,time,yout,r);xlabel(time(s);ylabel(rin,yout); 大連海事大學課程設計成績評價表課程名稱控制工程軟件課程設計題目名稱離散系統(tǒng)的數(shù)字PID控制仿真學生姓名 張亞婷學號 2220142511指導教師姓名 徐慧樸職稱 序號評價項目指 標滿分評分1工作量、工作態(tài)度和出勤率按期圓滿的完成了規(guī)定的任務,難易程度和工作量符合教學要求,工作努力,遵守紀律,出勤率高,工作作風嚴謹,善于與他人合作。202課程設計質量與總結報告課程設計選題合理,計算過程簡練準確,分析問題思路清晰,結構嚴謹,文理通順,撰寫規(guī)范,圖表完備正確。403創(chuàng)新工作中有創(chuàng)新意識,對前人工作有一些改進或有一定應用價值。54實踐與答辯實驗方法、結果正確,能正確回答指導教師所提出的問題。35總分評語:指導教師: (簽名) 年 月 日- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- PID 控制 課程設計
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://ioszen.com/p-6707513.html