APP下载

基于Socket的ADAMS与HLA/RTI适配器开发

2017-04-28王增全黄夏旭申焱华

导弹与航天运载技术 2017年2期
关键词:子程序服务端适配器

王增全,黄夏旭,吴 艳,申焱华

(1. 北京航天发射技术研究所,北京,100076;2. 北京科技大学,北京,100083)

基于Socket的ADAMS与HLA/RTI适配器开发

王增全1,黄夏旭2,吴 艳1,申焱华2

(1. 北京航天发射技术研究所,北京,100076;2. 北京科技大学,北京,100083)

高层体系结构(High Level Architecture,HLA)/运行实时支撑环境(Run Time Infrastructure,RTI)是一种先进的仿真体系结构,由于其较好的可重用性和互操作性被广泛用作协同仿真中的仿真软总线。ADAMS作为多体动力学软件,是进行多学科联合仿真的常用软件,但是本身并不支持HLA/RTI,无法直接参与基于HLA/RTI的协同仿真。从分布式协同仿真需求出发,提出了一种基于Socket的ADAMS与HLA/RTI适配器实现思路,详细介绍了实现途径,并进行了验证。结果表明:该适配器的开发实现了工程应用系统在分布异构的虚拟试验运行支撑环境下的即插即用和互操作。

Socket;ADAMS;高层体系结构;运行实时支撑环境;接口开发

0 引 言

由于产品越来越高的复杂性,需要将原有的单领域仿真(多体动力学、控制系统和液压系统仿真等)联合起来,进行多领域协同仿真,实现不同领域的知识共享和设计交流,降低设计对大型试验、调试试验的依赖程度,缩短研制周期,提高设计效率。目前,多学科联合仿真可以采用基于统一语言、模型接口和软总线的3种实现方式。其中基于软总线的多学科联合仿真技术能够实现多领域、分布异构模型的重用和互操作,是近年来复杂联合仿真技术发展的重点方向之一。

基于软总线的多学科协同仿真将多种仿真应用联合在一起进行分布协同仿真,可完成功能更为复杂的系统仿真,但是也面临着一些问题,比如如何将各种商用仿真软件改造成分布式仿真所要求的形式等[1]。目前,多体动力学软件ADAMS在机械动力学仿真应用中较为广泛,但是对于其参与软总线分布式仿真的研究较少,若开发一种其与软总线分布协同仿真中间适配器,将ADAMS在多体领域的专业技术应用到多学科协同仿真中具有重要意义[2,3]。

基于Socket的数据通信机制[4],开发了多体系统动力学软件 ADAMS与高层体系结构(High Level Architecture,HLA)/运行实时支撑环境(Run Time Infrastructure,RTI)仿真软总线之间数据交互和仿真过程驱动接口,在软总线平台基础上实现软件的开启、仿真时间和步长控制及数据传输等功能。实现工程应用系统在分布、异构的虚拟试验运行支撑环境下的即插即用和互操作。

1 实现思路

ADAMS与其它学科的数据交互接口主要集中在ADAMS/View 和 ADAMS/Solver两 个 模 块 。ADAMS/Solver主要是通过用户子程序[5](Subroutine)获取求解器在计算时的状态量(如位移、速度、加速度等)向外传输,同时向求解器返回所需的外界值。而ADAMS/View主要是通过调用ADAMS/Controls接口模块实现数据的传输和对求解器仿真计算的控制。

ADAMS开放了其Controls接口与其它学科软件进行数据交换和联合仿真,但是该接口不具有标准性、开放性,接口扩充困难、调用方式单一,且不支持基于软总线的分布式仿真方法,缺乏通用性和灵活性。ADAMS/Solver通过Subroutine方式实现外部仿真过程对ADAMS核心算法的调用,可用于用户函数开发、仿真过程控制等,能够支持大部分的用户二次开发。Subroutine利用通用程序设计语言[6](FORTRAN或C语言)开发和编译,依据多学科协同仿真提出的数据交换流程、内容、方式、软件内部仿真的控制等要求,通过程序开发实现其与软总线之间的通信。

目前,ADAMS没有提供与HLA/RTI的接口,为了实现基于HLA的多领域协同仿真,需要通过一个中间件(适配器),将RTI与ADAMS软件连接起来,负责数据交换和时间同步。通过一个能够与远程计算机相互通信的底层API(即Socket服务器),采用Socket服务器与客户端通信方式,实现ADAMS软件与仿真软总线之间的通信、数据交换以及仿真控制权的转移,从而实现联合仿真,适配器与ADAMS、RTI的关系如图1所示。

2 基于Socket的数据通信机制

Socket通常称作“套接字”,Socket套接字主要用于描述IP地址与端口,作为一个通信链的句柄,其目的在于实现不同计算机设备之间的网络通信。

基于Socket的通信机制如图2所示。首先启动服务器,服务器通过调用Socket函数建立一个套接字,并将该套接字和本地网络地址联系在一起,同时做好监听准备。客户端在建立套接字后通过调用 Connect函数和服务器建立连接。基于Socket的通信机制支持数据的双向交互,并可实现异地数据的一致性和同步性,解决ADAMS软件与软总线之间的数据交互。

3 实现途径

ADAMS适配器分两部分:客户端与服务端。客户端为ADAMS软件用户子程序,实现与Socket服务器的连接,获得 ADAMS模型计算所需数据,在ADAMS模型求解完成后将计算数据输出的功能;服务端为Socket服务器,实现与客户端的数据接收与发送,通过仿真软总线将服务端接收到的数据提供给其它邦员,将从其它邦员获得的数据放入Socket服务端。

3.1 ADAMS客户端接口程序

ADAMS客户端接口程序核心内容有两部分:CONSUB子程序与非CONSUB子程序。CONSUB子程序控制求解器,实现仿真命令的修改,以及返回是否达到指定时间;非CONSUB子程序(如SFOSUB子程序)获取求解器中指定数据(指定构件的位移、速度等)并上传到服务器,从服务器获取所需数据。图3为ADAMS客户端接口程序框图。

ADAMS适配器客户端实现用户模型封装、子程序的编写、编译及仿真脚本文件的编写。

a)用户模型封装。

用户模型封装是以用户建立的动力学模型为基础,针对其中的输入、输出内容,采用非CONSUB用户子程序完成输入、输出标准化接口的开发工作。以Sforce为例,用户模型封装过程为:将Sforce中参数设置选项中Define Using项设置为Subroutine,在User parameter中键入需要传递给子程序的数组。用户模型封装完毕后,将生成扩展名为adm的模型文件,供仿真过程调用。

b)用户子程序编写及编译。

ADAMS用户子程序的作用是实现对仿真模型求解器的控制,进而实现外部仿真系统对仿真过程、仿真时间的控制,将仿真的输出数据(指定构件的位移、速度、力等)上传到服务器,同时从服务器获取下一时刻仿真输入数据和控制信息。

ADAMS子程序的编写按照.C文件的格式进行编写,ADAMS子程序并没有整体的逻辑结构,因为它最终是作为.dll文件被求解器调用,只需在每个单独的函数中实现特定的功能。

以SFOSUB为例,介绍ADAMS非CONSUB用户子程序的主要内容:

1)定义SFOSUB子函数数据结构体类型,用于存储不同函数数据;

2)定义发送接收消息的SEND、GET_MSG函数,完成 Socket端口、IP地址等的初始化,连接 Socket服务器,发送、接收消息;

c)定义CONSUB函数,实现对求解器的控制,获得ADAMS求解器中的数据(如速度、位移等),并返回模型求解所需要的数据。

ADAMS用户子程序的编译是指将编写完成的.C文件编译成被求解器调用的.dll文件,实现途径为在ADAMS-Command dos界面下生成。

3.2 ADAMS服务端接口程序

ADAMS适配器服务端接口程序主要有两个功能:接收ADAMS求解器发送的数据,经处理后提供给其它邦员,并接收其它邦员返回数据,然后发送到ADAMS求解器。图4为适配器服务端接口程序框图。

ADAMS服务端程序、邦员函数的编写环境与客户端相同,包含两部分内容代码的编写:ADAMS sever.h及ADAMS sever.cpp文件。

ADAMS sever.h文件主要定义所需的头文件、消息头结构体、数据结构体,.cpp文件中所需要实现的函数等。ADAMS sever.cpp文件有两部分内容,实现按头文件中的定义对消息进行处理与开启Socket的线程函数。

4 应用示例

本文建立某牵引车及牵引装置的ADAMS模型,采用BH-RTI2.3软总线平台对ADAMS适配器进行测试。在同一局域网不同计算机上安装ADAMS软件及BH-RTI2.3软总线平台(每台计算机都安装),其中一台计算机为RTI服务器,另一台为客户机,首先开启BH-RTI2.3中心服务器运行版,然后启动客户机上的BH-RTI2.3运行版,BH-RTI2.3软总线平台启动后,在客户机上开启适配器服务端程序加入联盟并等待求解器计算,运行ADAMS仿真脚本文件即可运行仿真。仿真运行中间文件及结果如图 5~图9所示。图 9中ADAMS机械系统模型接收到服务端传来的力后打开抓杆,并将抓杆打开角度值返回,达到对整个过程的实时控制。

5 结束语

本文按照Socket的数据通信机制,完成了一种基于 Socket的 ADAMS仿真工具适配器开发,解决了ADAMS软件与仿真软总线之间数据交互及仿真过程驱动接口的通用性问题;

本文开发的适配器实现方法与ADAMS中的具体模型不存在紧密耦合,可通过适配器将ADAMS作为一个联邦成员加入RTI联邦中,参与协同仿真;

该适配器实现方法解决了ADAMS软件与仿真软总线之间数据的接口标准,该适配器开发方法可推广到其它商用软件接口适配器的开发。

[1] 郭斌, 熊光楞, 等. MATLAB与HLA/RTI通用适配器研究与实现[J]. 系统仿真学报, 2004, 16(6): 1275-1279.

[2] 张志娟, 关晓东. MSC Adams用户自定义子程序在卫星姿控系统仿真分析中的应用[J]. 计算机辅助工程, 2006, 15(S1): 4-5.

[3] 薛运锋, 石明全. 基于 ADAMS的列车系统参数化建模的二次开发研究[J]. 铁道机车车辆, 2006, 26(3): 30-33.

[4] 谭翀. 基于 Socket的跨平台多服务器通信系统的设计与实现[J]. 舰船电子工程, 2009 (08): 101-103.

[5] 梁思率, 张和明. ADAMS二次开发技术在分布式仿真中的应用[J]. 系统仿真学报, 2009 (10): 2940-2944.

[6] 纪玉杰, 杨强, 等. 应用C语言编写ADAMS用户自定义函数的研究[J].机械设计与制造, 2006 (01): 101-103.

Development of ADAMS and HLA/RTI Adaptor Based on Socket

Wang Zeng-quan1, Huang Xia-xu2, Wu Yan1, Shen Yan-hua2
(1. Beijing Institute of Space Launch Technology, Beijing, 100076; 2. University of Science and Technology Beijing, Beijing, 100083)

High level architecture (HLA) is a kind of very advanced simulation architecture, which is widely used as the software bus of collaborative simulation due to its better reusability and interoperability. ADAMS is virtual prototype analysis software that is often used in co-simulation. However, ADAMS doesn’t support HLA/RTI, so it can not participate in collaborative simulation based on HLA/RTI. This paper presents a new general adaptor of ADAMS based on Socket and HLA/RTI. In addition, this paper describes implementation of prototype of the adaptor in detail, and the adaptor code was validated by an example. The development of the adapter for engineering application system in distributed and heterogeneous run-time infrastructure of virtual experiment support plug and interoperability.

Socket; ADAMS; High level architecture; Run time infrastructure; Interface development

TP319

A

1004-7182(2017)02-0072-04

10.7654/j.issn.1004-7182.20170216

2016-07-26;

2016-12-09

王增全(1986-),男,工程师,主要研究方向为机电液一体化系统建模与仿真技术

猜你喜欢

子程序服务端适配器
数控加工中数控程序的简化
子程序在数控车编程中的创新应用
多人联机对战游戏的设计与实现
基于三层结构下机房管理系统的实现分析
基于三层结构下机房管理系统的实现分析
基于3D打印的轻型导弹适配器
电源适配器怎么选
6款电力线网络适配器横向评测
美国麦格普公司新型M—LOK相机三脚架适配器
子程序在数控车加工槽中的应用探索