系统设计报告
7 总结
1.就实现要求的用户图形界面来说,设计整体布局,以及实现需要的功能需要的图形对象面板工具常用控件的选择,虽然选择是比较自由的,方式也是多样的,第一次做位置式时我选择了一组按钮,来切换输入信号。在做第二种增量式时,希望得到更多的方式或者学到不同常用控件的实用方法,我选择了设定一组单选按钮,用了两种语句来实现,一种是if……else……语句,一种是switch语句,两种方法都可以实现单选按钮的功能。
2.就PID控制系统而言,除了自动控制原理课堂上的,通过这次课程设计对于PID有了更加深刻的认识,对于其在矫正系统功能方面有了更加系统的认知,也进一步揭开了其常被应用的面纱。
3.离散系统的分析源自于连续系统的离散,首先进行离散化z变换,知道了位置式和增量式的区别最重要的在于位置式的变化和之前的每一个时刻都有关系,而增量式的只和最近三次的增量有关系。
4.这个课程设计锻炼了我的思考和查阅资料的能力。
- 13 -
系统设计报告
参考文献
[1]郑阿奇,曹戈.MATLAB实用教程(第三版)[M].北京:电子工业出版社
- 14 -
系统设计报告
附录
主程序:
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(varargin{1})
gui_State.gui_Callback = str2func(varargin{1}); end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
function PID_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles);
function varargout = PID_OutputFcn(hObject, eventdata, handles) varargout{1} = 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));
- 15 -
系统设计报告
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'); end
function Ki_Callback(hObject, eventdata, handles) function Ki_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function Kd_Callback(hObject, eventdata, handles) function Kd_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
- 16 -
系统设计报告
set(hObject,'BackgroundColor','white'); end
function error_Callback(hObject, eventdata, handles) function error_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function den_Callback(hObject, eventdata, handles) function den_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function num_Callback(hObject, eventdata, handles) function num_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function tuichu_Callback(hObject, eventdata, handles)
ss=questdlg('你真的要退出吗?','退出窗口','不,我还想看看!','是的,我要退出!','是的,我要退出!');
switch ss
case '是的,我要退出!' delete(handles.figure1); end
function Kp1_Callback(hObject, eventdata, handles) function Kp1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end
function Ki1_Callback(hObject, eventdata, handles)
- 17 -