[摘要]仿真軟件的發展與仿真應用、算法、計算機和建模等技術的發展相輔相成。其目標是不斷改善面向問題、面向用戶的模塊描述能力和對模型實驗的功能。SimulationX是個多學科仿真軟件,包括信號、機械、液壓、氣動、電、等學科,本文就SimulationX在不同網絡通訊方面的仿真進行了探索和分析。
[關鍵詞]SimulationX 仿真 機械
SimulationX是德國ITI公司的主要產品, 是一款分析評價技術系統內各部件相互作用的軟件,是多學科領域建模、仿真和分析的通用CAE工具,并具有強大標準元件庫,這些元件庫包括:1D力學 、3D多體系統、動力傳動系統、液力學、氣動力學、熱力學、電子學、電驅動、磁學和控制。
一、SimulationX系統的功能與特點
SimulationX在統一的平臺實現了多學科領域的系統工程的建模和仿真。SimulationX可以根據用戶需求自定義界面, 而簡單快捷的建模方式可以滿足不同用戶的要求。根據不同行業的特點, 用戶可以利用TypeDesignerl 具自定義標準元件、對元件庫的標準元件進行擴展、對已有模型進行封裝以及對所建模型加密,且具有良好的開放性、繼承性和保密性。
主要特點有:①保留了3個層次的建模方式:數學方程級、方塊圖級、基本元素和元件級;模塊名稱參數和變量清晰,不同的用戶可以根據自己的特點和專長選擇適合自己的建模方式或多種方式組合使用。②數據的分析和顯示。③在統一的平臺上實現了多學科領域系統工程建模和仿真:包括機械、液壓、氣動、熱、電和磁等物理領域。不同領域模塊之間直觀的物理連接方式使得SimulationX成為多學科領域系統工程建模和仿真的理想環境之一。④模型、程序、數據、圖形的存儲和檢索。可以通過對軟件的設計來實現這些功能。仿真軟件分為仿真語言、仿真程序包和仿真軟件系統三類。其中仿真語言是應用最廣泛的仿真軟件。仿真程序包是針對仿真的專門應用領域建立起來的程序系統。軟件設認人員將常用的程序段設計成通用的子程序模塊,并設計一個主程序模塊,用于調用子程序模塊。仿真研究人員使用這種程序包可免去繁重的程序編制工作。
二、SimulationX系統的發展優勢
SimulationX仿真模型的擴充或改變都可通過圖形用戶界面( GUI )來進行,無需編寫任何程序代碼。SimulationX為用戶提供了一個標準化、規范化和圖形化的二次開發平臺:用戶不僅可以直接對SimulationX所有模型進行修改, 還可以基于Modelica語言創建新的模型,并能夠把用戶自己的C代碼模型集成到SimulationX軟件包中。SimulationX基于對基本元素進行組合的建模理念, 即把物理系統分解為工程系統的各種最小要素來建立模型,盡可能詳細和精確地描述零部件及復雜的工程系統。
SimulationX定位的目標人群是廣大技術人員,建模的語言是工程技術通用語言。圖形化、基元化的建模方式使其成為工程機械、汽車、造船和航空工業研部門的理想選擇。另外,在利用三維機械軟件進行產品的設計時,如果善于利用軟件的分析功能,將能有效減少試制周期,提高效率,并節約成本。
三、SimulationX系統的網絡通訊設計
基于仿真軟件的服務器端和客戶端的交互式操作的特點,數據通信需要解決在多客戶端情況下大批量、多種類型數據的實時傳輸問題,保證實時通信,服務器端需要提供各客戶端網絡連接、數據收發、網絡控制、數據粘包和丟包處理等解決方案,采用交換服務器模式能夠滿足客戶端與服務器的數據交換,客戶端的數據上傳至服務器,服務器解析數據后保存。
輸出的通訊接口函數,方便地實現服務器和客戶端(服務器端和客戶端)的數據傳輸,服務器為每個連接的客戶端創建若干個工作線程,這些線程負責與連接的客戶端進行數據通信,服務器端設計流程如圖2所示。
發送方引起的粘包是由TCP協議本身造成的,TCP為提高傳輸效率,發送方往往要收集到足夠多的數據后才發送一包數據,若連續幾次發送的數據都很少,通常TCP會根據優化算法把這些數據合成一包后一次發送出去,這樣接收方就收到了粘包數據。
接收方引起的粘包是由于接收方用戶進程不及時接收數據,從而導致粘包,這是因為接收方先把收到的數據放在套接字內部接收緩沖區,用戶進程再從該緩沖區取出數據,若下一包數據到達時前一包數據尚未被用戶進程取走,則下一包數據就會放到該緩沖區中前一包數據之末,而用戶進程根據預先設定的緩沖區大小從接收緩沖區取數據,這樣就一次取到了多包數據。數據接收線程和數據解讀線程分離設計方法可以解決粘包問題,數據接收線程完成數據的接收和數據預處理(將粘連的數據包解開),數據解讀線程負責處理數據包。
參考文獻:
[1]徐 晶, 許 煒:消息中間件綜述[J],計算機工程,2005,31(16):73—76
[2]李歡峰:中間件技術在分布式事務處理中的研究和應用[D],沈陽:東北大學軟件工程,2006
[3]BEVERIDGE J:WIENER R.Win32多線程程序設計[M],侯捷,譯.華中科技大學出版社,2002:403
[4]李小立:基于VC++6.0 MFC的多線程通信程序[D],西安:西北工業大學計算機應用技術,2001
[5]周敏剛, 張學宏, 張玲英等:基于Socket的網絡中間件開發技術.航空計算技術[J],2000,30(4):29 —32