资源描述:
《matlab语言课件 第9讲 控制系统仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.2.1状态空间法的系统仿真6.2.2非线性环节的仿真6.2.3离散系统的仿真6.2.4控制系统SIMULINK仿真6.2控制系统仿真控制系统仿真信号流图状态空间单输入单输出系统(SISO)主要研究内容通过系统的数学模型和计算方法,编写程序运算语句,使之能自动求解各环节变量的动态变化情况,从而得到关于系统输出和所需要的中间各变量的有关数据、曲线等,以实现对控制系统性能指标分析与设计。实现步骤根据数学模型、要求的精度和时间,确定数值计算方法按算法要求通过分解、综合、等效变换等方法转换成适于在计算机上运行的公式上机调试并不断改进,满足系统各项动态性能指标,并得到理想的仿真结果
2、用合适的开发语言进行算法编程和实现多输入多输出系统(MIMO)6.2.1状态空间法的系统仿真一、四阶龙格-库塔(Runge-Kutta)法1、Runge-Kutta法推导实际上,可以由对求导得到为了提高精度,用r阶展开计算公式:我们考虑计算不同点上的值,由欧拉公式:用高阶差分代替各级导数这一思想得到各阶Runge-Kutta法。定义运算格式为:计算不同点上的函数值的线性组合为待定参数由式(1)用h幂次重新整理得通过台劳展开得(1)相比较系数,尽可能重合到较高幂次,而求得待定参数。以i=2为例,只计算两次函数的值。如何求出四个系数,将在点展开为在处取值则如此有:如果取,则满足
3、上式有递推公式:其局部截断误差为如果进而考虑计算两次函数值,而提高截断误差阶次呢?k2多展开一项:而有但注意:两式中的难以消掉,因此达不到两次计算函数值为此必须增加函数值的计算。来达到4阶精度,一般常用是计算4阶函数值,得到每步截断误差为的四阶Runge-Kutta法其递推公式为:2、根据四阶龙格-库塔法的递推公式:已知开环系统的状态方程为采用四阶龙格-库塔法进行求解和仿真,其求解步骤和方法如下::1、由,可知;2、仿真算法3、由时刻的状态为,得到取不断递推,便可得到所需时刻各点的状态变量和输出量。二、闭环系统的模型建立典型闭环控制系统的方框图对SISO系统r、u、y、v均
4、为标量,由图可知,得可得到系统的闭环状态方程:又由ode4()函数实现上述算法,其程序框图如下:ode4()函数调用格式为:[t,y]=ode4(A,B,C,D,x0,h,r,v,t0,tf)其中:{A,B,C,D}为系统的系数矩阵,x0为状态向量初值,h为仿真步长,r为输入信号的幅值,v为反馈系数,t0为仿真的起始时间,tf终止时间,输出值t为仿真时间,y为输出量。MATLAB中的ode45()函数可实现四阶/五阶龙格-库塔算法,其调用格式为:[t,y]=ode45('f',tspa,x0)其中:f为定义的常微分方程函数名,tspa为起止时间向量,x0为初始状态向量,例6
5、-1:已知系统的开环传递函数为:在零初始条件下,当输入信号的幅值为1时,试绘制单位负反馈系统的仿真曲线。令K=0.1,1,10,绘制单位负反馈系统的仿真曲线。例6-2:已知系统的状态方程为:在零初始条件下,阶跃信号的输入幅值为100,试应用状态空间法对系统进行仿真。当K=0.1时,令v=0.1,1,10,绘制反馈系统的仿真曲线。6.2.2非线性环节的仿真一、饱和非线性饱和非线性环节的数学表达式:uro-s1s1ucSaturation()函数调用格式为:uc=Saturation(ur,s1)其中:ur为输入向量s1为非线性环节的饱和值uc为输出向量N开始ur≥s1?ur>
6、0?uc=s1uc=-s1uc=ur返回NYYSaturation()函数实现上述算法,其程序框图如下:二、死区非线性死区非线性环节的数学表达式:Os1-s1ucurDeadZone()函数调用格式为:uc=DeadZone(ur,s1)其中:ur为输入向量s1为死区非线性环节的死区值uc为输出向量DeadZone()函数实现上述算法,其程序框图如下:N开始ur≥s1?ur>0?uc=ur-s1uc=0返回NYYuc=ur+s1三、间隙非线性间隙非线性环节的数学表达式:s1-s1ucurObacklash()函数调用格式为:[uc,uss]=backlash(urs,ur,
7、ucs,s1)其中:ur为输入向量,uc为输出向量urs,ucs为ur,uc前一时刻的值uss为下次运算保留的输入值s1为环节的间隙宽度值YYNNN开始ur>urs?ur-s1≥ucs?uc=ur-s1uc=ur+s1返回NYYuc=ucsur