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

📄 ctrllab.m

📁 很优良的PID控制器设计仿真程序与模型,经过严格检验
💻 M
📖 第 1 页 / 共 3 页
字号:
hMFile(5)=uimenu(hMFile(1),'Label','Save &As ...','CallBack','ctrllab(5,3);');
hMFile(6)=uimenu(hMFile(1),'Label','E&xit','Separator','on','CallBack','ctrllab(5,4);');
 
%
% (2) The Model menu system definitions
%(2.1), the model selection sub-menu
hMModel(1)=uimenu(gcf,'Label','&Model');
hMModel(2)=uimenu(hMModel(1),'Label','Model &Select');
hMModel(10)=uimenu(hMModel(2),'Label','G(s)','Checked','on',...
   'CallBack','extra_funs(4,3,''Checked'',10,[11:13]); proc_model(0,1,0);');
hMModel(11)=uimenu(hMModel(2),'Label','Gc(s)','Checked','off',...
   'CallBack','extra_funs(4,3,''Checked'',11,[10,12,13]); proc_model(0,2,0);');
hMModel(12)=uimenu(hMModel(2),'Label','H(s)','Checked','off',...
   'CallBack','extra_funs(4,3,''Checked'',12,[10,11,13]); proc_model(0,3,0);');
hMModel(13)=uimenu(hMModel(2),'Label','Exp(-Ts)','Checked','off',...
   'CallBack','extra_funs(4,3,''Checked'',13,[10:12]); proc_model(0,4,0);');
   
hMModel(3)=uimenu(hMModel(1),'Label','Model &Type');

% the next two sub menu items are currently redundant
hMModel(14)=uimenu(hMModel(3),'Label','&Open loop','Visible','off','Checked','on');
hMModel(15)=uimenu(hMModel(3),'Label','&Closed loop','Visible','off','Checked','off');
   
hMModel(16)=uimenu(hMModel(3),'Label','&Transfer Function',...
   'Checked','on','Callback','extra_funs(4,3,''Checked'',16,[17:19]); ');
hMModel(17)=uimenu(hMModel(3),'Label','&Zero-Pole',...
   'Checked','off','Callback','extra_funs(4,3,''Checked'',17,[16,18:19]); ');
hMModel(18)=uimenu(hMModel(3),'Label','&State Space',...
   'Checked','off','Callback','extra_funs(4,3,''Checked'',18,[16:17,19]); ');
hMModel(19)=uimenu(hMModel(3),'Label','Simulink &Model','Checked','off',...
   'Enable',extra_funs(6,exist('simulink.mdl')==4),...
   'Callback','extra_funs(4,3,''Checked'',19,[16:18]); ');
   
hMModel(4)=uimenu(hMModel(1),'Label','Model &Display');
hMModel(20)=uimenu(hMModel(4),'Label','Transfer Function','Checked','on',...
   'Callback','extra_funs(4,3,''Checked'',20,[21:23]); proc_model(1);');
hMModel(21)=uimenu(hMModel(4),'Label','State Space','Checked','off',...
   'Callback','extra_funs(4,3,''Checked'',21,[20,22,23]); proc_model(1);');
hMModel(22)=uimenu(hMModel(4),'Label','Pole-Zero','Checked','off',...
   'Callback','extra_funs(4,3,''Checked'',22,[20,21,23]); proc_model(1);');
hMModel(23)=uimenu(hMModel(4),'Label','Factorized TF','Checked','off',...
   'Callback','extra_funs(4,3,''Checked'',23,[20:22]); proc_model(1);');
   
hMModel(5)=uimenu(hMModel(1),'Label','&Realisation','Enable','off');
hMModel(24)=uimenu(hMModel(5),'Label','&Controllable Form','Checked','on', ...
   'CallBack','extra_funs(4,3,''Checked'',24,[25:28]); ctrllab(2,1);');
hMModel(25)=uimenu(hMModel(5),'Label','&Observable Form','Checked','off', ...
   'CallBack','extra_funs(4,3,''Checked'',25,[24,26:28]); ctrllab(2,2);');
hMModel(26)=uimenu(hMModel(5),'Label','&Jordan Form','Checked','off', ...
   'CallBack','extra_funs(4,3,''Checked'',26,[24:25,27:28]); ctrllab(2,3);');
hMModel(27)=uimenu(hMModel(5),'Label','&Minimal Realisation','Checked','off', ...
   'CallBack','extra_funs(4,3,''Checked'',27,[24:26,28]); ctrllab(2,4);');
hMModel(28)=uimenu(hMModel(5),'Label','&Balanced Realisation','Checked','off', ...
   'CallBack','extra_funs(4,3,''Checked'',28,[24:27]); ctrllab(2,5);');
   
hMModel(6)=uimenu(hMModel(1),'Label','&Reduction...','Enable','off','CallBack','mod_reduction(1);');

hMModel(7)=uimenu(hMModel(1),'Label','&Show','Separator','on',...
   'Enable','off','CallBack','proc_model(1);');
hMModel(8)=uimenu(hMModel(1),'Label','&Enter/Modify','CallBack','proc_model(2);');
hMModel(9)=uimenu(hMModel(1),'Label','&Show Model Library','Checked','off',...
   'Enable',extra_funs(6,exist('simulink.mdl')==4),'CallBack','simu_modlib;');

%29-36 moved and now empty
hMModel(29)=uimenu(hMModel(1),'Label','&Add More Blocks','Separator','on');
hMModel(30)=uimenu(hMModel(29),'Label','&ZOH for Gc','Checked','off','CallBack','ctrllab(3,1);');
hMModel(31)=uimenu(hMModel(29),'Label','&Actuator Saturation','Checked','off','CallBack','ctrllab(3,2);');
hMModel(32)=uimenu(hMModel(29),'Label','&Time Delay','Checked','off','CallBack','ctrllab(3,3);');
hMModel(33)=uimenu(hMModel(29),'Label','&Measurement Noise','Checked','off','CallBack','ctrllab(3,4);');

hMAnalysis(1)=uimenu(gcf,'Label','&Analysis','Enable','off');
hMAnalysis(21)=uimenu(hMAnalysis(1),'Label','&Frequency Domain Analysis');
hMAnalysis(2)=uimenu(hMAnalysis(21),'Label','&Bode Diagram','CallBack','sys_analysis(1);');
hMAnalysis(3)=uimenu(hMAnalysis(21),'Label','&Nyquist Plot','CallBack','sys_analysis(2);');
hMAnalysis(4)=uimenu(hMAnalysis(21),'Label','&Nichols Chart','CallBack','sys_analysis(3);');
hMAnalysis(5)=uimenu(hMAnalysis(21),'Label','&Inverse Nyquist Plot','CallBack','sys_analysis(4);');
hMAnalysis(6)=uimenu(hMAnalysis(1),'Label','&Root Locus','CallBack','sys_analysis(5);');
hMAnalysis(22)=uimenu(hMAnalysis(1),'Label','&Time Domain Analysis');
hMAnalysis(7)=uimenu(hMAnalysis(22),'Label','&Step Response','Checked','off',...
   'CallBack','extra_funs(4,4,''Checked'',7,8); sys_analysis(6);');
hMAnalysis(8)=uimenu(hMAnalysis(22),'Label','&Impulse Response','Checked','on',...
   'CallBack','extra_funs(4,4,''Checked'',8,7); sys_analysis(7);');
hMAnalysis(34)=uimenu(hMAnalysis(1),'Label','&Parametric Analysis','Separator','on');
hMAnalysis(14)=uimenu(hMAnalysis(34),'Label','&Gain/Phase Margins','CallBack','sys_analysis(8);');
hMAnalysis(15)=uimenu(hMAnalysis(34),'Label','&Analytical Solutions','CallBack','sys_analysis(12);');
hMAnalysis(9)=uimenu(hMAnalysis(34),'Label','&Guaranteed Stability Margins','CallBack','sys_analysis(13);');
%hMAnalysis(35)=uimenu(hMAnalysis(9),'Label','&Additative uncertainty');
%hMAnalysis(36)=uimenu(hMAnalysis(9),'Label','&Multiplicative uncertainty');
%hMAnalysis(37)=uimenu(hMAnalysis(34),'Label','&System measures');
hMAnalysis(38)=uimenu(hMAnalysis(34),'Label','H_&2 and H_inf Norms','CallBack','sys_analysis(9);');
hMAnalysis(40)=uimenu(hMAnalysis(34),'Label','&Time Moments','CallBack','sys_analysis(10);');
hMAnalysis(41)=uimenu(hMAnalysis(34),'Label','&Markov Parameters','CallBack','sys_analysis(11);');

hMAnalysis(20)=uimenu(hMAnalysis(1),'Label','&Call Matrix Processor','CallBack','matx_proc;');
   
hMAnalysis(23)=uimenu(hMAnalysis(1),'Label','&Loop Specs and Signals','Separator','on');
hMAnalysis(24)=uimenu(hMAnalysis(23),'Label','&Open Loop ','Checked','off','CallBack','ctrllab(6,5);');
hMAnalysis(25)=uimenu(hMAnalysis(23),'Label','&Closed Loop','Checked','on','CallBack','ctrllab(6,6);');
hMAnalysis(26)=uimenu(hMAnalysis(23),'Label','Compensated System','Checked','off',...
   'Separator','on','Enable','off','CallBack','ctrllab(3,5);');
hMAnalysis(27)=uimenu(hMAnalysis(23),'Label','Un-compensated System',...
   'Checked','on','CallBack','ctrllab(3,6);');
hMAnalysis(28)=uimenu(hMAnalysis(23),'Label','Error Signal e(t)',...
   'Separator','on','Checked','off','CallBack','ctrllab(6,1);');
hMAnalysis(29)=uimenu(hMAnalysis(23),'Label','Actuating Signal u(t)',...
   'Checked','off','CallBack','ctrllab(6,2);');
hMAnalysis(30)=uimenu(hMAnalysis(23),'Label','Output Signal y(t)',...
   'Checked','on','CallBack','ctrllab(6,3);');
hMAnalysis(31)=uimenu(hMAnalysis(23),'Label','Input/Output Relationship',...
   'Separator','on','Checked','on','CallBack','ctrllab(6,3);');
hMAnalysis(32)=uimenu(hMAnalysis(23),'Label','Sensitivity Function',...
   'Checked','off','CallBack','ctrllab(6,1);');
hMAnalysis(33)=uimenu(hMAnalysis(23),'Label','Complementary Sensitivity Function',...
   'Checked','off','CallBack','ctrllab(6,4);');
   
hMDesign(1)=uimenu(gcf,'Label','&Design','Enable','off');
hMDesign(2)=uimenu(hMDesign(1),'Label','&Classical Compensation','Enable','on');
hMDesign(3)=uimenu(hMDesign(2),'Label','&Lead/Lag Compensation','CallBack','sys_design(1);');
hMDesign(4)=uimenu(hMDesign(2),'Label','L&Q optimal Control','CallBack','sys_design(2);');
hMDesign(5)=uimenu(hMDesign(2),'Label','&Pole Placement','CallBack','sys_design(3);');
hMDesign(6)=uimenu(hMDesign(2),'Label','&Model Following','CallBack','sys_design(4);');
 
hMDesign(7)=uimenu(hMDesign(1),'Label','&PID Controller');
hMDesign(8)=uimenu(hMDesign(7),'Label','&One-shot Design');
hMDesign(9)=uimenu(hMDesign(8),'Label','&Ziegler-Nichols Tuning','CallBack','pid_design(1);');
hMDesign(10)=uimenu(hMDesign(8),'Label','&Cohen-Coon Tuning','CallBack','pid_design(8);');
hMDesign(11)=uimenu(hMDesign(8),'Label','&Refined Ziegler-Nichols','CallBack','pid_design(7);');
hMDesign(12)=uimenu(hMDesign(7),'Label','&Specified Parameters');
hMDesign(13)=uimenu(hMDesign(12),'Label','Chien (C&HR) Tuning','CallBack','pid_design(9);');
hMDesign(14)=uimenu(hMDesign(12),'Label','Modified Ziegler-Nichols Tuning','CallBack','pid_design(10);');
hMDesign(15)=uimenu(hMDesign(12),'Label','Internal Model Control','CallBack','pid_design(11);');
hMDesign(16)=uimenu(hMDesign(7),'Label','&Optimum Tuning');
hMDesign(17)=uimenu(hMDesign(16),'Label','&ISE Setting','Checked','on', ...
   'CallBack','extra_funs(4,5,''Checked'',17,18:20); pid_design(2);');
hMDesign(18)=uimenu(hMDesign(16),'Label','I&STE Setting','Checked','off', ...
   'CallBack','extra_funs(4,5,''Checked'',18,[17,19:20]); pid_design(3);');
hMDesign(19)=uimenu(hMDesign(16),'Label','IS&T2E Setting','Checked','off', ...
   'CallBack','extra_funs(4,5,''Checked'',19,[17:18,20]); pid_design(4);');
hMDesign(20)=uimenu(hMDesign(16),'Label','&Gain Phase Tuning','Checked','off', ...
   'CallBack','extra_funs(4,5,''Checked'',20,17:19); pid_design(5);');
hMDesign(21)=uimenu(hMDesign(7),'Label','&User Define...','CallBack','pid_design;');
hMDesign(22)=uimenu(hMDesign(7),'Label','&Controller Type','Separator','on');
hMDesign(23)=uimenu(hMDesign(22),'Label','&P Control', ...
   'CallBack','extra_funs(4,5,''Checked'',23,24:26); ');
hMDesign(24)=uimenu(hMDesign(22),'Label','P&I Control', ...
   'CallBack','extra_funs(4,5,''Checked'',24,[23,25:26]); ');
hMDesign(25)=uimenu(hMDesign(22),'Label','&Normal PID','Checked','on',...
   'CallBack','extra_funs(4,5,''Checked'',25,[23:24,26]); ');
hMDesign(26)=uimenu(hMDesign(22),'Label','PID with &D in Feedback','Checked','off',...
   'CallBack','extra_funs(4,5,''Checked'',26,23:25); ');
hMDesign(28)=uimenu(hMDesign(7),'Label','&First-order Model Identification');
hMDesign(29)=uimenu(hMDesign(28),'Label','&Optimal Reduction','Checked','off', ...
   'CallBack','extra_funs(4,5,''Checked'',29,30:31); ');
hMDesign(30)=uimenu(hMDesign(28),'Label','&Frequency Response-based','Checked','on', ...
   'CallBack','extra_funs(4,5,''Checked'',30,[29,31]); ');
hMDesign(31)=uimenu(hMDesign(28),'Label','&Transfer Function-based','Checked','off', ...
   'CallBack','extra_funs(4,5,''Checked'',31,29:30); ');

hMDesign(32)=uimenu(hMDesign(1),'Label','&Robust Control');
hMDesign(33)=uimenu(hMDesign(32),'Label','&QFT Control','Visible','off');
hMDesign(34)=uimenu(hMDesign(32),'Label','&LQG Control','CallBack','sys_design(5);');
hMDesign(35)=uimenu(hMDesign(32),'Label','&LQG/LTR Control','CallBack','sys_design(6);');
hMDesign(36)=uimenu(hMDesign(32),'Label','&H_2 Control','CallBack','sys_design(7);');
hMDesign(37)=uimenu(hMDesign(32),'Label','&H_inf Control','CallBack','sys_design(8);');
hMDesign(38)=uimenu(hMDesign(32),'Label','&H_inf Optimal Control','CallBack','sys_design(9);');
hMDesign(39)=uimenu(hMDesign(32),'Label','LM&I Control','Visible','off');
hMDesign(40)=uimenu(hMDesign(32),'Label','&Mu-synthesis','Visible','off','CallBack','sys_design(10);');

hMHelp(1)=uimenu(gcf,'Label','&Help');
hMHelp(2)=uimenu(hMHelp(1),'Label','&Tutorial');
hMHelp(3)=uimenu(hMHelp(2),'Label','&Step 1: Model Entering','CallBack','ctrllab(1,1);');
hMHelp(4)=uimenu(hMHelp(2),'Label','&Step 2: Bode Diagram','CallBack','ctrllab(1,2);');
hMHelp(5)=uimenu(hMHelp(2),'Label','&Step 3: Nichols Chart','CallBack','ctrllab(1,3);');
hMHelp(6)=uimenu(hMHelp(2),'Label','&Step 4: PID Controller Design','CallBack','ctrllab(1,4);');
hMHelp(7)=uimenu(hMHelp(1),'Label','&Introduction','CallBack','clab_help(0);');
hMHelp(16)=uimenu(hMHelp(1),'Label','Starting with CtrlLAB','CallBack','clab_help(-1);');
hMHelp(8)=uimenu(hMHelp(1),'Label','&Help on Interface');
hMHelp(9)=uimenu(hMHelp(8),'Label','&File Menu','CallBack','clab_help(5);');
hMHelp(10)=uimenu(hMHelp(8),'Label','&Model Menu','CallBack','clab_help(6);');
hMHelp(11)=uimenu(hMHelp(8),'Label','&Analysis Menu','CallBack','clab_help(7);');
hMHelp(12)=uimenu(hMHelp(8),'Label','&Design Menu','CallBack','clab_help(8);');
hMHelp(13)=uimenu(hMHelp(8),'Label','&Graphics Window','CallBack','clab_help(9);');
hMHelp(14)=uimenu(hMHelp(8),'Label','&PID Controller Design','CallBack','clab_help(13);');
hMHelp(15)=uimenu(hMHelp(1),'Label','&About...','Separator','on','CallBack','clab_help(23);');

uu=get(gcf,'UserData'); 
uu={uu{1},hMFile,hMModel,hMAnalysis,hMDesign,hMHelp,[1,0.1,0.1,10]}; set(gcf,'UserData',uu);   
   
%----------------------------------------------
%arrow_shw draw arrows in current window
%
%   h=arrow_shw(p1,p2,w,col)
%where 
%   h is the handle of the arrow to be drawn
%   p1,p2 are the starting and ending points
%   w is the width of the arrow
%   col is the color of the arrow
%----------------------------------------------
function h=arrow_shw(p1,p2,w,col)

⌨️ 快捷键说明

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