⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autogui.m

📁 这是一个PID自动调节的程序
💻 M
📖 第 1 页 / 共 3 页
字号:
AxesCV = axes(...
   'Parent',             Fig,...
   'Units',              'pixel',...
   'Position',           [175 FigH-325 22 300],...
   'CLim',               [1 64], ...
   'Xlim',               [-1 1],...
   'Ylim',               [-10 10],...
   'Visible',            'on',...
   'XTick',              [],...
   'XTickLabel',         [],...
   'FontSize',           8,...
   'Box',                'on');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [175 FigH-20 22 12], ...
   'HorizontalAlignment','center',...
   'String',             'CV',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'Foregroundcolor',    [0 1 1],...
   'Fontweight',         'bold');
CV = patch(...
   'Parent',             AxesCV,...
   'XData',              [-1 -1 1 1],...
   'YData',              [0 CVValue CVValue 0],...
   'FaceColor',          [0 1 1]);

% Control variable - Manual
SlideControlCV = uicontrol(...
   'Parent',             Fig,...
   'Style',              'slider',...
   'Units',              'pixel', ...
   'Position',           [225 FigH-325 22 300],...
   'Min',                -9,...
   'Max',                9,...
   'Value',              0,...
   'BackgroundColor',    [0 1 1],...
   'Callback',           'autogui([],[],[],''SliderCV'');',...
   'Enable',             'inactive');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [200 FigH-20 72 12], ...
   'HorizontalAlignment','center',...
   'String',             'CV - MAN',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'Foregroundcolor',    [0 1 1],...
   'Fontweight',         'bold');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [106 FigH-250 50 14], ...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'Foregroundcolor',    [0 1 1],...
   'HorizontalAlignment','center',...
   'Fontweight',         'bold',...
   'String',             'CV');
EditCV = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [106 FigH-268 50 18], ...
   'HorizontalAlignment','center',...
   'String',             num2str(CVValue),...
   'Foregroundcolor',    [0 0 0],...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditCV'');',...
   'Enable',             'inactive');

% time field
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [100 FigH-348 36 12], ...
   'HorizontalAlignment','right',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'Fontweight',         'bold',...
   'String',             'Time: ');
TimeField = uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel', ...
   'Position',           [136 FigH-348 36 12],...
   'HorizontalAlignment','left',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'String',             num2str(TimeClock));

% PID parameters
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [12 FigH-371 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'String',             'Parameters');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'frame',...
   'Units',              'pixel',...
   'Position',           [12 FigH-417 248 46]);
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-393 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'K ');
EditK = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [36 FigH-393 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditK'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [96 FigH-393 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'Ti ');
EditTi = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [116 FigH-393 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditTi'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [176 FigH-393 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'Td ');
EditTd = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [196 FigH-393 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditTd'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-413 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'N ');
EditN = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [36 FigH-413 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditN'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [96 FigH-413 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'b ');
Editb = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [116 FigH-413 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''Editb'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [176 FigH-413 20 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'c ');
Editc = uicontrol(...
   'Parent',             Fig,...
   'Style',              'edit',...
   'Units',              'pixel',...
   'Position',           [196 FigH-413 60 18], ...
   'HorizontalAlignment','center',...
   'String',             '0',...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''Editc'');',...
   'Enable',             'off');

% auto/man selector
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [12 FigH-441 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'String',             'Operating Mode');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'frame',...
   'Units',              'pixel',...
   'Position',           [12 FigH-467 248 24]);
Man = uicontrol(...
   'Parent',             Fig,...
   'Style',              'radiobutton',...
   'Position',           [16 FigH-465 70 20],...
   'String',             'Manual', ...
   'Fontweight',         'bold',...
   'Value',              0,...
   'Callback',           'autogui([],[],[],''Man'');');
Auto = uicontrol(...
   'Parent',             Fig,...
   'Style',              'radiobutton',...
   'Position',           [136 FigH-465 50 20],...
   'String',             'Auto', ...
   'Fontweight',         'bold',...
   'Value',              1,...
   'Callback',           'autogui([],[],[],''Auto'');');

% autotuning
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [12 FigH-491 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'Backgroundcolor',    [0.8 0.8 0.8],...
   'String',             'Autotuner');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'frame',...
   'Units',              'pixel',...
   'Position',           [12 FigH-604 248 112]);
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-516 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'String',             'Identification method');
IdentMethod = uicontrol(...
   'Parent',             Fig,...
   'Style',              'popupmenu',...
   'Position',           [156 FigH-516 100 18],...
   'String',             ['step ';'relay'],...
   'Backgroundcolor',    [1 1 1],...
   'Fontweight',         'bold',...
   'Value',              1,...
   'Callback',           'autogui([],[],[],''Identification'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-536 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'String',             'Tuning method');
TuningMethod = uicontrol(...
   'Parent',             Fig,...
   'Style',              'popupmenu',...
   'Position',           [156 FigH-536 100 18],...
   'String',             ['IMC    ';'KT     ';'ZN (OL)';'ZN (CL)'], ...
   'Backgroundcolor',    [1 1 1],...
   'Fontweight',         'bold',...
   'Value',              2,...
   'Callback',           'autogui([],[],[],''Tuning'');');
TuningParText = uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-556 180 14], ...
   'HorizontalAlignment','right',...
   'Fontweight',         'bold',...
   'String',             'Ms ');
TuningParam = uicontrol(...
   'Parent',             Fig,...
   'Style',              'popupmenu',...
   'Units',              'pixel',...
   'Position',           [196 FigH-556 60 18], ...
   'HorizontalAlignment','center',...
   'String',             ['1.4';'2.0'],...
   'Value',              1,...
   'Backgroundcolor',    [1 1 1],...
   'Callback',           'autogui([],[],[],''EditParam'');');
uicontrol(...
   'Parent',             Fig,...
   'Style',              'text',...
   'Units',              'pixel',...
   'Position',           [16 FigH-576 140 14], ...
   'HorizontalAlignment','left',...
   'Fontweight',         'bold',...
   'String',             'Structure');
RegStruct = uicontrol(...
   'Parent',             Fig,...
   'Style',              'popupmenu',...
   'Position',           [156 FigH-576 100 18],...
   'String',             ['PID ';'PI  ';'auto'], ...
   'Backgroundcolor',    [1 1 1],...
   'Fontweight',         'bold',...
   'Value',              1,...
   'Callback',           'autogui([],[],[],''Structure'');'); 
uicontrol(...
   'Parent',             Fig,...
   'Style',              'pushbutton',...
   'Position',           [100 FigH-601 72 20],...
   'String',             'Autotune', ...
   'Fontweight',         'bold',...
   'Callback',           'autogui([],[],[],''Autotune'');');


% all the HG objects are created, store them into the Figure's UserData
% time field
FigUD.TimeField    = TimeField;
% process value & setpoint
FigUD.PV           = PV;
FigUD.SlideSP      = SlideControlSP;
FigUD.RefMark      = RefMark;
FigUD.EditSP       = EditSP;
FigUD.PVField      = PVField;
% control variable
FigUD.CV           = CV;
FigUD.SlideCV      = SlideControlCV;
FigUD.EditCV       = EditCV;
% radiobox button
FigUD.Man          = Man;
FigUD.Auto         = Auto;
% edit field (PID parameters)
FigUD.EditK        = EditK;
FigUD.EditTi       = EditTi;
FigUD.EditTd       = EditTd;
FigUD.EditN        = EditN;
FigUD.Editb        = Editb;
% autotuning
FigUD.Ident        = IdentMethod;
FigUD.Tuning       = TuningMethod;
FigUD.TunParText   = TuningParText;
FigUD.TuningParam  = TuningParam;
FigUD.Structure    = RegStruct;
% Simulink Block Interaction
FigUD.Block        = get_param(gcbh,'Handle');
FigUD.RefBlock     = get_param([sys '/' RefBlock],'Handle');

set(Fig,'UserData',FigUD);

drawnow

% store the figure handle in the animation block's UserData
set_param(gcbh,'UserData',Fig);
% end LocalPIDInit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -