基于CORBA的分布式仿真系统的开发与实现

时间:2022-07-03 11:52:32

基于CORBA的分布式仿真系统的开发与实现

摘要: CORBA是开放式、多平台、面向对象的分布式计算技术的工业规范,利用CORBA可以进行跨平台、跨语言的分布式软件开发。本文结合CORBA技术、数值计算方法、OpenGL图形仿真技术,以C++Builder为开发工具开发了基于CORBA的分布式多连杆仿真系统,实现了分布式环境下的多连杆系统的分析、仿真及灵敏度分析,用户可以在客户端提供相应参数,由服务器完成动力学模型的自动建模、数值分析以及灵敏度分析,客户端可以利用服务器端的分析数据进行图形仿真。该系统的实现为CORBA在工程技术领域的应用进行了有益的实践。

关键词: CORBA ORB 分布式仿真 灵敏度分析 直接微分法

一、CORBA简介

CORBA(Common Object Request Broker Architecture,公共对象请求体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。

二、平面三连杆系统的分析

工程实际中的机械系统是由若干部件与运动副组成。在动力学分析时,首先应将一个实际系统抽象为一个多体系统(本文以多刚体系统为研究对象)。如果组成机械系统的所有部件都在同一平面或平行的平面内运行,这个系统就是平面机械系统。在考虑力的作用下研究各部件的位置与姿态,以及它们变化速度与加速度的关系,称为动力学分析。由于各部件间通过运动副与驱动装置连接在一起,平面机械系统的数学模型为各部件的位置与姿态坐标的非线性代数方程,以及速度与加速度的线性代数方程。所以平面机械系统动力学分析可以归结为求解线性与非线性代数方程问题。

三、仿真的实现

1.接口的定义和编译

OMG IDL文件在整个系统中处于非常重要的地位,它是客户对象和服务器对象共同使用的接口。OMG IDL是与平台和语言无关的;而数据及调用格式的转换则是由ORB透明地完成。所有的CORBA对象接口,以及接口中相关的数据类型,都可以由接口定义语言(IDL)说明。

根据对模型的分析,接口程序定义的变量应该为:模型的初始位置q,杆的质量m,物块的质量m1,仿真的初始时间tbegin和结束时间tend,两次计算间的时间间隔step,两次存储结果间的时间间隔wstep。

编辑完毕并保存后,对接口文件进行编译,生成相应的接口存根对象桩及接口框架对象架构,在此基础上可以扩展实现客户端和服务器端。

2.编写服务器端程序

服务器端所要实现的功能即是原来仿真程序所实现的功能。可以把这部分程序看成一个黑箱系统,不必关心它的功能具体是如何实现的,所要关心的是它能够提供什么样的服务,最关键的是它的输入输出是什么,也就是它呈现给外界的接口是怎样的。

数据库在整个系统中的主要作用是存储数据,同时可以更方便地展示数据,也利于其他程序共享数据。数据库使用Microsoft Access建立,服务器端的C++Application通过ODBC直接对数据库进行存储操作。客户端可以通过JDBC-ODBC桥访问Access数据库。服务器端对数据库的操作主要是数据的存储,即把处理后的数据从文件中读出后直接写入表中,客户端对数据库的主要操作是数据的演示,只需读出表中的数据即可。

3.编写客户端程序

相对于服务器端,客户端的实现比较简单。本文中采用C++ Application的形式。

执行File|New菜单项,在New Items对话框中选择Multitier页,点取CORBA Client图标做到客户端的实现,用以提交各项数据。编辑完毕后,使用Edit|Use CORBA Object指定客户端要使用的对象实现。

4.Smart Agent

在客户存根和服务器框架之间的桥梁是Smart agent,由它们来负责网络间的底层通信,Smart agent是一个动态的分布式目录服务,该服务定位实现特定对象的有效服务器。如果有多个服务器供选,智能提供载入平衡。它还提供服务器失败保护,方式是在链接失败时尝试重起服务或必要时定位到其它主机上的服务器。Smart agent必须在局域网中的至少一台主机上启动。ORB用广播消息定位Smart agent,如果网络中有多个Smart agent,ORB使用第一个响应的。

5.仿真功能的实现

客户端的仿真功能主要是基于计算数据的图形仿真。采用二维和动画两种形式,把处理后的、存储在数据库中的数据显示出来。

动画仿真采用OpenGL技术。OpenGL是一套三维图形处理库,也是该领域的工业标准。OpenGL被设计成独立于硬件,独立于窗口系统的,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。在使用OpenGL的时候,只需要做简单的初始化,然后就可以直接调用相应的函数进行图形绘制。在要实现动画的窗体中添加一时钟控件。由于一时钟控件可以控制一时钟事件完成一些周期性的工作,所以绘制图画的功能就添加在时钟事件里。随着时间变化,根据从数据库中读出的数据,不断重绘杆的位置,就形成了动画。动画仿真的截图如下:

二维仿真使用线性图表显示出在任意时刻某一个变量的值。x1对t的曲线图如下:

参考文献:

[1]潘振宽,赵维加.多体系统动力学设计灵敏度分析.青岛大学.

[2]Jarrod Hollingworth. C++Builder5程序设计大全.机械工业出版社.

[3]徐士梁.C常用算法程序集.清华大学出版社.

[4]白建军,朱亚平.Open GL三图形设计与制作.人民邮电出版社.

上一篇:虚拟现实技术在汽车工业中的应用与展望 下一篇:WebQuest:一种合作探究型网络学习模式