电气工程学报, 2021, 16(2): 159-165 doi: 10.11985/2021.02.020

电力系统

基于功率模拟的联合仿真技术研究

艾凤明,1, 冯首鸿2, 梁兴壮1, 李伟林2, 林秦州2

1.中国航空工业集团公司沈阳飞机设计研究所 沈阳 110035

2.西北工业大学自动化学院 西安 710129

Research on Joint Simulation Technology Based on Power Simulation

AI Fengming,1, FENG Shouhong2, LIANG Xingzhuang1, LI Weilin2, LIN Qinzhou2

1. AVIC Shenyang Aircraft Design & Research Institute, Shenyang 110035

2. School of Automation, Northwestern Polytechnical University, Xi’an 710129

收稿日期: 2020-05-18   修回日期: 2020-08-29  

Received: 2020-05-18   Revised: 2020-08-29  

作者简介 About authors

艾凤明,男,1987年生,硕士,工程师。主要研究方向为能源智能控制技术。E-mail: afm2008@126.com

摘要

在研究联合仿真耦合系统时,需要兼顾系统的准确性和快速性。线性隐性稳定方法在保证系统稳定的前提下对仿真运算时间具有一定的加速作用。该方法通过联合仿真的并行化来提高仿真速度的同时,兼顾了仿真效率和仿真精度。基于联合仿真的FMI标准下的工程实例证明了该方法使系统具有良好的稳定性和准确性,且相比于参考仿真系统具有较高的仿真效率。对于多领域的大系统建模方案,提出一种基于FMI通用接口标准的仿真方法可以实现FMI标准与Dymola平台结合的建模仿真验证。

关键词: 联合仿真 ; 并联系统 ; 稳定性 ; FMI

Abstract

It is necessary to take into account the speed of the system when researching the co-simulation coupling system. The linear recessive stabilization method can accelerate the simulation operation time under the premise of ensuring the stability of the system. The simulation efficiency and simulation accuracy can also be taken into account when researching the co-simulation coupling system. The engineering example under the FMI standard based on joint simulation also proves that this method makes the system have good stability and accuracy, and compared with the reference simulation, the system has higher simulation efficiency. For large-scale system modeling solutions in multiple fields, a simulation method based on the FMI universal interface standard is proposed. The modeling simulation verification of the FMI standard combined with the Dymola platform can be achieved using the method.

Keywords: Co-simulation ; parallel system ; stability ; FMI

PDF (448KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

艾凤明, 冯首鸿, 梁兴壮, 李伟林, 林秦州. 基于功率模拟的联合仿真技术研究. 电气工程学报[J], 2021, 16(2): 159-165 doi:10.11985/2021.02.020

AI Fengming, FENG Shouhong, LIANG Xingzhuang, LI Weilin, LIN Qinzhou. Research on Joint Simulation Technology Based on Power Simulation. Journal of Electrical Engineering[J], 2021, 16(2): 159-165 doi:10.11985/2021.02.020

1 引言

复杂系统的设计已经证实了仿真是从概念设计到样品实现过程中不可或缺的步骤。事物仿真需要考虑初步估计、择优甚至是现有方案在实施前的重新设计,因此会降低风险。建立元器件本身及其之间交互作用的高保真模型,能够使仿真的结果更具有确信度。

联合仿真是现阶段最有效的耦合系统仿真方案。从数学方面分析,联合仿真由一组常微分方程和微分代数方程构成,而仿真时间包括子系统之间的通信节点时间和每一个子系统内部的积分时间。分析一个联合仿真系统是否符合要求需要对其稳定性、准确性和快速性进行分析。

联合仿真系统中,每一个仿真器都可以看成是一个动态系统,它们之间具有信号的传递,传递的信号与上一次信号传递的时间间隔为一个宏步长,该步长的大小反映了系统仿真计算时间的长短。通常情况下,仿真过程结果都希望具有最小的通信时间,然而考虑到系统稳定性,该计算时间不能无限变小,所以需要找出兼顾计算效率和计算稳定性的方法来满足系统在仿真需求。为了提高仿真速度,联合仿真的并行化速度也需要提高,然而并行的子模型和相关求解器之间的松耦合会引起积分误差,为了保证误差在预先要求的范围内,同样需要兼顾考虑仿真效率和仿真精确度的关系。

Dymola是一款基于Modelica语言的多领域仿真平台。Modelica语言可以实现各模块库之间的连接,进行多领域仿真。文献[1]通过Modelica语言搭建了包括交流发电机、变压整流器、电源系统接触器和过欠压、过欠频检测模块等部件的数字仿真模型和供电系统模型,并完成系统逻辑设计。通过特殊的接口,Dymola可以与多款软件实现联合仿真,现在国内外的主要研究方向为对电机的控制和汽车系统建模。文献[2]利用Simulink、CarSim、Dymola软件实现对负荷传感液压转向系统的联合仿真;Dymola符合FMI接口协议,所以可以输入输出FMU模型;文献[3]在Dymola中实现二极管模型的FMU模型输出;文献[4]在Dymola中实现热流体模型的FMU模型输出;文献[5]是对自动嵌入式物理模型的FMI研究;文献[6]将Modelica模型通过FMI输出到Excel表格中,通过FMI Toolbox for Matlab工具生成FMU模型,最后导入Dymola平台中进行联合仿真,实现控制器算法模型和Dymola整车联合仿真测试。

本文对联合仿真系统模型进行了数学分析,建立了系统微分方程,在稳定和精度要求下提出了线性隐性计算方法,并提出了基于FMI协议的联合仿真计算流程,最后通过一个工程例子说明了该方法的实际应用效果。

2 联合仿真系统模型分析

用非线性微分方程描述一个连续离散混合动态系统Σ形式如下

$\left\{ \begin{align} & \text{X}=f\left( t,\text{X},\text{D},\text{U} \right) \\ & \text{Y}=g\left( t,\text{X},\text{D},\text{U} \right) \\ \end{align} \right. \qquad {{t}_{n}}\le t<{{t}_{n+1}}$

式中,$\text{X}\in {{R}^{{{n}_{x}}}}$是连续状态向量;$\text{D}\in {{R}^{{{n}_{D}}}}$是离散状态向量;$\text{U}\in {{R}^{U}}$是输入向量;$\text{Y}\in {{R}^{{{n}_{Y}}}}$是输出向量;$t\in {{R}^{+}}$表示时间。

严格增加的时间变量序列${{({{t}_{n}})}_{n\ge 0}}$代表被称为状态事件的间断点,它们是$h\left( t,X,D,U \right)=0$方程的根。函数h通常被称为事件指示器或过零函数,用于进行事件检测和定位。

每一个时刻都会计算得到一个连续状态向量$X\left( {{t}_{n}} \right)=I\left( {{t}_{n}},X,D,U \right)$作为事件句柄的结果和一个离散状态变量$D\left( {{t}_{n}} \right)=J\left( {{t}_{n-1}},X,D,U \right)$作为离散状态更新的结果。如果$X\left( {{t}_{n}} \right)$没有受到间断点的影响,该向量的右极限将会和它在${{t}_{n}}$处的取值相等。

假设Σ对于变量$X\left( {{t}_{0}} \right)$和$D\left( {{t}_{0}} \right)$均存在相应的初始状态,从而使得XDUY在$\left[ {{t}_{n}},{{t}_{n+1}} \right]$内是分段光滑的连续函数。将模型分为几个子模型使得系统能够并行运行,为了简化分解过程,图1将整个系统分解成了两个子系统。该方法可以推广至将系统Σ任意分解为N个模块[7]

图1

图1   被分割并行的系统


因此系统Σ可以重新写成

$\begin{align} & \left\{ \begin{matrix} \overset{\centerdot }{\mathop{{{X}_{1}}}}\,={{f}_{1}}\left( {{X}_{1}},{{X}_{2}},{{D}_{1}},{{U}_{1}} \right) \\ {{Y}_{1}}={{g}_{1}}\left( {{X}_{1}},{{X}_{2}},{{D}_{1}},{{U}_{1}} \right) \\ \end{matrix} \right. \\ & \left\{ \begin{matrix} \overset{\centerdot }{\mathop{{{X}_{2}}}}\,={{f}_{2}}\left( {{X}_{1}},{{X}_{2}},{{D}_{2}},{{U}_{2}} \right) \\ {{Y}_{2}}={{g}_{2}}\left( {{X}_{1}},{{X}_{2}},{{D}_{2}},{{U}_{2}} \right) \\ \end{matrix} \right. \\ \end{align}$

式中,${{U}_{1}}$是子系统${{\sum }_{1}}$的输入,${{U}_{2}}$是子系统${{\sum }_{2}}$的输入。也就是说,${{U}_{1}}\bigcup {{U}_{2}}=U$,${{U}_{1}}\bigcap {{U}_{2}}$根据得到的解耦结果判断是不是空集。同样,${{Y}_{1}}$是子系统${{\sum }_{1}}$得到的输出,${{Y}_{2}}$是子系统${{\sum }_{2}}$得到的输出,即${{Y}_{1}}\bigcup {{Y}_{2}}=Y$,${{Y}_{1}}\bigcap {{Y}_{2}}=\varnothing $。

为了更好数值运算整个复杂系统,每一个仿真器都需要在通信节点进行数据交换,来为其他子模块提供所需要的数据。为了提高积分运算速度,并行模块要尽量独立,所以子模型之间的同步时间P要远大于他们内部的积分时间${{h}_{n}}\left( P\gg {{h}_{n}} \right)$。因此在通信节点之间,每一个仿真器都有自己的积分速率(假设使用变步长求解器),并且在此期间,从其他模型处得到的数据将保持常数。

大的通信间隔很可能提高积分运算速度,但是也可能会产生积分误差累计从而降低最终结果的精确度。所以通过非严格同步来减小建模误差是找到提高积分速度和精确度之间平衡的有效方式的第 一步。

对于图2中的模型,每一个子系统的输出变量在通信节点${{t}_{s}}\left( {{t}_{s+1}}-{{t}_{s}}={{H}_{s}} \right)$处被采样,该值并作为输入变量在整个宏步长${{H}_{s}}$期间保持常数,所以整体看来,每一个子系统中的求解器是一个离散动态系统。对于宏步长${{H}_{k}}$的频率选取,根据香农采样定理,需要使其至少大于Nyquist频率的二倍,即采样角频率${{\omega }_{samp}}$满足

${{\omega }_{samp}}=\frac{2\text{ }\!\!\pi\!\!\text{ }}{{{H}_{s}}}\ge 2{{\omega }_{\max }}$

式中,${{\omega }_{\max }}$为系统最大角频率,满足

${{\omega }_{\max }}=\underset{i=1,2,\cdots }{\mathop{\max }}\,\left| {{\lambda }^{i}} \right|$

所以系统的宏步长满足

${{H}_{s}}\le \frac{\text{ }\!\!\pi\!\!\text{ }}{\underset{i=1,2,\cdots }{\mathop{\max }}\,\left| {{\lambda }^{i}} \right|}$

然而这个宏步长的边界太大,由经验求得,宏步长的频率要远大于Nyquist频率,有时会达到100倍。如果宏步长的频率不够大,则会导致系统的最终发散。为了解释只有很小的宏步长才能使耦合系统稳定,需要对整个系统的稳定性进行分析,按照文献[8]中所述的方法可以对这类环路采样系统进行稳定性分析。此时,子系统通过零阶保持器来耦合变量。

图2

图2   进行数据交换的子模型∑1和∑2


图3为两个子系统的联合仿真方框图,其主要在每一步离散化了耦合变量,这模拟了子系统可以分别使用数值求解器进行内部计算。对于两个系统的耦合连接,通过线性化状态空间所求出的离散时间传递函数来分析稳定性[9]

图3

图3   具有两个子系统的联合仿真方框图


3 FMI结构中的实现过程

若要保证系统稳定,需要足够小的宏步长,这虽然保证了系统的精确度,但却需要消耗过多的计算时间,降低了计算效率[10]。线性隐性稳定方法利用子系统的Jacobian矩阵来线性化系统,这种方法允许使用相对较大的宏步长来实现系统的稳定[11]

整个耦合系统的数学模型如下所示

$\left\{ \begin{align} & \dot{x}=f\left( x,u,t \right) \\ & y=g\left( x,u,t \right) \\ \end{align} \right.$

式中,$x\left( t \right)=\left( {{x}^{1}}\left( t \right),{{x}^{2}}\left( t \right),\cdots,{{x}^{N}}\left( t \right) \right)$表示N个子系统的状态变量集合,$u\left( t \right)=\left( {{u}^{1}}\left( t \right),{{u}^{2}}\left( t \right),\cdots,{{u}^{N}}\left( t \right) \right)$和$y\left( t \right)=\left( {{y}^{1}}\left( t \right),{{y}^{2}}\left( t \right),\cdots,{{y}^{N}}\left( t \right) \right)$分别表示子系统输入输出集合。

对于整个系统,内部子系统之间的连接是通过耦合方程来实现的。

$u=Ky$

在耦合方程中,每一个子系统的输入向量是其他子系统输出向量的函数,K为具有以下特点的关联矩阵:①K是一个方阵,认为每一个子系统的输出都对应一个子系统的输入;② 只包含1或者0;③ 矩阵中每一行和每一列中只有一个1。

对系统进行线性化处理,规定Jacobian矩阵为

$\left\{ \begin{align} & A={{\nabla }_{x}}f\left( x,u \right) \\ & B={{\nabla }_{u}}f\left( x,u \right) \\ & C={{\nabla }_{x}}g\left( x,u \right) \\ & D={{\nabla }_{u}}g\left( x,u \right) \\ \end{align} \right.$

在使用隐性稳定方法时,需要以下假设:① 在没有考虑耦合变量的代数环情况下,假设DK的乘积为幂零;② 在联合仿真宏步长$\left( t\in \left( {{t}_{k}},{{t}_{k}}+{{H}_{k}} \right) \right)$中,线性时不变系统由线性化(在点$x=x\left( {{t}_{k}} \right)$和$u=u\left( {{t}_{k}} \right)$系统常微分方程得到;③ 通过Backward Euler方法来离散线性化后的系统。

根据假设②,线性化后的系统数学模型如下 所示

$\left\{ \begin{align} & \dot{\xi }\left( t \right)=\dot{x}\left( {{t}_{k}} \right)+A\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+ \\ & \ \ \ \ \ \ \ \ B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \\ & \eta \left( t \right)=y\left( {{t}_{k}} \right)+C\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+ \\ & \ \ \ \ \ \ \ D\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \\ \end{align} \right.$

式中,$\xi $、$\eta $和$\omega $分别在线性化系统中对应于xyu的值。因此,在一个宏步长内,重新描述线性化处理后的系统耦合方程为

$\left\{ \begin{align} & u\left( t \right)=K\eta \left( t \right) \\ & \omega \left( t \right)=Ky\left( t \right) \\ \end{align} \right.$

式(9)为整个系统的微分代数方程,因为不考虑代数环,微分代数方程可以通过下面的计算改写成常微分方程。根据假设③,常微分方程首先进行离散化处理

$\left\{ \begin{align} & \frac{\xi \left( t \right)-x\left( {{t}_{k}} \right)}{t-{{t}_{k}}}\approx \dot{x}\left( {{t}_{k}} \right)+A\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \\ & \left( I-\left( t-{{t}_{k}} \right)A \right)\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)\approx \\ & \left( t-{{t}_{k}} \right)\left[ \dot{x}\left( {{t}_{k}} \right)+B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \right] \\ & \frac{\xi \left( t \right)-x\left( {{t}_{k}} \right)}{t-{{t}_{k}}}\approx {{\left( I-\left( t-{{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right) \right.+ \\ & \left. B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \right] \\ \end{align} \right.$

Backward Euler:

$\dot{\xi }\left( t \right)\approx {{\left( I-\left( t-{{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right)+ B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \right]$

同样可以得到输出的关系式

$\left\{ \begin{align} & \eta \left( t \right)-y\left( {{t}_{k}} \right) =C\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+D\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \\ & \frac{\eta \left( t \right)-y\left( {{t}_{k}} \right)}{t-{{t}_{k}}}=C\frac{\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)}{t-{{t}_{k}}}+\frac{D\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right)}{t-{{t}_{k}}} \\ \end{align} \right.$

Backward Euler:

$\begin{matrix} \dot{\eta }\left( t \right)\approx C\dot{\xi }\left( t \right)+D\dot{\omega }\left( t \right) \\ \dot{\eta }\left( t \right)\approx C{{\left( I-\left( t-{{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right) \right.\left. B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right)+D\dot{\omega }\left( t \right) \right] \\ \end{matrix}$

为了考虑缺少代数环,式(10)可以通过假设②估计得到,即输入ω是通过在$t={{t}_{k}}$处线性化系统的输出y得到的。

$\begin{matrix} \omega \left( t \right)-u\left( {{t}_{k}} \right)=K\left( y\left( {{t}_{k}} \right)-\eta \left( t \right) \right)= \\ K\left[ y\left( {{t}_{k}} \right)-y\left( {{t}_{k}} \right)-C \right.\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)-\left. D\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \right]= \\ K\left[ - \right.C\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)-DK\left( y\left( {{t}_{k}} \right) \right)\left. -\eta \left( t \right) \right]= \\ K\left[ - \right.C\left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+\left. DK\left( \eta \left( t \right)-y\left( {{t}_{k}} \right) \right) \right] \\ \end{matrix}$

Backward Euler:

$\dot{\omega }\left( t \right)=K\left[ -C\dot{x}\left( t \right)+DK\dot{\eta }\left( t \right) \right]$

将式(13)代入到式(12)中,并根据假设①设定DK的乘积为幂零,得

$\begin{matrix} \dot{\eta }\left( t \right)=C{{\left( I-\left( t-{{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right) \right.+ \\ \left. B\left( \omega \left( t \right)-u\left( {{t}_{k}} \right) \right) \right] +D \dot{\omega }\left( t \right)= \\ C{{\left( I-\left( t-{{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right) \right.+BK\left[ - \right.C\text{ }\!\!\times\!\!\text{ } \\ \left. \left. \left( \xi \left( t \right)-x\left( {{t}_{k}} \right) \right)+DK\left( \eta \left( t \right)-y\left( {{t}_{k}} \right) \right) \right] \right]+ \\ DKCf\left( x\left( t \right),K\eta \left( t \right) \right) \\ \end{matrix}$

故式(10)可以写成

$\dot{x}\left( t \right)=f\left( x\left( t \right),K\eta \left( t \right) \right)$

根据式(16),每一步结束后输出值会在子系统中进行求解和传递

$y\left( {{t}_{k+1}} \right)=g\left( x\left( {{t}_{k+1}} \right),K\eta \left( {{t}_{k+1}} \right) \right)$

4 FMI的实现过程

每个功能模型单元(Function mockup unit,FMU)只负责本地系统运算,不包含任何耦合和仿真环境的相关信息[12]。协同仿真过程中,计算机只通过主求解器来联合系统中不同从求解器的信息,并向从求解器提供方法来求解其他代表耦合系统的线性部分的常微分方程(Ordinary differential equation,ODE)。这些信息一部分来自于每一个求解器的模型描述结构中,一部分来自于求解FMU所包含的系统方向导数的函数[13]

FMU求解器需要具有计算所有状态变量和所连的输入输出的方向导数的能力,在FMI协议中,通过标记“provide Direction Derivative”来说明,并通过方程“fmi Get Directional Derivative”来实现。稳定方法“基于模型的外推法”不与FMI提供的“基于历史的外推法”相兼容,所以属性“can Interpolate Inputs”需要扩展到其所指定的外推类型。

将DOE转变为ODE的计算流程为首先建立包含s$\left( s\in \left\{ 1,2,\cdots,N \right\} \right)$个从求解器的矩阵方程:定义方阵${{K}_{\bar{s},s}}$为纵坐标作为当前求解器的输出变量,横坐标为来自其他求解器的输入变量;定义方阵${{K}_{\bar{s},s}}$为横坐标作为当前求解器的输入变量,纵坐标为来自其他求解器的输出变量。

计算流程包括两步,第一步在通信节点处进行,第二步发生在求解在通信节点之间的连续时间DOE系统处。

第一步中状态向量的倒数求得为

${{\dot{x}}_{s}}\left( {{t}_{k}} \right)={{f}_{s}}\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right)$

它的输出为

${{y}_{s}}\left( {{t}_{k}} \right)={{g}_{s}}\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right)$

Jacobian矩阵为

$\left\{ \begin{align} & A={{\nabla }_{x}}f\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right) \\ & B={{\nabla }_{u}}f\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right) \\ & C={{\nabla }_{x}}g\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right) \\ & D={{\nabla }_{u}}g\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right) \\ \end{align} \right.$

在临界值$t_{k}^{+}$处的值为

${{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( t_{k}^{+} \right)={{K}_{s,\bar{s}}}{{y}_{{\bar{s}}}}\left( {{t}_{k}} \right)$

上式中当k等于0时,表示为全局的初始状态。

在${{t}_{k}}<t\le {{t}_{k+1}}$时,求解耦合常微分方程系统的一个子集为

${{\dot{x}}_{s}}\left( {{t}_{k}} \right)={{f}_{s}}\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right) \right)$
${{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right)={{f}_{{\bar{s}}}}\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right),t \right)$

其中,${{f}_{{\bar{s}}}}$由主求解器求得

$\begin{matrix} {{f}_{{\bar{s}}}}\left( {{x}_{s}}\left( {{t}_{k}} \right),{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}\left( {{t}_{k}} \right),t \right)={{K}_{s,\bar{s}}}{{C}_{{\bar{s}}}}\times \\ {{\left. \left( I-\left( t- \right. \right.\left. {{t}_{k}} \right)A \right)}^{-1}}\left[ \dot{x}\left( {{t}_{k}} \right)+{{B}_{s,\bar{s}}}{{K}_{s,\bar{s}}}\left[ -{{C}_{s,s}}\times \right. \right. \\ \overset{{}}{\mathop{\left( {{\xi }_{s}}\left( t \right)-{{{\tilde{x}}}_{{\bar{s}}}}\left( {{t}_{k}} \right) \right)+{{D}_{s,s}}}}\,{{K}_{s,\bar{s}}}\left( {{\eta }_{{\bar{s}}}}\left( t \right)- \right. \\ \left. \left. \left. {{y}_{{\bar{s}}}}\left( {{t}_{k}} \right) \right) \right] \right]+\overset{{}}{\mathop{{{D}_{\bar{s},\bar{s}}}{{K}_{s,\bar{s}}}{{C}_{s,s}}{{{\tilde{f}}}_{s}}\left( {{x}_{s}},{{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}} \right)}}\, \\ \end{matrix}$

根据式(19)可知,出现在式(21)中的输入变量包含了其他的状态变量,并且输入变量现在相当是状态变量的初始状态。通过求解器内的数值积分求解出的状态向量是$\left( {{x}_{s}},{{u}_{s}} \right)$,这里${{u}_{s}}$实际是${{K}_{s,\bar{s}}}{{\eta }_{{\bar{s}}}}$,通过主求解器来连接线性系统的输出${{\eta }_{{\bar{s}}}}$和求解器的输入,因此连接的结构信息只用主求解器获得。

如果主求解器不支持稳定性,式(22)的右边会降为0,这样从求解器的实际输入将不变:如果没有设置标记“can Interpolate Inputs”,那么零阶保持器外推因主求解器不支持稳定性而在FMI协议中定义。这种情况下,通过主求解器在每一个通信节点$\left( {{t}_{k}},k=0,\cdots,M-1 \right)$调用方程“fmi Get Real”和“fmi Set Real”,每一个从求解器的输入是通过式(20)直接给出的,${{y}_{{\bar{s}}}}$是从求解器的输出,这些从求解器会求出第s个求解器的输入。

主求解器方面需要设置回调方程(Callback function),这个方程用于求解相连的从求解器的动态输入。在联合仿真之前,从求解器的模型结构信息将体现在准备矩阵和式(23)的计算中。随后,在联合仿真过程中,这些元素将会调用方程“fmi Get Continuous States”“fmi Get Derivatives”和“fmi Get Directional Derivatives”在每一次的信息交换节点上更新。当对式(21)、(23)数值积分时,系统通过从数值求解器调用这些方程。

根据式(23)可知,回调方程需要返回稳定输入的微分向量,这需要通过主仿真环境在从设备实现方程属性“fmi Callback Functions”来实现。图4简略地描述了主求解器中的算法流程[14]

图4

图4   主求解器中的算法流程


利用FMI2.0 for Co-simulation标准的线性隐性稳定方法可以很好对系统加速,其改善了联合仿真在平衡稳定或精确度和计算效率上的问题。随着FMI2.0的问世,一个巨大的提升是出现了方向导数矩阵的接口,这使得联合仿真系统的强耦合性更有效[15,16]

5 测试模型与测试结果

基于二自由度液压模型如图5所示,其中包括了两个液压子系统,可将这个系统看为两个子系统实现联合仿真。

图5

图5   在AMESim中搭建的二自由度液压模型


所有测试都采用同一套参数,测试结果如表1所示。

表1   在不同的方案下的测试结果对比

测试方案宏步长Hs/μs方均根误差CPU时间/s
#1. 具有变步长求解器,在AMESim中实现的连续耦合系统1参考1.0
#2. 显性联合仿真,使用AMESim接口110470.0
#3. 稳定联合仿真,使用AMESim接口502078.5
#4. FMI2.0显性联合仿真,混合使用C/Python标准112340.0
#5. FMI2.0稳定联合仿真,混合使用C/Python标准5023736.0
#6. FMI2.0显性联合仿真,直接使用C标准112312.0
#7. FMI2.0稳定联合仿真,向后欧拉计算方式,直接使用C标准502151.5
#8. FMI2.0稳定联合仿真,梯形计算方式,直接使用C标准501521.5

新窗口打开| 下载CSV


联合仿真的精度是通过方均根误差来表示的。在所有的联合仿真测试中,CPU时间通过设定一定的间隔时间为50 μs。从表1中可以看出,混合使用C/Python标准的#5方案相比#3方案在CPU耗时上更差,这是由于在两个仿真环境中带有很多的转换接口;相反,对比#2和#6,同样使用C标准的#3和#7(或#8),系统明显实现了加速。说明利用FMI2.0标准的线性隐性稳定方法可以很好地改善联合仿真在平衡稳定或精确度和计算效率上的问题。

6 结论

本文的研究目的是提高联合仿真系统数值积分运算速度,同时兼顾系统稳定运行并保证积分误差在预期范围内。论文研究了一种基于FMI通用接口标准的联合仿真方法,得到如下结论。

(1) 其基本方法是将整个系统分为若干个子系统,各部分之间在通信节点处交换数据,数值分析时需要将系统合理解耦分析,在保证运算速度的同时使系统具有良好的稳定性和准确性。

(2) 线性隐性稳定方法在保证系统稳定的前提下对仿真运算时间具有一定的加速,其基于联合仿真的FMI标准下的工程实例也证明了该方法使系统具有良好的稳定性和准确性。

参考文献

李冰洁, 陈兵彬, 张晓斌, .

基于Dymola软件及Modelica语言的飞机供电系统建模与仿真

[J]. 计算机测量与控制, 2016, 24(3):174-178.

[本文引用: 1]

LI Bingjie, CHEN Bingbin, ZHANG Xiaobin, et al.

Modeling and simulation of aircraft power supply system based on Dymola software and Modelica language

[J]. Computer Measurement and Control, 2016, 24(3):174-178.

[本文引用: 1]

YUAN Q H, BO X.

Modeling and simulation of a hydraulic steering system

[J]. SAE International Journal of Commercial Vehicles, 2008, 1(1):488-494.

DOI:10.4271/2008-01-2704      URL     [本文引用: 1]

THOMAS S, MARKUS A, STEPHAN Z, et al.

A novel proposal on how to parameterize models in Dymola utilizing external files under consideration of a subsequent model export using the functional mock-up interface

[C]// Proceedings of the 11th International Modelica Conference,September 21-23,2015,Versailles,France, 2015:23-29.

[本文引用: 1]

MICHAEL W, MARCUS F, THIERRY S, et al.

Design choices for thermo fluid flow components and systems that are exported as functional mockup units

[C]// Proceedings of the 11th International Modelica Conference,September 21-23,2015,Versailles,France, 2015:31-41.

[本文引用: 1]

CHRISTIAN B, JONATHAN N, ELMAR A, et al.

FMI for physical models on automotive embedded targets

[C]// Proceedings of the 11th International Modelica Conference,September 21-23,2015,Versailles,France, 2015:43-50.

[本文引用: 1]

BATTEH J, GOHL J, PITCHAIKANI A, et al.

Automated deployment of modelica models in excel via functional mockup interface and integration with modeFRONTIER

[C]// International Modelica Conference,September 21-23,2015,Versailles,France, 2015:171-180.

[本文引用: 1]

KHALED A B, DUVAL L, MEMB G, et al.

Context-based polynomial extrapolation and slackened synchronization for fast multi-core simulation using FMI

[C]// Proceedings of the 10th International Modelica Conference,March 10-12,2014,Lund,Sweden, 2014:225-234.

[本文引用: 1]

VIEL A.

Strong coupling of Modelica system-level models with detailed CFD models for transient simulation of hydraulic components in their surrounding environment

[C]// International Modelica Conference, 2011.

[本文引用: 1]

VANFRETTI L, BOGODOROVA T, BAUDETTE M.

Power system model identification exploiting the Modelica language and FMI technologies

[C]// IEEE International Conference on Intelligent Energy & Power Systems. IEEE, 2014:127-132.

[本文引用: 1]

BERTSCH C, AHLE E, SCHULMEISTER U.

The functional mockup interface-Seen from an industrial perspective

[C]// The International Modelica Conference,March 10-12,2014,Lund,Sweden. 2014:27-33.

[本文引用: 1]

VIEL A.

Implementing stabilized co-simulation of strongly coupled systems using the functional mock-up Interface 2.0

[C]// Proceedings of the 10th International Modelica Conference,March 10-12,2014,Lund,Sweden. 2014:213-223.

[本文引用: 1]

PEDERSEN N, MADSEN J, VEJLGAARD-LAURSEN M.

Co-simulation of distributed engine control system and network model using FMI & SCNSL

[J]. IFAC Papersonline, 2015, 48(16):261-266.

[本文引用: 1]

SCHWEIZER B, LI P, LU D, et al.

Stabilized implicit co-simulation methods:Solver coupling based on constitutive laws

[J]. Archive of Applied Mechanics, 2015, 85(11):1559-1594.

DOI:10.1007/s00419-015-0999-2      URL     [本文引用: 1]

徐东.

基于FMI协议的跨领域多学科仿真系统建模分析

[J]. 电子测试, 2020(8):34-36.

[本文引用: 1]

XU Dong.

Modeling and analysis of interdisciplinary and multidisciplinary simulation system based on FMI protocol

[J]. Electronic Testing, 2020(8):34-36.

[本文引用: 1]

NICOLAI A, PAEPCKE A, HIRSCH H.

Robust and accurate co-simulation master algorithms applied to FMI slaves with discontinuous signals using FMI 2.0 features

[C]// Proceedings of the 13th International Modelica Conference,Regensburg,Germany,March 4-6, 2019:769-776.

[本文引用: 1]

BALDA P.

Real-time simulator of component models based on Functional Mock-up Interface 2.0

[C]// 2017 21st International Conference on Process Control(PC),IEEE, 2017:392-397.

[本文引用: 1]

/