一種採用iosem接口方式的緊耦合仿真通用模型實現方法
2023-05-31 00:25:51 1
專利名稱:一種採用iosem接口方式的緊耦合仿真通用模型實現方法
技術領域:
本發明涉及計算機仿真方法技術領域,具體為一種採用IOSEM接口方式的緊耦合仿真通用模型實現方法。
背景技術:
緊耦合仿真是指仿真應用中,仿真模型間的數據交互關係複雜,數據交互頻率高,交互量大,具有緊密的對應關係。在建模仿真過程中,仿真模型接受仿真軟體的調度,要完成建模、仿真以及其它一些應用需求的多種功能,客觀上要求模型接口具有一定的靈活性 和通用性。而目前緊耦合模型間的接口一般都是根據需求自定義接口,還沒有一個統一的接口技術,這就使得現有仿真過程中的接口複雜,不同功能模塊的模型可移植性差,可重用性差。
發明內容
要解決的技術問題為解決現有技術中存在的問題,提供一種標準化的仿真模型接口,本發明提出了一種採用IOSEM接口方式的緊耦合仿真通用模型實現方法。技術方案本發明中IOSEM指的是輸入參數(Input)、輸出參數(Output)、狀態參數(State)、事件響應接口(Event)和消息(Message)。本發明的技術方案為所述一種採用IOSEM接口方式的緊耦合仿真通用模型實現方法,其特徵在於包括以下步驟步驟I :在C語言或C++語言環境中,建立動態庫編譯環境;步驟2 :定義仿真模型的接口函數,函數參數由外部系統向仿真模型發出的事件消息、外部系統向仿真模型傳遞的消息參數、當前仿真時間、當前仿真步長、仿真狀態變量、輸入變量、輸出變量和仿真狀態變量的導數變量組成;步驟3 :根據仿真模型的功能,在仿真模型的接口函數中構建以下事件中的單個事件或多個事件仿真模型信息事件、仿真初始化事件、狀態遷移事件、模型輸出事件、仿真結束事件和自定義事件;接口函數中的事件響應採用switch-case結構;步驟4 :編譯仿真模型,生成IOSEM接口方式的仿真模型。有益效果一個複雜系統的模型,必然包含了若干子系統模型,即一個複雜大系統模型事實上是由若干子模型功能組成的。採用本發明提出的緊耦合仿真通用模型實現方法,可以使得每一個子模型成為一個標準化的模型配件,進而通過對所有子模型進行合理裝配得到複雜系統的模型。這樣不僅可以實現每個模型的接口標準化、透明化,便於實現模塊化建模,還提高了模型的可移植性和重用性,大大降低複雜系統的建模仿真難度。
圖I :仿真模型的信息描述
具體實施例方式下面結合具體實施例描述本發明實施例本實施例以一個自由落體數學模型為例(向上為正),其中D為下降過程中的阻力加速度,則其仿真模型微分方程為
\v = —g — D. δ
[H = V要構建採用IOSEM接口方式的仿真模型,主要採用以下步驟步驟I :在C語言或C++語言環境中,建立動態庫編譯環境;步驟2 :定義仿真模型的接口函數,函數參數由外部系統向仿真模型發出的事件消息、外部系統向仿真模型傳遞的消息參數、當前仿真時間、當前仿真步長、仿真狀態變量、輸入變量、輸出變量和仿真狀態變量的導數變量組成;參照附圖1,仿真模型的接口分為以下幾個部分輸入參數(Input):仿真模型需要的輸入數據,可以是多維,包括數據維數和數據說明。輸出參數(Output):仿真模型的輸出數據,可以是多維,包括數據維數和數據說明。狀態參數(State):對於緊耦合仿真模型,狀態參數表示了系統或模型當前運行的狀態參數,包括當前時間,運行步長,微分方程組的狀態和微分值。事件響應接口(Event):仿真軟體平臺採用消息驅動機制驅動模型運行,仿真模型根據平臺發送的消息進行相應的計算,事件響應接口是響應系統消息的計算部分。由於平臺向模型發送的消息種類比較多,為每個消息定製響應的接口函數將導致編程過程複雜,因此,事件響應接口採用統一的接口,在該接口內,用戶可以處理各種系統或自定義消肩、O消息(Message):仿真模型向仿真軟體或其它仿真模型發送的信息,進行仿真模型間的協調運行和數據交互。仿真模型接口的形式為extern" C" int_exportInterface(int msg,int param,double time,double氺step,double氺x,double氺u,double氺y,double氺f)各參數的意義為msg :系統向仿真模型發出的事件消息;param :系統向仿真模型傳遞的消息參數,根據不同的消息,傳遞參數類型不同;time :當前仿真時間;step:當前仿真步長;
X :仿真狀態變量;U :輸入變量,外部的輸入參數;
y :輸出變量,計算結果通過該參數輸出;f :狀態變量的導數變量指針,用來計算狀態變量的導數;由該接口可以看出在模型中,通過響應各種仿真消息,實現仿真平臺對仿真模型的驅動;Param參數為模型數據的保存、維護等提供了支持;仿真時間和仿真步長是由平臺維護的,仿真模型可以直接使用;通過X、U、y、f這四個參數為仿真模型的計算提供了支持;通過參數u可以得到仿真模型的輸入,通過X可以得到當前的積分狀態值,通過設定f以設定積分的導數值,通過設定I給出模型的輸出值。那麼在本實施例中,完成仿真模型功能的接口元素為輸入變量D (阻力加速度);輸出變量V,H(速度、高度);仿真狀態變量V,H (速度、高度);步驟3 :根據仿真模型的功能,在仿真模型的接口函數中構建以下事件中的單個事件或多個事件仿真模型信息事件、仿真初始化事件、狀態遷移事件、模型輸出事件、仿真結束事件和自定義事件;接口函數中的事件響應採用switch-case結構;在仿真模型接口函數中,通過響應msg事件消息,完成相應的事件行為仿真模型信息事件通過該事件填充模型的信息,如模型名、輸入輸出信息等;仿真初始化事件在仿真前進行的初始化過程,如賦狀態初值、打開文件讀取數據等;狀態遷移事件狀態的變化,求解狀態變量的微分;模型輸出事件輸出本模型的數據;仿真結束事件結束仿真時的清理過程。本實施例中採用了 4個事件響應仿真模型信息事件響應、仿真初始化事件響應、狀態遷移事件響應、狀態輸出事件響應。本實施例中,仿真模型實現的偽代碼為
extern 」C" int export
Drop(int msg, int param,double time,double* step, double* x,double* u,double* y,double* f)
{ doubleg=9.81;//重力加速度switch(msg)
{
case SM—INFO: //仿真模型信息事件響應 model.title= 「自由落體動力學模型」; model.inpu t= 「D」; model.output= 「V,H」;
break;
case SM—INITIALIZE: //仿真初始化事件響應x
=0; //狀態V賦初值x[l]=1000;//狀態H賦初值
break;
case SM—CONTINUE: //狀態遷移事件響應fI0]=-g-u
; //狀態的變化率fll]=x
;break;
case SM—OUTPUT: //狀態輸出事件響應y
=x
;y[l]=x[l];break;
}
return 0;
}步驟4 :編譯仿真模型,生成IOSEM接口方式的仿真模型。
權利要求
1.一種採用IOSEM接口方式的緊耦合仿真通用模型實現方法,其特徵在於包括以下步驟 步驟I :在C語目或C++語目環境中,建立動態庫編譯環境; 步驟2 :定義仿真模型的接口函數,函數參數由外部系統向仿真模型發出的事件消息、外部系統向仿真模型傳遞的消息參數、當前仿真時間、當前仿真步長、仿真狀態變量、輸入變量、輸出變量和仿真狀態變量的導數變量組成; 步驟3 :根據仿真模型的功能,在仿真模型的接口函數中構建以下事件中的單個事件或多個事件仿真模型信息事件、仿真初始化事件、狀態遷移事件、模型輸出事件、仿真結束事件和自定義事件;接口函數中的事件響應採用switch-case結構; 步驟4 :編譯仿真模型,生成IOSHM接口方式的仿真模型。
全文摘要
本發明提出了一種採用IOSEM接口方式的緊耦合仿真通用模型實現方法,首先建立動態庫編譯環境,然後定義仿真模型的接口函數,並根據仿真模型的功能,在仿真模型的接口函數中構建以下事件中的單個事件或多個事件仿真模型信息事件、仿真初始化事件、狀態遷移事件、模型輸出事件、仿真結束事件和自定義事件;接口函數中的事件響應採用switch-case結構,最後編譯生成仿真模型。採用本發明提出的方法,可以使每一個子模型成為標準化的模型配件,通過對所有子模型進行合理裝配得到複雜系統的模型。這樣可以實現每個模型的接口標準化、透明化,便於實現模塊化建模,還提高了模型的可移植性和重用性,大大降低複雜系統的建模仿真難度。
文檔編號G06F17/50GK102637224SQ20121007245
公開日2012年8月15日 申請日期2012年3月19日 優先權日2012年3月19日
發明者閆曉東 申請人:西北工業大學