在Matlab中,大多时候,我们都是用M语言,输入系统的传递函数后,用bode函数绘制bode图对系统进行频率分析,这样做,本人觉得效率远不如Simulink建模高。如何在Matlab/Simulink中画bode图,以前也在网上查过些资料,没看到太多有用的参考。今天做助教课的仿真,又要画电机控制中电流环的bode图,模型已经建好,stepresponse也很容易看出来,可这bode图怎么也出不来,又不愿意用m语言写出传递函数再画。baidu和google了好一阵,几乎没有一个帖子说的清清楚楚的,经过一番摸索,终于掌握了Simulink里画bode图的方法。.其实,Simulink里画bode图,非常的easy,也很方便。写此文的目的是希望对那些常用Simulink进行仿真希望画bode图又不愿用M语言的新手有所帮助。
以下均是以Matlab R2008a为例。
首先,在simulink里建好model。如图1,这里需要注意的是,输入和输出要用input port和outputport,这样以后画bode图的时候,系统就会知道是这两个变量之间的关系。
图1 建好model
其次,选择线性分析。Tools->Control Design->Linear Analysis。如图2。
图2 选择Linear Ansysis
将出现如图3所示的Control and Estimation ToolsManager窗口。
图3 Control and Estimation Tools Manager窗口
第三步,激动人心的时刻到了,哈哈。如果你是按照前面的步骤来的,那么这时候,你就应该可以直接画出bode图,在窗口的下方,将“Plotlinear analysis result in a ”前面的方框打上勾,已打的就不用管了,再在后面的下拉框里选择“boderesponse plot”,即画output port和input port之间的bode图,再点击“LinearizeModel”按钮,就OK了。其实除了bode图,还可以画其他很多响应曲线,比如step response、impulseresponse和Nyquist图等等,只需选择相应的step response plot,inpulse responseplot或者Nyquist plot等等。方法都是相同的。选择选择“bode response plot”,如图4所示。
图4 画出bode图
稍等片刻,便出现了图1中output port和inputport的bode图了。是不是很简单?!
图5 model的bode图
至此,bode已经画完。如果此时还想看看stepresponse或者Nyquist图,也是可以的。只需在bode图上右击,选择PlotTypes->Step或者Nyquist等等,as youneed!我们选择step,便会出现阶跃响应图。如图6、7所示。
图6 画阶跃响应
图7 显示阶跃响应
上面的bode图和stepresponse都没有网格,看着不精确,没关系。在图上右击,选择Grid,就能出现网格了。想要知道曲线上某点的坐标时,只需在该点上单击,就会显示出该点的坐标值。如图8a,8b。
图8a
图8b 显示网格和曲线上的坐标
关于图画里的操作,就介绍这么多,其他的功能自己去摸索。
回到图3中的Control and Estimation ToolsManager窗口。在该窗口中,除了可以画bode图之外,还可以看到系统的状态方程、传递函数或者零极点方程。运行完“LinearizeModel”后,单击左侧“Linearization Task”下的“Model”,在下方的下拉列表里选择“Zero PoleGain”(也可以选择“State Space”或者“TranseferFunciton”),就能看到系统输入输出的零极点增益方程。如下图9。
图9 查看系统输入输出之间的关系描述(状态议程、零极点增益、传递函数)
通过LinearAnalysis工具,我们可以得到很多关于系统的直观的或者非直观的信息,如bode图、Nyquist图、状态方程、传递函数等等。
以上简单介绍了Matlab/Simulink中利用ControlDesign的LinearAnalysis绘制系统的bode图,及查看系统输入输出关系的描述。Matlab的功能十分强大,还有许多功能需要探索,以便其更好的帮助我们完成系统建模仿真和控制等。