第六拿 统访真 61状态空间法的系统仿真 62非线性环节的仿真 63离散系统的伤直 645MUNK真
第六章 控制系统仿真 6.1 状态空间法的系统仿真 6.2 非线性环节的仿真 6.3 离散系统的仿真 6.4 SIMULINK仿真
第六章控制糸统仿真 控制系统仿真 信号流图 单输入单输出系统 (SISO) 状态空间 多输入多输出系统 (MIMO) 主要研究内容 通过系统的数学模型和计算方法,编写程序运算语句,使之能自动求 解各环节变量的动态变化情况,从而得到关于系统输岀和所需要的中间各 变量的有关数据、曲线等,以实现对控制系统性能指标的分析与设计。 实现步骤 根据数学模型、要求 按算法要求通过分解、 用合适的开发语 上机调试并不断改进, 的精度和时间,确定 综合、等效变换等方 言进行算法编程 满足系统各项动态性能 数值计算方法 法转换成适于在计算 指标,并得到理想的仿 机上运行的公式 和实现 真结果
控 制 系 统 仿 真 信号流图 状态空间 单输入单输出系统 (SISO) 主要研究内容 通过系统的数学模型和计算方法,编写程序运算语句,使之能自动求 解各环节变量的动态变化情况,从而得到关于系统输出和所需要的中间各 变量的有关数据、曲线等,以实现对控制系统性能指标的分析与设计。 实现步骤 根据数学模型、要求 的精度和时间,确定 数值计算方法 按算法要求通过分解、 综合、等效变换等方 法转换成适于在计算 机上运行的公式 上机调试并不断改进, 满足系统各项动态性能 指标,并得到理想的仿 真结果 用合适的开发语 言进行算法编程 和实现 多输入多输出系统 (MIMO)
第六章控制糸统仿真 6.1状态空间法的系统仿真 、四阶龙格-库塔( Runge- Kutta)法 1、 Runge-Kutta法推导 h2 h 为了提高精度,用阶展开计算公式:ym+1=yn+加+n+) 2! 实际上yn,可以由对∫(x,y)求导得到 y=f +ff y=fx+fy.f+ov+f,f).f+f (+ff fn+2fn·f+f·f,+fn·f2+f2·f 高阶微商就更复杂了
6.1 状态空间法的系统仿真 一、四阶龙格-库塔(Runge-Kutta)法 1、Runge-Kutta法推导 '' n 实际上 y ,可以由对 f x y ( , ) 求导得到 '' ''' 2 2 ( ) ( ) 2 x y xx xy xy yy y x y xx xy x y yy y y f f f y f f f f f f f f f f f f f f f f f f f f = + = + + + + + = + + + + 高阶微商就更复杂了。 为了提高精度,用r阶展开计算公式: 2 ' '' ( ) 1 2! ! r r n n n n n h h y y hy y y r + = + + + +
第六章控制糸统仿真 我们考虑计算不同点上f(x,y)的值,由欧拉公式: y+hf(rn,yn) 用高阶差分代替各级导数这一思想得到各阶 Runge- Kutta法, k1=hf(xn,yn)计算不同点上的函数值的线性组合 定义运算格式为: 机f(xn+ahy+∑bk 为待定参数 由式(1)用次重新整理得ym=yn+∑ck 通过台劳展开得 yO x, +h)=y(n)+hy(xn)+hy(xn)+ 2 相比较系数,尽可能重合到较高幂次,而求得待定参数
我们考虑计算不同点上 f x y ( , ) 的值,由欧拉公式: 用高阶差分代替各级导数这一思想得到各阶Runge-Kutta法。 定义运算格式为: 1 ( , ) n n k hf x y = 1 1 ( , ), 1,2, i i n i n ij j j k hf x a h y b k i n − = = + + = 计算不同点上的函数值的线性组合 , , i ij i a b c 为待定参数 由式(1)用h幂次重新整理得 1 1 n n n i i i y y c k + = = + 通过台劳展开得 1 ( , ) n n n n y y hf x y + = + (1) ' 2 '' 1 ( ) ( ) ( ) ( ) 2 ! n n n n y x h y x hy x h y x + = + + + 相比较系数,尽可能重合到较高幂次,而求得待定参数
第六章控制糸统仿真 以i=2为例,只计算两次函数f(x,y)的值。 h+1一 yn+CK,+c,k2 k,=hf(n,yn) k2=hf(n+a2h, yn+b2k) 如何求出G,C2a2b21四个系数,将k12k2在(xn,yn)点展开 k,=hf(n, yn)=hy (x k2=(xn+a2h,yn+b2k)=hf(x,y(x,)+a2byx+b2:k,]+o(h2) f,J,为在xn,yn处取值 ml=y(xn)+(C,+C2 hy(xn)+c,a,h(f +fk)+o(h)
以i=2为例,只计算两次函数 f x y ( , ) 的值。 1 1 1 2 2 1 2 2 21 1 ( , ) ( , ) n n n n n n y y c k c k k hf x y k hf x a h y b k + = + + = = + + 1 2 2 21 c c a b , , , 1 2 k k, ( , ) n n 如何求出 四个系数,将 在 x y 点展开 ' 1 ( , ) ( ) n n n k hf x y hy x = = 3 2 2 21 1 2 21 1 ( , ) [ ( , ( )) ] ( ) n n n n x y k hf x a h y b k h f x y x a hf b k f o h = + + = + + + , x y f f , n n 为在 x y 处取值 则 ' 2 3 21 1 1 2 2 2 1 2 ( ) ( ) ( ) ( ) ( ) n n n x y b y y x c c hy x c a h f f k o h a + = + + + + +
第六章控制糸统仿真 如此有 y(xn+h=y(rn+ hy(xn)+hy(xn) 2 C1+c2 202 如果取G=c17q2=b1=1,则满足上式有递推公式: +=k1+ k,=hf(n, yn) k,=hf(n+,y+ku) 其局部截断误差为O(h3)
如此有: ' 2 '' 1 ( ) ( ) ( ) ( ) 2 ! n n n n y x h y x hy x h y x + = + + 21 1 2 2 2 2 1 1, , 1 2 b c c c a a + = = = 如果取 1 2 2 21 1 , 1 2 c c a b = = = = 则 ,则满足上式有递推公式: 1 1 2 1 2 1 1 1 2 2 ( , ) ( , ) n n n n n n y y k k k hf x y k hf x h y k + = + + = = + + 其局部截断误差为 3 o h( )
第六章控制糸统仿真 如果进而考虑计算两次函数值∫(x,y),而提高截断误差阶次呢?k多展开一项: k2=hf(xn,y(x,)+(a2+b2kf)+(a2hx+2a2b2Mf+b2fm)+O(h) f(xn,y(x)+a21(1+21f,)+a2h(x+221fmf+21f/2+O(h) 而有 n1=y(x)+(c1+c2)y(xn)+a1C2h(1+,)+2a2h(mx+2f+Jmf2)+O(h) 但 y(x)=y(xn)+h(xn)+,(fx+:f力)+,(x+2Jxf+fmf2+ff,+力)+O(h) 注意 y(xn=u+f f)=f+2f f+fy f+f f +ff f 两式中的∫J,f难以消掉,因此达不到两次计算函数值f(x,y)来达到4阶精度, 为此必须增加函数值的计算
如果进而考虑计算两次函数值 f x y ( , ) ,而提高截断误差阶次呢? k2多展开一项: 1 2 2 2 2 3 2 2 21 1 2 2 21 1 21 2 2 2 3 2 4 21 21 21 2 2 2 2 2 2 1 [ ( , ( )) ( )] ( 2 ) ( ) 2 ! 1 ( , ( )) ( ) ( 2 ( ) 2 n n x y xx xy yy n n x y xx xy yy k h f x y x a hf b k f a h f a b hk f b k f o h b b b hf x y x a h f f f a h f f f f f o h a a a = + + + + + + = + + + + + + 而有 2 ' 2 2 3 2 4 21 21 21 1 1 2 2 2 2 2 2 2 2 2 1 ( ) ( ) ( ) ( ) ( 2 ) ( ) 2 n n n x y xx xy yy b b b y y x c c hy x a c h f f f c a h f f f f f o h a a a + = + + + + + + + + 但 2 3 ' 2 2 4 1 ( ) ( ) ( ) ( ) ( 2 ) ( ) 2! 3! n n n x y xx xy yy x y y h h y x y x hy x f f f f f f f f f f f f o h + = + + + + + + + + + 注意: ''' ' 2 ( ) ( ) 2 n x y xx xy yy y x y y y x f f f f f f f f f f f f f = + = + + + + 2 , x y y 两式中的 f f f f 难以消掉,因此达不到两次计算函数值 f x y ( , ) 为此必须增加函数值的计算。 来达到4阶精度
第六章控制糸统仿真 一般常用是计算4阶函数值,得到每步截断误差为O(h)的四阶 Runge-Kutta法 其递推公式为 yn+1=yn+(k1+2k2+2k3+k4) k,=hf(rn,yn) h k k2=h(xn+-,yn+=) 2 k3=h(x⊥hWy 2 2 k4=hf(xn+h,y+k3)
一般常用是计算4阶函数值,得到每步截断误差为 5 o h( ) 的四阶Runge-Kutta法 n 1 1 2 3 4 1 1 2 2 3 4 3 1 ( 2 2 ) 6 ( , ); ( , ); 2 2 ( , ); 2 2 ( , ) n n n n n n n n n y y k k k k k hf x y h k k hf x y h k k hf x y k hf x h y k + = + + + + = = + + = + + = + + 其递推公式为:
第六章控制糸统仿真 仿真算法 已知开环系统的状态方程为x=Ax+B 采用四阶龙格-库塔法进行求解和仿真,其求解步骤和方法如下: 1、由x=Ax+Bl,可知f(t,x)=Ax+B; k,=f(t,, xu) 2、根据四阶龙格-库塔法的递推公式: h k=(4+2,x+2) h k,=f(tn +o,x,+k2) 2 k 4=f(tn+h,xn+ hk +(k1+2k2+2k3+k 3、由tn+1时刻的状态为n+1,得到 ym+1=Cxn+ 取n=012…N不断递推,便可得到所需时刻各点的状态变量x(n)输出量y(tn)
= + + + + = + + = + + = + + = + ( 2 2 ) 6 ( , ) ) 2 , 2 ( ) 2 , 2 ( ( , ) n 1 1 2 3 4 4 3 3 2 2 1 1 k k k k h x x k f t h x hk k h x h k f t k h x h k f t k f t x n n n n n k n n n 2、根据四阶龙格-库塔法的递推公式: 已知开环系统的状态方程为 = = + y Cx x Ax Bu 采用四阶龙格-库塔法进行求解和仿真,其求解步骤和方法如下:: 1、由 x = Ax + Bu ,可知 f (t, x) = Ax + Bu ; 2、仿真算法 3、由 t n+1 时刻的状态为 x n+1 ,得到 n+1 = Cxn+1 y 取 n = 0,1,2, , N 不断递推,便可得到所需时刻各点的状态变量 x(t n )和输出量 y(t n )
第六章控制糸统仿真 闭环系统的模型建立 文=Ax+B C V 典型闭环控制系统的方框图 对S|S0系统r;uy,ν均为标量,由图可知=r-Vy,得 X= Ax+ b(r-vy) 又由 可得到系统的闭环状态方程:x=(A-BC)x+b=A2x+B
二、闭环系统的模型建立 典型闭环控制系统的方框图 对SISO系统r、u、y、v 均为标量,由图可知 u = r − vy ,得 x = Ax + B(r − v y) 可得到系统的闭环状态方程: x = A− BvC x + Br = A x + Br b ( ) 又由 y = Cx