一种基于容腔节点的液压系统建模语言及实现
2011-03-15邢秋君焦宗夏
邢秋君 焦宗夏 吴 帅
(北京航空航天大学飞行器控制一体化技术重点实验室,北京 100191)
一种基于容腔节点的液压系统建模语言及实现
邢秋君 焦宗夏 吴 帅
(北京航空航天大学飞行器控制一体化技术重点实验室,北京 100191)
为实现直观面向系统原理图对液压系统建模,提出了一种基于容腔节点法的液压系统建模语言和一套新的建模语言描述规则,并阐述了利用该建模语言进行程序实现的方法.该建模语言将液压系统的拓扑结构抽象成具有容腔节点和元件节点的图形结构.液压元件模型独立封装,可模块化使用.在建模语言描述规则的基础上,生成容腔节点与元件节点的连接矩阵.所有节点和连接矩阵构成了系统的整体模型.通过典型智能液压泵系统建模过程,验证了该建模描述语言的正确性和有效性.结果表明:该基于容腔节点的液压系统建模语言可方便建立符合液压系统原理的拓扑图,并面向系统原理图自动生成系统模型.
液压系统;仿真;建模语言
液压系统的建模仿真研究从 20世纪 70年代初到今,发展了很多成熟的液压系统动态建模仿真软件[1].比较典型的有法国的 AMESim[2],美国的 EASY5[3],德国的 DSH[4],以及英国巴斯大学的 Bathfp.AMESim采用键合图方法建模,为用户提供了一个时域的建模仿真环境.通过模型库的概念,采用易于识别的标准 ISO图标和简单直观的多端口窗口,构建系统原型,使用户能借助其友好的、面向工程应用,研究任何元件或回路的动力学特性[2].EASY 5是一个基于图形的用来对动态系统进行建模、分析和设计的软件,其建模主要面向由微分方程、差分方程、代数方程及其方程组所描述的动态系统.模型直观地由基本的功能性图块组装而成[3].德国亚琛工大的 DSH采用了容腔节点法,用 FORTRAN语言编写,描述方法比较陈旧,最初主要用解释执行,制约了其发展.后来开发了面向图形界面的 DSHplus仿真软件系统,但是用的也主要是原来的内核.浙江大学对其进行了进一步发展,开发了 ZJUSIM[4-6].
为实现可直观面向系统原理图建模,本文提出了一种新的建模语言,方便实现,且容易进行二次开发,引入其他学科模型.综合各种液压系统建模方法,容腔节点法可更加直观地面向系统原理图来建立系统模型.因此,以下从图论的基本思想出发,提出了一种基于容腔节点法的液压系统建模描述方法和一套新的建模语言规则.容腔节点法是基于各构件之间的能量或信号传递经过液压管道实现的思想[7],基于基尔霍夫节点法则,每个容腔都有一个压力变量,通过流量连续方程表达,是由流量变量到压力变量的过程.而所有流量变量都由液压元件提供,因此液压元件在与容腔相连时,只要给出元件所有端口上的输入输出流量关系即可.压力与流量变量的交替衔接,组成了可求解的微分方程组.液压系统建模过程需包含建模平台支持(数据库、知识库等)、前处理(模型描述、模型生成等)、解算和后处理(结果可视化、数据分析等),本文主要讨论前处理部分.
1 建模语言描述规则
图 1表示的是压强为 p,体积为 V的容腔节点,其流量连续方程表示为
图 1 容腔节点示意图
图 2是一种用图形拓扑结构来描述的液压系统示意图.
基于容腔节点法建模的图形描述遵循 2个规则:①液压系统图形拓扑关系由节点和连接组成.节点分为两种:元件节点和容腔节点.元件节点又分为液压元件节点和非液压元件节点;②液压元件节点之间不能直接连接,两液压元件节点之间如果没有非液压元件节点,则自动插入容腔节点.当两个容腔节点连接时,自动合并为一个容腔节点.
图 2 采用图形建模语言描述的拓扑原理图
定义 1 节点是构成系统的基本元素,是液压系统图形建模语言描述的最小组成部分.节点是具有属性的,每一节点都具有唯一不可重复的标识.
1)容腔节点记作数组 V,其节点属性有:
标识:即序号,记作 id;
容腔体积:容腔节点的唯一参数,记作 volume;
支路数量:记作 nQ;
压强:容腔节点的变量,记作 p;
微分方程:容腔的流量连续方程,记作dotf(·).
2)液压元件节点记作数组 C,其节点属性包括有:
标识:即序号,记作 id;
元件类型:用以区分元件节点的种类,记作type,如可设定 01为双出杆液压缸,02为恒压变量泵,03为伺服阀等;
端口数量:记作 ncom;
端口序号:记作数组 com;
端口属性:端口属性分为液压、机械、电气等,用 0,1,2等区分.记作数组 comtype,次序对应端口序号;
端口变量:记作数组 va,端口变量包括输入或输出流量,对于非液压端口,则针对不同元件,具有不同变量.各端口变量在数组中的位置对应端口次序;
内部变量:元件隐形变量,前几位是按照端口顺序的压力变量,后面是元件的内部变量.记作数组inva;
参数:元件自身的内部参数,记作数组 parameter;
代数方程:记作函数 fun(·);
微分方程:记作函数 dotf(·).
3)非液压元件节点记作数组 D,其节点属性包括有:
标识:即序号,记作 id;
输入量端口号:记作数组 incom;
输出量端口号:记作数组 outcom;
输入端变量:分别对应 incom顺序的变量名,记作数组 invars;
输出端变量:分别对应 outcom顺序的变量名,记作数组 outvars;
输入端连接元件:分别对应 incom顺序的连接元件名,记作数组 ins;
输入端连接元件端口:分别对应 ins元件数组的端口号,记作数组 inscom;
输出端连接元件:分别对应 outcom顺序的连接元件名,记作数组 outs;
输入端连接元件端口:分别对应 outs元件数组的端口号,记作数组 outscom;
参数:元件自身的参数,记作数组 para;
代数方程:记作函数 fun(·);
微分方程:记作函数 dotf(·).
按照节点属性的定义,任一节点都可根据其分类、按照其属性定义顺序,用上述标准形式的语言描述,记作:
只要给定节点描述中所有变量和方程,即可完整描述出惟一确定的节点.
定义 2 图形拓扑结构中容腔节点和液压元件节点之间的连接关系可以用矩阵的方式表达,矩阵中的元素所代表的数字表示容腔和对应元件的连接端口号,称该矩阵为连接矩阵,记作 Z.
如系统中有 m个容腔,n个元件,则 Z记作m×n的矩阵,行为容腔节点序号,列为液压元件节点序号,zij则表示第 i个容腔和第 j个元件的连接端口,如不相连,则 zij为 0.这样就能得到容腔系列的通用方程描述公式:
其中,i=1,2,…,m;pi表示第 i个容腔的压力;Vi是第 i个容腔的体积属性;k=zij;Qjk表示第 j个元件端口 k的流量,规定流入元件的流量为负,流出元件流量为正,且
对于图 2所示系统,连接矩阵述为
非液压元件已将其连接关系表达在本身的属性定义中,故在连接矩阵中不用再考虑.
定义 3 节点和连接矩阵构成了系统,记作S.基于模块化建模思想,可将一个系统封装成为另一个系统的标准子系统模块,从而达到模型反复利用,方便建模的目的.对于由液压元件做起点和终点的局部液压系统定义成子系统,记作SubS.
这里子系统可看作一种特殊的元件,子系统的封装形式可描述为:
类型:记作 type;
端口序号:即子系统与其他外部节点连接的端口编号,记作数组 Scon;
端口变量:即对应端口序号的变量,记作数组Sconvar;
参数系列:即子系统内部的所有参数,记作数组Spara;
节点系列:即子系统内部的所有节点,记作数组Snode;
连接矩阵:即子系统内部基点之间的连接关系Scn;
变量系列:即子系统内部的所有变量,记作数组Svars;
内部代数方程系列:即子系统内部的所有代数方程,记作数组 Sfun;
内部微分方程函数系列:即子系统内部的所有微分方程,记作数组 Sfun.
将图 2所示系统封装为子系统,组成新的系统,如图 3所示.新系统只关心连接端口 C4端口2和 C5端口 2的变量.而连接端口变量的获得需要访问子模型内部,是一种嵌套关系.子系统封装中包括所有节点列表、连接矩阵和所有变量,参数以及函数,故连接端口变量可以计算得到.
图 3 子系统作为特殊元件的图形建模
2 程序语言描述形式
2.1 节点的程序语言描述
液压系统建模语言需转化成 VC++环境中的程序语言来实现.各种类型节点都有固定的封装格式,且为实现元件的模块化建模,典型元件以类的形式封装,为元件节点类的衍生类.
采用多态机制中的虚函数技术,允许在不破坏父类封装的情况下,实现以同名函数的形式调用不同衍生类对象的函数或变量[8].建立只含有两个空函数的类 Node,用来表示代数方程fun(·)和微分方程 dotfun(·),在衍生类中再定义具体内容.所有节点类都是其衍生类.容腔节点封装为 V_Node类,在程序中节点封装如表 1所示.液压元件节点封装为 C_Node类,如表 2所示.非液压元件封装为 D_Vode类,如表 3所示.
表 1 V_Node类的节点封装
表 2 C_Node类的节点封装
表 3 D_Node类的节点封装
2.2 典型元件的程序封装
取构成飞机液压系统的典型元件(液压缸、液压泵和伺服阀)为例,来说明元件模型的封装方式.
1)液压缸.液压缸是由一定运动速度的活塞和两个腔体组成.容腔与所接管路一并考虑,提取为容腔节点,这样液压缸等价于惯性节点.图 4所示双出杆缸封装为 Cylinder_Double类,其主要特性方程分为两部分:活塞运动所带来的流量变化,为代数方程,以及活塞运动方程,为微分方程,具体表示为
其中,p1,p2为两腔压力;Q1,Q2为流入、流出液压缸的流量.
图 4 双出杆液压缸的程序封装示意
2)液压泵.将腔体提取为单独的容腔节点,液压泵是一个液压系统的能量发生点.以图 5所示的恒压变量泵为例,封装为 Pump_Constant_P类.其中代数方程是泵出油量:
图 5 恒压变量泵的程序封装示意
3)伺服阀.伺服阀一般认为是阻性元件,图6所示的伺服阀有 5个连接端口,代数方程含 4个端口的流量方程和开启电流到开口量的传递函数,这里不展开叙述.封装为 Servovalve类.
图 6 伺服阀的程序封装示意
液压元件是元件节点的衍生类,而这些典型元件又是液压元件的二级衍生类.其继承关系如图 7所示.
图 7 节点类的继承关系
3 建模语言的程序实现
常见节点、连接矩阵以及典型元件的封装定义保存为头文件,作为标准模块供使用者调用.在源文件中进行液压系统建模,共分为以下步骤:
1)对照液压系统结构图,按照建模语言描述规则,生成图形拓扑结构,依次创建和描述节点类对象和连接矩阵.如创建容腔节点对象,确定其属性参数 volume,nQ等.
生成连接矩阵,并创建液压元件,如伺服阀元件,对其参数赋值:
创建非液压元件对象及赋值:
2)方程列表的获取:对于液压系统,方程列表包含两部分:容腔节点和元件节点.容腔节点系列的方程可根据式(2)得到.所有元件节点的方程可根据元件定义得到.所有节点均为Node类的衍生类,定义 Node类指针数组:vector<Node*>list.然后将液压元件节点类对象和非液压元件节点的类对象依次保存在 equ_list数组中:
(*equ_list[m]).fun(·)表示第 m个节点的代数方程,(*equ_list[m]).dotf(·)表示微分方程.
液压元件节点的方程中用到的液压类型端口的压力变量,可由连接矩阵 Z得到.当 k=zij≠0时,则对于 i=1,2,…,m,j=1,2,…,n,m和 n分别是连接矩阵的行数和列数,都有
其中,pjk为第 j个元件端口 k的压力.子系统的封装模型中已定义好其方程列表,故可直接调用.
3)方程解算:得到函数列表,采用常见的数值计算方法,如龙格库塔法,就可对微分方程组进行解算.微分方程组每一步解算都需要进行一次代数方程运算.
4 建模实例
图 8是一个智能泵系统,Ur是要跟踪的压力控制信号,通过压力传感器 Us/P实时检测出口压力,并反馈给系统输入,经过反馈比较之后,用PID控制器实时控制伺服阀开口,进一步实现控制液压缸的输出位移和变量泵的斜盘角度,恒压变量泵通过改变斜盘倾角来控制流量,通过节流负载达到控制压力的目的[8],Ux/x是位移传感器.图 9为对应的图形拓扑结构图.
图 8 智能泵系统结构
图 9 图形拓扑结构图
在.h文件中,添加包含节点、连接矩阵以及典型元件定义的头文件.在.cpp用户文件中,按照拓扑图定义所有对象:其中 3个容腔节点分别对应液压泵及周围管路容腔,和伺服阀左右腔及周围管路,定义和部分赋值表达如下:
4个元件节点分别对应恒压变量泵、节流阀、伺服阀、液压缸.定义和部分赋值表达如下:
6个非液压元件节点:对应用斜盘倾角到活塞杆的机械连接、位移传感器、压力传感器、信号比较器 2、信号比较器 1、PID控制器.同上对其定义和赋值.连接矩阵 m_z描述为
特殊液压元件节点自动赋值到 m_C中,非液压元件自动赋值到 m_D中,并将其添加到节点类对象 equ_list中.自动赋值的代码如下:
for(int j=0;j<num_of_C_node;j++)
switch(m_C[j].type)
{case 02://Pump_Constant_P类
m_C[j].ncom=3;//恒压变量泵端口数量
m_C[j].com[3]=(0,1,2);//端口编号
m_C[j].com type[3]=(1,1,0);//对应端口属性
m_C[j].va[3]=(m_pump.Q[0],m_pump.Q[1],m_pump.θ);//对其变量编号命名
equ_list.push_back(&m_pump);
……}
依次扫描 3个容腔节点,添加到 equ_list:for(int i=0;i<3;i++)
equ_list.pushback(m_volume[i]);
并且可通过连接矩阵获得参数传递的等式:
for(int i=0;i<num_of_V_node;i++)
{m_volume[i].Q=0;
for(int j=0;j<num_of_C_node;j++)
if(m_z[i][j]!=0)
m_volume[i].Q=m_volume[i].Q+m_C[j].va[m_z[i][j]];}
最后得到的 equ_list中就包含了系统所有的代数方程和微分方程.表 4给出了一些基本仿真参数.图 10即跟踪压力信号为 21MPa,调节节流阀节流孔面积,得到的斜盘倾角和出口压力曲线.
图 10 智能泵建模仿真结果图
表 4 智能泵建模仿真的基本参数
5 结 论
基于容腔节点法的液压系统建模语言,其主要特点:①按照其描述规则,可形成符合液压系统原理的拓扑图;②按照节点和连接矩阵的描述规则,节点和常用元件标准封装,模块化调用,加上统一规范的容腔节点的描述公式,方便模型自动生成.在今后的研究中,加入图形化建模到建模语言描述的过程,采用编译执行方式,或用命令流方式,就能发展成为一个完整的液压系统仿真软件.
References)
[1]李成功,和彦淼.液压系统建模与仿真分析[M].北京:航空工业出版社,2008:2-6 Li Chenggong,He Yanm iao.Hydraulic system modeling and simulation analysis[M].Beijing:Aviation Industry Press,2008:2-6(in Chinese)
[2]ChengKai,Zhang Jing,DaiQunliang.Modelingand simulation of hybrid hydraulic excavator based on AMESim[C]//2010 International Conferenceon Applied Mechanicsand MechanicalEngineering.Changsha:Trans Tech,2010:2071-2075
[3]Zhang Ming,Nie Hong,Wei Xiaohui.Modeling and simulation of aircraft anti-skid braking and steering using co-simulation method[J].The International Journal for Computation and Mathematics in Electrical and Electronic Engineering,2009,28(6):1471-1488
[4]Backe W,Hoffman W.DSH-program system for digital simulation of hydraulic systems[C]//6th International Fluid Power Symposium.Cambridge:BHRA Fluid Eng,1981:95-114
[5]Hull SR,Bowns D E.Development of an automatic procedure for the digital simulation of hydraulic systems[C]//Proceeding on Computer Aided Design in High Pressure Hydraulic Systems.London:Mechanical Engineering Publ Ltd,1983:67-72
[6]吴跃斌.液压仿真软件 ZJUSIM的开发与参数优化研究[D].杭州:浙江大学机械工程学系,2004 Wu Yuebin.Development of hydraulic simulation software ZJUSIM and study on parameter optimization[D].Hangzhou:Department of Mechanical Engineer,Zhejiang University,2004(in Chinese)
[7]杨灿军,金玉珍.基于分布式网络的液压系统仿真软件研究[J].中国机械工程,2005,16(10):906-909 Yang Canjun,Jin Yuzhen.Study on simulation software of hydraulic system based on distributed nett work[J].Chinese Mechanical Engineering,2005,16(10):906-909(in Chinese)
[8]王世富,马俊功,王占林.机载智能液压泵的建模与仿真[J].中国机械工程,2007,15(5):398-401 Wang Shifu,Ma Jungong,Wang Zhanlin.Modeling and simulation of airborne intelligent hydraulic pump[J].Chinese Mechanical Engineering,2007,15(5):398-401(in Chinese)
(编 辑:赵海容)
Hydraulic system modeling language base on finite volume and implementation
Xing Qiujun Jiao Zongxia Wu Shuai
(Science and Technology on Aircraft Control Laboratory,Beijing University of Aeronautics and Astronautics,Beijing 100191,China)
To achieve schematic-oriented modeling directly on the hydraulic system,a new modeling language based on finite volume and a new set of rules to describe the modeling language were proposed,also the corresponding procedural method was described.Based on the modeling language,the topology of the hydraulic system was abstracted to graphical structure with volume nodes and elements nodes.The components model was defined and packaged independent.Coperating with describing rules,the connection matrix of volume nodes and components would be generated.The overall system model was constituted by all nodes and the connection matrix.By typical intelligent hydraulic pump modeling process,the validity and effectiveness of this modeling language was proved.The results showed that by this language,the topology was established easily,and schematic-oriented hydraulic system model was generated conveniently.
hydraulic system;simulation;modeling language
TH 137
A
1001-5965(2011)04-0499-06
2010-12-01
国家杰出青年科学基金资助项目(50825502)
邢秋君(1982-),女,山西阳泉人,博士生,silvia@asee.buaa.edu.cn.