
代数环
变压器损耗-出线机
2023年2月15日发(作者:陈苑淇)第3章连续系统仿真的方法
3.1数值积分法
连续系统数值积分法,就是利用数值积分方法对广微分方程建立离散化
形式的数学模型——差分方程,并求其数值解。可以想象在数学计算机上构
造若干个数字积分器,利用这些数字积分器进行积分运算。在数字计算机上
构造数字积分器的方法就是数值积分法,因而数字机的硬件特点决定了这种
积分运算必须是离散和串行的。
把被仿真系统表示成一阶微分方程组或状态方程的形式。一阶向量微
分方程及初值为
,
00
tY
YtY
Y=F
=
(3-1)
其中,Y为n维状态向量,F(t,Y)为n维向量函数。
设方程(3-1)在
011
,,,,
nn
ttttt
…处的形式上的连续解为
n+1n+1
00
tt
n+10
tt
t=Yt+,(),
n
YFtYdtYtFtYdt
(3-2)
设
n
=()
n
YYt,令
1nnn
YYQ
(3-3)
则有:
1n+1
t
n
YY
也就是说,
1(,)n
n
t
n
t
QFtYdt
(3-4)
如果
n
Y准确解()
n
Yt为近似值,
n
Q是准确积分值的近似值,则式(3-4)
就是式(3-2)的近似公式。换句话说,连续系统的数值解就转化为相邻两个
时间点上的数值积分问题。
因此,所谓数值解法,就是寻求初值问题(3-1)的真解在一系列离散
点
12n
ttt<…<…上的近似解
12
,,,
n
YYY……,相邻两个时间离散点的间隔
1nnn
tt
h,称为计算步距或步长,通常取
n
hh
为定值。可见,数值积分
法的主要问题归结为对函数
(,)Fty
的数值积分问题,即如何求出该函数定积
分的近似解。为此,首先要把连续变量问题用数值积分方法转化成离散的差
分方程的初值问题,然后根据已知的初值条件
0
y,逐步地递推计算后续时刻
的数值解(1,2,)
i
yi…。所以,解初值问题的数值方法的共同特点是步进式的,
采用不同的递推算法,就出现各种不同的数值积分方法。
3.2替换法
基于数值积分的连续系统仿真方法具有成熟、计算精度比较高的优点,
但算法公式比较复杂、计算量比较大,通常只有在对速度要求不高的纯数字
仿真时使用。当进行实时仿真或在计算机控制系统中实现数字控制器的算法
时,要求计算速度快,以便能在一个采样周期内完成全部计算任务,这就需
要一些快速计算方法。
用数值积分方法在数字机上对一个连续系统进行仿真时,实际上已经进
行了离散化处理,只不过在离散化过程中每一步都用到连续系统的模型,离
散一步计算一步。那么,能否先对连续的模型进行离散化处理,得到一个“等
效”的离散化模型,以后的每一步计算都直接在这个离散化模型基础上进行,
而原来的连续数学模型不再参与计算呢?回答是肯定的。这些结构上比较简
单的离散化模型,便于在计算机上求解,不仅用于连续系统数字仿真,而且
也可用于数字控制器在计算机上实现。
替换法的基本思想是:对于给定的函数G(s),设法找到s域到z域的
的某种映射关系,它将S域的变量s映射到z平面上,由此得到与连续系统
传递函数G(s)相对应的离散传函G(z)。进而再根据G(z)由z反变换
求的系统的时域离散模型——差分方程,据此便可以进行快速求解。
根据z变换理论,s域到z域的最基本的映射关系是TsZe
或
1
lnsz
T
如
果按这一映射关系直接代入G(s),得到的G(z)是相当复杂的,不便于算
法实现,所以往往借助于Z变换的基本映射关系TsZe
或
1
lnsz
T
作一些简
化和近似处理。
3.3离散相似法
“离散相似法”——将一个连续系统进行离散化处理,然后求得与它等价的
离散模型(差分方程)的方法。
获取离散相似模型的两个途径:
(1)对传递函数作离散化处理得离散传递函数——称为“频域离散相似
模型”;
(2)基于状态方程离散化——称为“时域离散相似模型[3]”;
对连续系统进行数字仿真可以先在系统加入虚拟的采样器和保持器,如图
3-1所示,
保持器G(s)
uy
TT
图3-1连续系统离散化结构图
附注:图3-1所示系统的采样开关和保持器实际上是不存在的,而是为
了将(3-5)式离散化而虚构的。
然后利用Z变换的方法求出系统的脉冲传递函数,再从脉冲传递函数求
出对应于系统G(s)的差分方程。
根据图3-1,有脉冲传递函数:
()
()()()
()
Yz
GzZGsGs
h
Uz
(3-5)
其中Gh(s)是保持器的传递函数。若选择不同的保持器,则可得不同的
G(z),见表3-1。
表3-1不同保持器的G(z)
假设连续系统的状态方程为:
xAxBu
(3-5)
若人为地在系统的输入端及输出端加上采样开关,同时为了使输入信号
复原为原来的信号,在输入端还要加一个保持器,如图3-2所示。
零阶保持器x=Ax+Bu
uy
TT
图3-2采样控制系统结构图
若对方程(3-5)式两边进行拉普拉斯变换,得:
即:()()(0)(sIAXsXBUs
以1()sIA左乘上式的两边可得:
11
()()(0)()()XssIAXsIABUs
(3-6)
保持器的传递函数Gh(s)脉冲传递函数G(z)
零阶:
1
Ts
e
s
1()zGs
Z
zs
一阶:
1
Ts
e
s
1()(1)
2
()
2
zGsTs
Z
z
Ts
三角形:
2
(1)
2
TsTs
ee
Ts
2
(1)()
2
zGs
Z
z
Ts
)()()()(sBUsAXXssX0
考虑到状态转移矩阵:
11
()
At
teLsIA
(3-7)
故对(3-6)式反变换可得:
()
()(0)()
0
At
At
t
XtexeBUd
(3-8)
此为(3-5)式的连续解,由此可推导出系统的离散解。
根据上式,n及n+1两个相连的采样瞬间,有:
()
()(0)()
0
AkT
AkT
kT
XkTexeBUd
(3-9)
(1)
(1)
(1)
(1)(0)()
0
AkT
AkT
kT
XkTexeBUd
(3-10)
将(3-10)式减去(3-9)式后乘以ATe,得:
将(3-11)式右边积分进行变量代换,即令:
kTt
(3-12)
则得:
()
(1)()()
0
ATt
AT
T
XkTeXkTeBUkTtdt
(3-13)
但由图3-2可知:若系统采用零阶保持器时,则两个采样点之间输入量
可看做常数,即u(nT+t)=u(nT),这样(3-13)式可写为:
(1)
(1)
(1)()()
AkT
kT
AT
XkTeXkTeBUd
kT
(3-11)
()
0
(1)()()
()()()()
T
ATATtXkTeXkTeBdtUkT
GTXkTHTUkT
式中:
()
()
()
0
AT
GTe
ATt
T
HTeBdt
第6章计算机仿真实例
6.1连续系统仿真的离散相似法
在研究对象的数学模型时,通过模拟研究可以预测这一对象在不同的输
入向量的作用下的行为,可为模型的简化提供数据。通常通过计算机仿真技
术可以估计各种不同的控制系统,在各种干扰作用下的过渡过程,进行方案
的分析比较,为选择最好的方案提供依据[7]。例如,对于一个复杂组分的控制
系统,采用数字计算机进行模拟,可以得到各种工况下的控制系统仿真分布
曲线,为正确选择仿真方法及路线提供可靠依据,并可以预测控制系统的动
态响应效果,所以在自动控制系统的设计、分析和研究中,计算机仿真技术是
一有效的手段。
控制系统方框图如图6-1所示,分析k=1,2时的系统的动态响应,(饱和
非线性环节斜率为1),
)(1.25)(ttR
。
图6-1控制系统方框图
用离散相似法分析计算如下:
第一步引入采样开关的零阶保持器,变成离散控制系统,如图6-2所示。
图6-2控制系统方框图
第二步求对象和调节器的状态方程,传递函数为
)1(
)(
ss
n
sG
由控制系统方框图中的传递函数,给出状态方程
1s1syx2nx1
-1
u
图6-3系统状态图
取:n=1,
101
11
100
22
xx
u
xx
2
yx
即:
10
10
A
,
1
0
B
由图中比例限幅调节器的特性可列出:
10[()()]10
()[()()],10[()()]10
10[()()]10
Rkyk
ukRkykRkyk
Rkyk
其中y(k)=[01]x(k)
第三步,离散状态方程
)()()()()1(kUTHKXTGkx
第四步,求取
)(TG
和)(TH,
111
1
0
1
()()
11
(1)
AT
s
GTeLsIAL
sss
=
0
11
T
T
e
e
000
1
0
()
0
111
TTT
TT
At
TT
ee
HTeBdtdtdt
ee
=
1
1
T
T
e
Te
设
()s=1()sIA称为预解矩阵。
det(sI-A):为其的行列式,adj(sI-A):为其的伴随矩阵,
预解矩阵:
()
()
det()
adjsIA
s
sIA
若取
45.0T
则:
0.637630
()
0.362371
GT
0.36237
()
0.08763
HT
第五步,由图6-1构成的离散系统,用递推法求解,
已知:0k时,
1.25)0(R
,
0)0(y
,
0)0(u
,
0)0(x
1.25)0()0()0(yRE
由调节器方程可知:
10)0(u
可求出
1,k
时
0.63763000.362373.6237
()10
0.36237100.087630.8763
xk
2k,时
0.6376303.62370.36235.9336
()10
0.3623710.87630.087633.0657
xk
这样一直运算下去,通过编程,计算机仿真,应用离散相似法控制系
统计算机仿真如图6-4示,图(a)1k,图(b)2k
354045
0
10
20
30
(a)
k=1
354045
0
10
20
30
40
(b)
k=2
图6-4仿真结果图
小结:
1.由于各个环节的输入量U(I)及输出量Y(I)每一步的数值都可求
出,所以这个程序很容易被推广到包含有非线性环节的系统仿真中去。
2.各个环节的离散状态方程的系数可以一次求出,不必象龙格——库
塔法那样,算一步就要计算一次龙格——库塔系数,因而计算工作量可适当
减少。
3.控制系统的分析是进行控制系统设计的基础,同时也是工程实际当中解
决问题的主要办法,因而对控制系统的分析在控制系统仿真中具有举足轻重的作
用。
离散相似法仿真程序:
clear
a=[0.63763,0;0.36237,1];
h=[0.36237;0.08763];
x0=[0;0];
u0=10;
y0=[0;0];
r=25.1;
forn=1:45
ifn==1
x(:,n)=a*x0+h*u0;
else
e=r-y(1,n-1);
ife>=10
u=10;
x(:,n)=a*x(:,n-1)+h*u;
else
u=e;
x(:,n)=a*x(:,n-1)+h*u;
end
end
y(1,n)=x(2,n);
end
subplot(2,1,1)
plot(y)
xlabel('(a)','fontweight','bold','fontname','宋体','fontsize',16);
gtext('k=1','fontsize',16)
a=[0.63763,0;0.36237,1];
h=2*[0.36237;0.08763];
x0=[0;0];
u0=10;
y0=[0;0];
r=25.1;
forn=1:45
ifn==1
x(:,n)=a*x0+h*u0;
else
e=r-yy(1,n-1);
ife>=10
u=10;
x(:,n)=a*x(:,n-1)+h*u;
else
u=e;
x(:,n)=a*x(:,n-1)+h*u;
end
end
yy(1,n)=x(2,n);
end
subplot(2,1,2)
plot(yy)
xlabel('(b)','fontweight','bold','fontname','宋体','fontsize',16);
gtext('k=2','fontsize',16)
6.2Simulink仿真中的代数环问题
无论是采用Fortran、C还是Matlab和Simulink语言,在编写计算程序
时,都会遇到代数环问题,代数环会给计算程序带来很大的麻烦,需要特别
注意。所谓代数环就是同一个模块中输出信号再重新送入到输入端口中。
首先介绍simulink的意义:
Simulink是一种以MATLAB为基础的实现动态系统建模、仿真与分析的软
件包,具有以下的主要功能:
(1)可以实现交互式建立系统的动态模型。
(2)良好的交互式仿真环境。
(3)扩充和定制功能。
(4)与MATLAB和工具箱的集成。
(5)专用模型库
Simulink还有专用程序包,可对系统模型进行代码生成。Simulink的开放式
结构允许用户扩展仿真环境,如生成自定义模块库等。由于Simulink可直接利
用MATLAB的诸多资源与功能,因而用户可在Simulink下完成诸如数据分析、
过程自动化、参数优化等工作。
本节将对Simulink的代数环问题进行讨论。
1
122
1
2314
xaxau
xaxax
例:利用Simulink求解方程组。
此题中直接利用Simulink求解此方程组时,会遇到代数环问题[8]。
(1)用Simulink建立方程组模型,保存为,如图(1)所
示。
2
Out2
1
Out1
x2
x1
sum2
sum1
a4
a4
a3
a3
a2
a2
a1
a1
SineWave
1
s
Integrator
图7-1具有代数环的系统模型
Simulink模型中存在一个代数环,由模块sum1、a4、sum2、和a1组成
一个代数环路。代数环中的每一个模块都具有一个相同的特征,就是模块的
输入和输出之间只有代数关系。这种代数关系,在时间上讲就是没有延迟,
在物理模型上讲就是无惯性。
(2)对方程进行处理
将方程组第二个方程代入第一个方程,可以得到:
13114211
xaaxaaxau
(7-1)
注意:
1.方程两边都出现状态导数,这就是代数环的方程表现形式之一。
2.本例所提出的方程组比较简单,所以非常容易看出代数环的问
题。但对于稍微复杂的系统,就很难直接判断是否含有代数环。
(3)代数环的处理方法
对于上面的方程或方程组,计算机并不会自动将方程进行整理,而把方
程两边进行合并。虽然Simulink在处理代数环的解算程序采用比较鲁棒的
Newton-Raphson方法,但仍不能够保证结果是收敛的。
通常处理代数环的方法:
1.人工排除代数环。
通过手工整理方程,得到如下方程组:
13
2
1
1414
1
11
aa
a
xxu
aaaa
(7-2)
3
24
21
1414
11
a
aa
xxu
aaaa
(7-3)
简化得
1121
xkxku
(7-4)
2314
xkxku
(7-5)
其中
133
224
1234
14141414
,,,
1111
aaa
aaa
kkkk
aaaaaaaa
说明:如果代数环对计算速度的影响不大,那就不必理会;如果代数
环对计算速度的影响很大,通常可以加入记忆模块或者代数约束模块,消除
模块的代数环。
2.利用Memory模块消除代数环。
(4)建立Simulink模型
i.首先对手工整理的方程进行建模。
对方程(2)和(3)建立Simulink模型,保存为,如图7-2所
示
2
Out2
1
Out1
x2
x1
a2*a4/(1+a1*a4)
k4
a3/(1+a1*a4)*u
k3
a2/(1+a1*a4)
k2
a1*a3/(1+a1*a4)
k1
Subtract
SineWave
1
s
Integrator
Add
图7-2整理方程组消除代数环后的Simulink模型
ii.利用Memory模块消除代数环。
在图7-1所示Simulink模型的基础上,添加一个记忆环Memory模块,
保存为,如图7-3所示。
2
Out2
1
Out1
x2
x1
sum2
sum1
a4
a4
a3
a3
a2
a2
a1
a1
SineWave
Memory
1
s
Integrator
图7-3添加记忆模块的Simulink模型