MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答MATLAB与控制系统仿真实践第16章非线性控制系统分析MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答主要内容原理要点非线性系统概述相平面法描述平面法原理要点非线性系统的研究方法由于系统的复杂性和多样性而成为控制界的研究热点,从而产生了很多理论方法。比较基本的有李雅普诺夫第二法,小范围线性近似法,描述函数法,相平面法,计算机仿真等等。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答1.典型的非线性特性典型的非线性特性有死区非线性、饱和非线性、间隙非线性、继电非线性等。Simulink给出了部分非线性特性模块。用户也可以自行构建非线性特性模块。2.非线性控制系统含有非线性元件或环节的控制系统称为非线性控制系统。非线性系统输出暂态响应曲线的形状与输入信号的大小和初始状态有关,非线性系统的稳定性亦与输入信号的大小和初始状态有关。非线性系统常会产生持续振荡。3.描述函数法非线性特性的描述函数法是线性部件频率特性在非线性特性中的推广。它是对非线性特性在正弦信号作用下的输出进行谐波线性化处理之后得到的,是非线性特性的一种近似描述。4.用描述函数研究系统的稳定点的方法用描述函数研究系统的稳定点的方法,是建立在线性系统Nyquist稳定判据基础上的一种工程近似方法。其基本思想是把非线性特性用描述函数来表示,将复平面上的整个非线性曲线()理解为线性系统分析中的临界点,再将线性系统有关稳定性分析的结论用于非线性系统。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答16.1非线性系统概述含有非线性元件或环节的控制系统称为非线性控制系统。一般非线性系统的数学模型可表示为:11()()()()[,,...,,(),,...,()]0nnmnnmdxtdxtdxtdutFxtutdtdtdtdt写成多变量的形式为:()[(),(),]XtfXtUttMATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答在F与f函数中,如果相应的算子为线性,则称为线性系统,否则称为非线性系统。如果不显含t,则为时不变系统,若显含t,则称为时变系统。非线性系统输出暂态响应曲线的形状与输入信号的大小和初始状态有关,非线性系统的稳定性亦与输入信号的大小和初始状态有关。非线性系统常会产生持续振荡。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答16.2非线性特性模块的构建及示例典型的非线性特性有死区非线性、饱和非线性、间隙非线性、继电非线性等。Simulink给出了部分非线性特性模块。这在Simulink一章中已列出。在系统仿真中可以直接使用。但对于没有提供的模块则需要我们自己构建。那么如何根据需要构建任意的非线性模块呢?事实上,任意的静态非线性模块,无论其是单值非线性,还是多值非线性,都可以由Simulink构建,并直接用于仿真。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答例1:构建如图16.1分段线性的非线性特性模块。(-3,-1)(-2,-1)(-1,0)(2,0)(3,1)(4,1)图16.1例1非线性特性MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答1.新建一个空白模型。在模型中添加子模块集LookupTables中的LookupTable模块。2.设置模块属性。双击LookupTable模块进入其属性设置窗口,如图16.2,并添加非线性特性值。其中,Vectorofinputvalues栏为横坐标向量,而Tabledata栏为纵坐标向量。需要注意的是,如果仅添加了图中的所有转折点坐标,则位于最左侧与最右侧外边的特性将无法表现。因此还应该在特性曲线的两侧再找两点,从而完整地表现非线性特性。根据非线性函数,位于最左侧转折点(-3,-1)之外的点取为(-4,-2),位于最右侧转折点(4,1)之外的点取为(5,2)。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答图16.2非线性特性属性设置窗口MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答例2:构建如图16.3的回环非线性特性模块。(-3,-2)(-2,-2)(1,0)(2,0)(2,2)(3,2)(-1,0)(-2,0)图16.3例2非线性特性MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答分析:该特性在输入信号增加时走一条折线,而在输入信号减小时走另一条折线。可以将特性分解为两个单值函数。如图16.4。根据例1的结果,这两个单值函数都可以用查表模块实现。这里有两个问题需要解决。一是如何判断输入是增加还是减小?在判断输入信号是否为增加时,可通过比较输入信号的当前值和它的上一步值进行判断。而Simulink离散模块组中提供的Memory模块,可以用来记忆上一个计算步长的信号值,这样将输入信号的当前值和它的上一步值分别作为比较模块(RelationalOperator)的输入,即可输出代表上升还是下降的逻辑值1和0。二是如何控制特性曲线走不同折线?Simulink中的SignalRouting子模块组中Switch模块,使用比较模块的输出作为输入控制,即可使模块对输入信号的不同变化走不同折线。具体实现如图16.5:MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答(-2,-2)(2,0)(3,2)(-1,0)(-3,-2)(1,0)(2,2)(-2,0)(a)输入上升分支(b)输入下降分支图16.4特性分解后的两个单值函数MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答Out11输入下降分支输入上升分支SwitchRelationalOperator=MemoryIn11图16.5例2非线性特性的Simulink模型MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答1.新建一个空白模型。添加所需的不同模块。2.进行不同模块的连接并进行属性设置。图16.5中,输入上升分支和输入下降分支都是调用了查表模块。其设置见图16.6。(a)输入上升分支设置窗口MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答(b)输入下降分支设置窗口图16.6例2非线性特性设置窗口MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答对输入信号当前值和其上一步的值比较,如果当前值大于等于前一步值,则模块表现为上升分支的特性;反之,则表现为下降分支的特性。RelationalOperator(比较模块)默认值为=,我们根据需要改为=。Switch(开关模块)的控制阀值(Threshold)可以设置。这里设为0.5。即控制端输入=0.5时,按上升分支特性输出,否则按上降分支特性输出。3.给定输入,观察非线性模块的特性。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答inreasedecreaseToWorkspacesimoutSwitchSineWaveScopeRelationalOperator=Memory图16.7例2非线性特性在正弦输入的Simulink模型MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答本例给定输入为正弦信号,其幅值分别设为2、4,其输出可以用示波器模块直接观察,也可以输出到工作空间后,使用plot函数绘制。其Simulink模型如图16.7。本例输出到工作空间变量名设为simout,其保存格式设为Array,在命令窗口使用plot函数绘制,运行结果如图。plot(tout,simout(:,1),tout,simout(:,2))MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答012345678910-2-1.5-1-0.500.511.52012345678910-4-3-2-101234(a)输入信号幅值为2时的仿真输出(b)输入信号幅值为4时的仿真输出图16.8例2不同输入下的仿真输出MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答16.3相平面法16.3.1相平面法概述相平面法是一种求解二阶以下线性或非线性微分方程的图解方法。对于形如下式的二阶系统(,)0xfxxMATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答涉及的概念有:1.相平面:以为横坐标,为纵坐标的直角坐标平面构成相平面。2.相轨迹:以时间为参变量,由表示运动状态的分别作为横坐标和纵坐标而绘制的曲线称为相轨迹,每根相轨迹与起始条件有关。表示了质点在时刻的位置和速度。3.相平面图:同一系统,不同初始条件下的相轨迹是不同的。由所有相轨迹组成的曲线族所构成的图称为相平面图。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答16.3.2基于MATLAB的相轨迹图绘制实例例3:绘制如下系统的单位阶跃输入时的相轨迹。其中,非线性部分为饱和非线性,0.3,0.3,0.30.3,0.3xyxxx线性部分为10()(4)Gsss系统初始状态为0。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答1.新建一个空白模型。将所需的不同模块添加到空白模型中。2.连接各模块并设置各模块参数。这里将饱和非线性模块upperlimit设为0.3,lowerlimit设为-0.3。其它模块的设置不再赘述,模型如图16.9。XYGraphTransferFcn10s+4ToWorkspace1simout1ToWorkspacesimoutStepScopeSaturationIntegrator1s图16.9例3的Simulink模型MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答3.设置仿真参数。如图16.10,将Solveroptions下的Type项选为Fixed-step,Solver项选ode5(Dormand-Prince),Fixed-stepsize设为0.01。图16.10仿真参数设置窗口MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答4.开始仿真。相轨迹可以直接观察XYGraph输出,也可使用输出到工作空间的参数绘制,如图16.11所示。plot(simout(:,1),simout1(:,1))grid00.20.40.60.811.21.4-0.100.10.20.30.40.50.60.70.8图16.11例3输出的相轨迹MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答系统阶跃响应输出如图16.12所示。图16.12系统阶跃响应输出由16.11分析可知,系统的稳定点在(1,0)点,即稳态值为1。MATLAB与控制系统仿真实践,北京航空航天大学出版社,2009.8.在线交流,有问必答16.4描述函数法16.4.1描述函数法概述P.J.Daniel于1940年首先提出了描述函数法。非线性特性的描述函数法是线性部件频率特性在非线性特性中的推广。它是对非线性特性在正弦信号作用下的输出进行谐波线性化处理之后得到的,是非线性特性的一种近似描述。MATLAB与控制系统仿真实践,北京航空