《电子技术应用》
您所在的位置:首页 > 其他 > 设计应用 > 自动控制系统综合分析软件的设计
自动控制系统综合分析软件的设计
刘 莉,张 健,李焕洲
四川师范大学 物理与电子工程学院,四川 成都 610066
摘要: 集成自动控制系统常用的分析方法,在Matlab的基础上开发软件系统,可以对控制系统进行时域、根轨迹与频域的分析。该软件不仅可以作为自动控制原理课程教学强有力的补充,还可以为工程技术人员提供友好的分析实际自动控制系统的软件环境,避开学习Matlab,将更多的精力用于工程实践上。
Abstract:
Key words :

摘 要:集成自动控制系统常用的分析方法,在Matlab的基础上开发软件系统,可以对控制系统进行时域、根轨迹与频域的分析。该软件不仅可以作为自动控制原理课程教学强有力的补充,还可以为工程技术人员提供友好的分析实际自动控制系统的软件环境,避开学习Matlab,将更多的精力用于工程实践上。
关键词:自动控制系统;分析软件; Matlab

  对于实际的自动控制系统来说,无论用于分析还是设计,都不可避免地要对其进行计算与作图。在经典的控制理论中,时域、根轨迹与频域的分析方法各有千秋,很多开发环境中也有相关的算法程序,比如Matlab[1]。Matlab是美国MathWorks公司开发的一种跨平台的用于矩阵数值计算和可视化编程软件,该软件中汇集了当前最新的数学算法库,编程风格接近数学语言描述,计算精度高,尤其在绘图方面功能十分强大,并且在Matlab基础上开发的程序不依赖于计算机和操作系统类型。但是要利用这些算法进行分析自动控制系统时,哪怕只是一个简单的自控系统对象,使用者都必须熟悉Matlab的编程环境并进行代码的编制,这大大影响了学习与工作的效率。如果能够把所有方法集成到一个软件环境里,那么无论是在自动控制原理课程教学中,还是实际的工程应用中,都能给使用者带来极大的方便。
  对此类分析软件的开发,过去为了充分利用C++Builder或Visual C++等可视化编程环境在开发可视化界面的优势和Matlab在绘图方面的强大功能以及丰富的数学算法库,常常采用二者进行混合编程[2-6]。但是无论采用何种接口方式,程序运行的速度都很难令人满意。尤其是混合编程会忽略Matlab中的任何错误,这对调试程序非常不利,严重影响开发的进度。
  最近几年,随着Matlab的图形用户界面开发环境GUI(Graphical User Interface)的不断完善,其在开发交互式用户界面上的可操作性几乎能够同目前流行的Visual C++、C++  Builder等开发环境比拟。虽然Matlab图形用户界面编程环境中可供选的控件数量还不是很多,但是对于开发常规的实用分析软件来说,这些已经足够了。而且Matlab中已经包含了很多数学算法与绘图函数,大大缩短了软件的开发周期。
  本自动控制系统辅助分析软件(ACAAS)是在Matlab 7.1的基础上开发的,它集成了自动控制系统常用的分析方法,可以对控制系统进行时域、根轨迹与频域的分析。
1 Matlab GUI
   在Matlab中有一个guide工具[7],即Matlab的图形用户界面GUI的开发环境,该工具使编程者可以通过选择与布局GUI控件来生成GUI应用,并对所选择的控件进行名字、颜色与文本等属性的编辑。
1.1 guide工具
   在Matlab主窗口中点击“guide”快捷方式,或者在命令行输入“guide”,均可进入Matlab的GUI开发环境。
1.2 guide控件
  Matlab的GUI开发环境中可供选择的主要控件如表1所示。

     当用户需要用到某种控件时,只需要用鼠标选中该控件,然后在如图1所示的设计区点击鼠标即可产生此控件。双击控件,进入“Property Inspector”,可以编辑控件的颜色、名称等属性。在控件上单击鼠标右键,从弹出菜单中选择“View Callback”-“Callback”,可以对控件的触发事件进行编程。

1.3 编程步骤
   (1)确定需要在GUI中实现的功能以及每部分功能要用到的函数;
   (2)进入“guide”开发环境,选择相关的控件,并调整好各个功能模块的合理布局;
   (3)根据需要改变控件的属性,如字体、颜色等;
   (4)保存“.fig”文件,同时系统会自动生成该图形界面文件对应的“.m”文件;
   (5)在 “.m”文件编写控件的回调函数,以实现相应的功能。
2 辅助分析软件系统的设计
2.1 ACAAS 软件主要功能模块
  ACAAS软件的主要功能结构图如图2所示。  

2.2系统主界面
  该ACAAS系统主要包括自动控制系统模型输入与系统分析,可以以单幅图和单幅多道图的形式对分析结果进行显示。主菜单中包括“文件”、“模型输入”、“分析方法”、“绘图方式”等选项,每个主菜单下都有相关的子菜单,用户可以根据需要在各个功能菜单中方便地进行切换。在输入系统模型时,其下面的文本框中显示输入的提示信息;而分析结果的图形得到后,用户还可以在该文本框中看到此自动控制系统闭环传递函数的闭环极点情况,得到系统稳定性方面的信息。在“文件”菜单中,用户可以对分析结果进行保存与打印,也可以打开以前保存的结果。主界面如图3所示。

2.3系统模型输入
  系统给用户提供了3种模型输入形式[8]:零极点形式、反馈控制结构形式、分子分母多项式形式,用户可以根据已知的自动控制系统传递函数,在“系统模型”菜单项中选择最方便的输入形式。在零极点模型输入时,系统的零极点可能为复数,按“-5+2j”的形式输入即可。而反馈控制结构模型和分子分母多项式模型中,输入参数均为实数。模型输入界面如图4所示。

  图4中,由反馈控制结构多项式系统形式输入的自动控制系统传递函数为:
   

   而由闭环多项式系数模型与闭环零极点模型输入的自动控制系统传递函数分别为:
  

  以零极点模型输入界面为例,下面是主要的程序代码。
     function ZPMenuItem_Callback(hObject, eventdata, handles)
  global MdlValue        %定义全局变量
     MdlValue=1;         %定义模型控制字:1-零极点模型,2-多项式模型,3-反馈控制结构模型
           %显示零极点模型的输入部件组
  set(findobj(gcf,'Tag','MDLuipanel'),'Title','闭环零极点模型');
  set(findobj(gcf,'Tag','text1'),'Visible','off');
  set(findobj(gcf,'Tag','text3'),'Visible','on');
  set(findobj(gcf,'Tag','text2'),'Visible','on');
  set(findobj(gcf,'Tag','text4'),'Visible','on');
  set(findobj(gcf,'Tag','GFZedit'),'Visible','off');
  set(findobj(gcf,'Tag','HFZedit'),'Visible','on');
  set(findobj(gcf,'Tag','GFMedit'),'Visible','on');
  set(findobj(gcf,'Tag','HFMedit'),'Visible','on');
            %给零极点模型的输入部件的文本属性或编辑框内容赋值
  set(findobj(gcf,'Tag','text2'),'String','增益:');
  set(findobj(gcf,'Tag','text3'),'String','零点:');
  set(findobj(gcf,'Tag','text4'),'String','极点:');
  set(findobj(gcf,'Tag','GFMedit'),'String','10');
  set(findobj(gcf,'Tag','HFZedit'),'String','-1 -2');
  set(findobj(gcf,'Tag','HFMedit'),'String','-3 -4 -5');
            %用户输入提示
  fmtData ={'输入数据时,两个数之间请用空格分隔符!'  '若为复数时,请按如下格式输入:  -5+2j'  '注意 j 的位置不可与2交换!' };
  Mstring=sprintf('%s\n%s\n%s\n',fmtData{1},fmtData{2},fmtData{3});      
  set(findobj(gcf,'Tag','SMedit'),'String',Mstring) 
2.4 分析方法设计
  在经典的控制理论中,分析自动控制系统性能的方法有时域法、频域法和根轨迹法[9]。在时域法中系统常见的输入信号为单位阶跃与脉冲信号,对应的响应结果可以在该软件中显示。频域法中表示系统频率特性的图形有奈氏图、对数幅频特性曲线和对数相频特性曲线。这些方法都可以在菜单“分析方法”中进行选择。利用结果显示曲线,可以用相应的方法对自动控制系统进行性能分析。
  以根轨迹分析为例,下面是主要的程序代码。
  function GMenuItem_Callback(hObject, eventdata, handles)
  global MdlValue TxValue Fxtag FxValue      
                         %声明全局变量
  FxValue=3;                    %1-阶跃响应,2-脉冲响应,3-根轨迹,4-奈氏图
  ……
  switch MdlValue          %判断模型输入方式
    case 1                   %1-零极点模型
              %读入模型参数
  K=(get(findobj(gcf,'Tag','GFMedit'),'String'));
  Z=(get(findobj(gcf,'Tag','HFZedit'),'String'));
  P=(get(findobj(gcf,'Tag','HFMedit'),'String'));
           %将字符串类型转化为数字型
  k=str2num(K);
  z=str2num(Z);
  p=str2num(P);
           %提示输入错误
  if isempty(k)==1|isempty(p)==1;  %零点z可以为空  errordlg('输入参量不符合要求','错误');
  else
    axes(handles.axes1);              %选择绘图部件
    G=zpk(z,p,k);                      %生成传递函数

    rlocus(G);                           %画根轨迹
    sgrid;
     ……
  end
     case 2       ……
     case 3  ……
2.5 绘图方式设计
  使用ACAAS系统,用户可以得到所选择的分析方法所对应的单道分析曲线,如图5所示。为了方便用户对不同的自动控制系统的性能进行对比分析,该软件还为用户提供了“单幅多道图” 的绘图形式,即在同一坐标系下绘制多条不同的自动控制系统的分析曲线。对时域法、频域法和根轨迹法,均可以采用此种绘图方式。从“单幅多道图”中能够很容易看出某一参数的变化及对系统性能的影响。

  下面是主要的程序代码。
  ……
  switch TxValue 
      case 1                %单道图
       axes(handles.axes1);
            cla;
      case 2                 %多道图
       if Fxtag==FxValue 
       axes(handles.axes1);
       hold on
       else           
  warndlg('请在同一种分析方法下使用!','提示');
         end   
  end
   ……
  图6是3个放大系数不同的自控系统Φ(s)的单位阶跃响应曲线,利用该图可以立刻得到放大系数对系统性能的影响,即:随着放大系数的增加,系统的稳态误差减少,但是超调增大,震荡加剧。其中
  

  自动控制系统辅助分析软件(ACAAS)采用Matlab7.1中的GUI环境进行开发,充分利用了Matlab中集成的关于自动控制系统的性能分析算法库和强大的绘图功能,特别是由于自动控制系统的性能分析算法库与GUI开发工具均属于Matlab软件,因此用户输入与分析算法之间的接口变得十分容易,大大缩短了软件的开发周期。与传统的采用混合编程模式开发的同类型软件系统相比,该软件易于维护与升级,在运行时间上其优势更加突出。
  采用ACAAS,用户可以十分方便地分析自动控制系统的时域、根轨迹与频域性能,并在“单幅多道图”中对不同系统之间进行性能比较,为下一步进行自动控制系统的设计打下良好的理论基础。该软件不仅可以作为《自动控制原理》课程教学强有力的补充,并且在Matlab仿真环境与自动控制工程设计人员之间搭起了一座桥梁,使他们不必花大量的时间用于Matlab的学习就可以对系统进行仿真,能够将更多的精力用于工程实践与应用上。
参考文献
[1] 徐明远.Matlab仿真在通信与电子工程中的应用[M].  西安:西安电子科技大学出版社,2005.
[2] 刘维.精通MATLAB与C/C++混合程序设计[M]. 北京:北京航空航天大学出版社,2005.
[3] 邢辉.基于C++ Builder和MATLAB混合编程的仿真应用[J].计算机与现代化,2005(10).
[4] 张宝利.从Matlab版本间差异看VC与Matlab混合编程趋势[J].长春工业大学学报:自然科学版,2008,29(02).
[5] 彭博栋.VC6.0与MATLAB7.X混合编程方法研究[J].计算机与数字工程,2008,36(09).
[6] 黄金明. VC++与MATLAB的混合编程研究[J]. 电脑开发与应用,2008,21(10).
[7] CHAPMA S J. Matlab programming for engineers[M]. Beijing: Science Press, 2003.
[8] 薛定宇. 反馈控制系统分析与设计[M]. 北京:清华大学出版社,2000.
[9] 黄坚.自动控制原理及其应用[M]. 北京:高等教育出版社,2004.
  

此内容为AET网站原创,未经授权禁止转载。