?

基于Socket的ADAMS與HLA/RTI適配器開發

2017-04-28 02:21王增全黃夏旭申焱華
導彈與航天運載技術 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函數和服務器建立連接?;赟ocket的通信機制支持數據的雙向交互,并可實現異地數據的一致性和同步性,解決ADAMS軟件與軟總線之間的數據交互。

3 實現途徑

ADAMS適配器分兩部分:客戶端與服務端??蛻舳藶锳DAMS軟件用戶子程序,實現與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相機三腳架適配器
子程序在數控車加工槽中的應用探索
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合