專利名稱:模擬方法和模擬程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用來使用計算機進行機械等的動作模擬的方法和程序,特別地本發(fā)明使用混合模型。
背景技術(shù):
現(xiàn)在,在使用計算機進行機械和裝置等的動作的模擬時,使用了被稱為混合模型的方法。使用了混合模型的模擬被稱為“混合模擬”。將進行這樣的模擬動作的系統(tǒng)稱為“混合系統(tǒng)”。
以模擬目地作成的混合模型是概念性地組合了通過使常微分方程式和代數(shù)方程式聯(lián)合成立的聯(lián)立方程式表現(xiàn)的連續(xù)系統(tǒng)模型、用來表現(xiàn)伴隨著事件發(fā)生的狀態(tài)遷移的狀態(tài)遷移模型的模型。通過混合模型,能夠表現(xiàn)根據(jù)來自外部的事件瞬時地切換用連續(xù)系統(tǒng)模型表現(xiàn)的狀態(tài)的系統(tǒng)。
作為記述混合模型的語言,有由美國xerox公司(商標(biāo))的帕洛阿爾托研究所創(chuàng)制的被稱為HCC(混合并行約束編程)的語言(參照下述的非專利文獻1)。HCC正在發(fā)展中,現(xiàn)在在美國的NASA的埃莫斯研究所中正在進行研究。HCC是被稱為約束處理編程(約束編程)的技術(shù)的一種,將表現(xiàn)連續(xù)系統(tǒng)模型的常微分方程式和代數(shù)方程式作為約束進行處理,可以用其原樣的不同順序記述這些方程式。向這樣的約束記述附加控制狀態(tài)遷移的記述,來完成HCC語言的混合模型。通過HCC,能夠作為其原樣的約束來編寫方程式(編程),并能夠記述復(fù)雜的模型。
如果這樣使用混合模型的技術(shù),則能夠用常微分方程式模型地表現(xiàn)系統(tǒng)的特性,能夠從初始狀態(tài)依照時間的推移,模擬出表示了什么樣的動作。
作為能夠用微分方程式等表現(xiàn)的對象和能夠?qū)ο蟠_實地模型化的混合模型的技術(shù)的應(yīng)用例子,有通過軟件模擬控制機械的電子管機械的機構(gòu)模擬。通過相關(guān)的模擬,在不存在實際的機械機構(gòu)的狀況下,能夠進行控制該機構(gòu)的控制軟件的編制、測試或調(diào)試等。
非專利文獻1因特網(wǎng)<URLhttp://www2.parc.com/spl/projects/mbc/publications.html#cclanguages>
但是,能夠處理混合模型的公知的程序語言并不必須是以應(yīng)用于電子管機械的機構(gòu)模擬為目的而開發(fā)的,因此有以下這樣的問題點。
例如,美國xerox公司(商標(biāo))的HCC是編譯型的編程語言,例如在控制軟件從模擬器的外部作為控制信號接受發(fā)向?qū)C構(gòu)發(fā)送信號的執(zhí)行元件的動作指令等的結(jié)構(gòu)的情況下,在有必要個別地定義外部函數(shù)等的基礎(chǔ)上,還有必要在編程中花費工夫。
具體地說,就是模型制作者有必要對外部函數(shù)的編程例如進行以下的工作。
(1)利用HCC語言固有的外部函數(shù)記述用API,用C語言等其他的語言記述外部函數(shù)的程序。
(2)通過C語言編譯器編譯記述了的外部函數(shù)的程序,作成例如能夠在執(zhí)行時連接的動態(tài)連接庫。
(3)配置在HCC編譯器能夠確定其路徑的目錄上作成的庫,使得HCC編譯器能夠調(diào)用它。
所以,模型制作者有必要學(xué)習(xí)HCC語言固有的外部函數(shù)記述用API,在模擬執(zhí)行時還要花費另行編譯外部函數(shù)的時間。
另外,有關(guān)模型記述中的外部函數(shù)的調(diào)用方法,在不與事件關(guān)聯(lián)地管理外部函數(shù)的執(zhí)行的HCC中,由于能夠記述發(fā)生了狀態(tài)遷移的瞬間進行調(diào)用的情況、進行數(shù)值積分時進行調(diào)用的情況這兩者的情況,所以模型制作者難以掌握執(zhí)行外部函數(shù)的定時,需要對模型制作有高度的熟練。
發(fā)明內(nèi)容
本發(fā)明就是考慮了這樣的情況而提出的,其目的是提供一種能夠使用混合模型簡便并且正確地對復(fù)雜的機構(gòu)系統(tǒng)進行模型化,并適合于與控制該機構(gòu)系統(tǒng)的控制軟件進行協(xié)作模擬的模擬方法和程序。
另外,其目的還在于能夠使記述與外部的協(xié)作等有關(guān)的處理的程序直接包含在混合模型記述的一部分中,擴大模擬的適用范圍。
與本發(fā)明的一個觀點有關(guān)的模擬方法是一種混合模型解析方法,是解析用于沿著時間軸的機構(gòu)的動作的模擬的混合模型的混合模型解析方法,其特征在于包括從上述混合模型的記述中分別抽出與連續(xù)系統(tǒng)方程式有關(guān)的記述、與狀態(tài)遷移有關(guān)的記述、與附加處理有關(guān)的記述的解析步驟;生成在上述模擬的執(zhí)行中分別被調(diào)用的、基于與上述連續(xù)系統(tǒng)方程式有關(guān)的記述的第1程序、基于與上述狀態(tài)遷移有關(guān)的記述的第2程序、基于與上述附加處理有關(guān)的記述的第3程序的程序生成步驟。
根據(jù)本發(fā)明,能夠提供一種能夠使用混合模型簡便并且正確地對復(fù)雜的機構(gòu)系統(tǒng)進行模型化,并適合于與控制該機構(gòu)系統(tǒng)的控制軟件進行協(xié)作模擬的模擬方法和程序。
圖1是展示本發(fā)明的實施例1相關(guān)的機構(gòu)模擬器的概要構(gòu)成的框圖。
圖2是展示與用來說明混合模型記述的具體例子有關(guān)的汽缸裝置的某狀態(tài)的圖。
圖3是展示與用來說明混合模型記述的具體例子有關(guān)的汽缸裝置的另一個狀態(tài)的圖。
圖4是展示與用來說明混合模型記述的具體例子有關(guān)的汽缸裝置的狀態(tài)遷移的圖。
圖5是展示混合模型記述的內(nèi)容的圖。
圖6是對1個連續(xù)系統(tǒng)方程式進行語法解析的結(jié)果而得到的內(nèi)部數(shù)據(jù)表現(xiàn)的說明圖。
圖7是展示本發(fā)明的實施例1有關(guān)的機構(gòu)模擬的處理步驟的流程圖。
圖8是機構(gòu)模擬的時間序列的流程的說明圖。
圖9是展示本發(fā)明的實施例2有關(guān)的機構(gòu)模擬器的概要構(gòu)成的框圖。
圖10是展示本發(fā)明的實施例2的有關(guān)的混合模型記述的內(nèi)容的圖。
圖11是展示機構(gòu)模擬的處理步驟的流程圖。
具體實施例方式
以下,參照附圖,說明本發(fā)明的實施例。
(實施例1)
圖1是展示本發(fā)明的實施例1相關(guān)的機構(gòu)模擬器的概要構(gòu)成的框圖。
本實施例由混合模型前處理部件201、混合模型模擬執(zhí)行部件102構(gòu)成?;旌夏P陀浭?04是用混合模型記述語言等記述的源程序,被輸入到本實施例的混合模型前處理部件201。從混合模型模擬執(zhí)行部件102的輸出是通過連續(xù)系統(tǒng)模擬部件103作為連續(xù)系統(tǒng)模擬的結(jié)果得到的變量值的運算結(jié)果及其時間履歷。該輸出被存儲在變量值時間履歷存儲部件105中。
如圖1所示,混合模型前處理部件201具備控制信息解析部件110。另外,混合模型模擬執(zhí)行部件102具備事件處理部件111、方程式語法解析部件112、方程式數(shù)據(jù)存儲部件114、連續(xù)系統(tǒng)方程式切換部件115、附加處理執(zhí)行部件205以及連續(xù)系統(tǒng)模擬部件103。另外,本實施例能夠使用一般的計算機來構(gòu)成,作為其基本硬件結(jié)構(gòu),具備未圖示的中央運算單元(CPU)、存儲器、外部存儲裝置、通信接口(I/F)、顯示裝置、以及鍵盤、鼠標(biāo)等輸入裝置。另外,還具備控制這些硬件的操作系統(tǒng)(OS)。另外,本發(fā)明的實施例有關(guān)的機構(gòu)模擬器能夠作為在這樣的操作系統(tǒng)上工作的應(yīng)用程序而安裝。
在說明這樣的本實施例相關(guān)的機構(gòu)模擬器的構(gòu)成及其處理步驟之前,在此,首先列舉具體例子說明如何記述混合模型記述104。
圖2和圖3是展示與具體例子有關(guān)的作為混合模型的記述對象的機構(gòu)的圖。該機構(gòu)是具備閥301、彈簧303和活塞302的簡單構(gòu)造的汽缸裝置。
閥301對應(yīng)于來自外部的指令(事件)而進行開閉動作。由此,以下,將如圖2所示汽缸裝置內(nèi)的空氣流動變更為向側(cè)的事件稱為“Left”,將如圖3所示變更為左側(cè)的事件稱為“Right”。圖2展示了向閥301付與Left事件的狀態(tài),對活塞302作用為紙面向右的力。表示該狀態(tài)的運動方程式如汽缸裝置的下部所示的那樣,為“-F=mx””。與此相對,圖3展示了向閥301付與Right事件的狀態(tài),空氣流向改變,運動方程式變化為同圖的“F=mx””。
圖4作為由狀態(tài)的遷移和與各個狀態(tài)對應(yīng)的運動方程式構(gòu)成的狀態(tài)遷移圖,來表現(xiàn)這樣的結(jié)構(gòu)動作?;旌夏P捅硎居梦⒎址匠淌胶痛鷶?shù)方程式或它們的聯(lián)立方程式(連續(xù)系統(tǒng)方程式)來表現(xiàn)如該圖4所示的狀態(tài)遷移、各狀態(tài)的記述。根據(jù)圖4可知,狀態(tài)有2個,在該2個狀態(tài)之間存在狀態(tài)遷移。
在本發(fā)明中,通過在根據(jù)圖4的狀態(tài)遷移圖用HCC語言記述具體的混合模型的內(nèi)容的同時,用規(guī)定的程序語言記述用連續(xù)系統(tǒng)方程式表現(xiàn)的處理以外的處理,例如與外部的協(xié)作等有關(guān)的處理(以下稱為“附加處理”),來生成混合模型記述104。
圖5是展示本發(fā)明相關(guān)的與混合模型記述相當(dāng)?shù)某绦虻囊粋€例子的圖。在圖5中,假設(shè)(源)程序的邏輯行編號為L1~L23。L3、L4和L8相當(dāng)于上述機械裝置的初始狀態(tài)和閥操作定時等的運轉(zhuǎn)條件的記述,L5和L6相當(dāng)于圖4所示的狀態(tài)遷移的表現(xiàn)記述。另外,L9~L23是與附加處理有關(guān)的記述,在此,記述“將現(xiàn)在的狀態(tài)寫入文件中”這樣的內(nèi)容的處理。另外,在module段中指定為“C”,相應(yīng)的L9~L17為基于C語言的程序記述。
在HCC語言中,如圖5的L5和L6所知道的那樣,能夠原樣地在程序內(nèi)記述運動方程式。在L5和L6中狀態(tài)是不同的。另外,在各自的狀態(tài)下,接在所謂的前提條件“always if”后面記述遷移到該狀態(tài)的條件。另外,接在所謂的遷移條件“watching”后面記述取消該狀態(tài)的條件,換一種說法就是從該狀態(tài)遷移出去的條件。
并且,在HCC中,并不一定按照程序記述的順序(例如圖5中的邏輯行編號L1→L8的順序)進行執(zhí)行。在HCC中,搜索個別程序記述中的沿著執(zhí)行模擬的時間軸成立的步驟來執(zhí)行。即,邏輯行編號L1→L8的順序與執(zhí)行順序無關(guān)。例如,在開始模擬的時刻,只有L3和L8有效。在此,由于通過L3產(chǎn)生了事件Right(ev1),所以作為L6的前提條件的Right變得有效,而L6中所記述的運動方程式eq2變得有效。即,從圖4的左側(cè)的狀態(tài)開始執(zhí)行模擬。
進而,如果時間變?yōu)?0,則L4成為有效,產(chǎn)生事件Left(ev2),L6的遷移條件(“watch”以下即Left)成為有效,L6的運動方程式eq2成為無效。代替它,L5的前提條件成為有效,運動方程式eq1成為有效。
另外,以上那樣的程序例子還記述了根據(jù)來自外部的事件而狀態(tài)遷移的情況(L5、L6),但當(dāng)然也可以根據(jù)內(nèi)部的狀況使?fàn)顟B(tài)遷移。例如,在圖2中沒有切換閥301的情況下,移動的活塞302與彈簧303接觸,受到了來自該彈簧303的反作用力。即,與彈簧302的位置相關(guān),存在即使在沒有來自外部的事件的情況下也發(fā)生狀態(tài)遷移的情況。在這樣的情況下,例如可以根據(jù)x是否為正那樣的內(nèi)部變量的評價公式(不等式)的評價結(jié)果,來判斷狀態(tài)遷移的必要性。
一般,混合模型是組合了以下模型的模型通過使常微分方程式和代數(shù)方程式聯(lián)立的聯(lián)立方程式表現(xiàn)的連續(xù)系統(tǒng)模型、用來表現(xiàn)伴隨著事件發(fā)生的狀態(tài)遷移的狀態(tài)遷移模型。通過混合模型,能夠表現(xiàn)根據(jù)來自外部的事件等瞬時地切換用連續(xù)系統(tǒng)模型表現(xiàn)的狀態(tài)的系統(tǒng)。
進而,如果時間成為100,則L19成為有效,產(chǎn)生事件E(ev5),同時調(diào)用cPrint的函數(shù)和參數(shù)x的值(L18~L23)。該記述表示執(zhí)行將該時刻的狀態(tài)保存到文件中的附加處理,其具體的處理內(nèi)容在L9~L17中通過例如C語言被記述。
行L18~L23是控制附加處理(L11~L16)的混合模型記述104的內(nèi)容。process(E){cPrint(x)}的記述是伴隨著事件E的發(fā)生執(zhí)行附加處理即cPrint(x)那樣的指令語法。在此,可以使用與連續(xù)方程式的切換有關(guān)的Left事件、Right事件相同的事件,來記述與附加處理的執(zhí)行控制有關(guān)的事件。通過這樣的本實施例,(1)能夠在與相當(dāng)于具有連續(xù)系統(tǒng)方程式的切換的混合模型的記述為同一個的源程序上,記述附加處理的內(nèi)容;(2)能夠混合記述調(diào)用附加處理等的控制。所以,能夠記述容易理解的簡潔的模擬模型。
接著,說明混合模型前處理部件201中的處理?;旌夏P陀浭?04首先在混合模型前處理部件201的控制信息解析部件110中被處理,生成模型方程式登記程序202、事件控制程序203以及模擬執(zhí)行時附加處理程序204。
作為構(gòu)成混合模型模擬執(zhí)行部件102的軟件模塊,作為API提供了用來進行模型方程式的登記的函數(shù)和用來切換連續(xù)系統(tǒng)方程式的函數(shù)。模型方程式登記程序202和事件控制程序203是按照輸入的混合模型記述104,適當(dāng)?shù)亟M合了調(diào)用對應(yīng)的上述API函數(shù)的記述的程序。如果從該觀點考慮,則混合模型前處理部件201可以被考慮為是一種編譯器,它將輸入作為混合模型記述104,將輸出作為包含例如C語言的API函數(shù)調(diào)用的記述的C程序(源程序)。這樣的模型方程式登記程序202和事件控制程序203進而通過C語言等的編譯器被編譯,生成例如在執(zhí)行時能夠動態(tài)連接的庫。在混合模型模擬執(zhí)行部件102中,在模擬的執(zhí)行時連接所生成的動態(tài)連接庫,完成忠實地再現(xiàn)輸入混合模型的模擬程序,而變得能夠執(zhí)行。另外,生成的這些庫并不一定必須是動態(tài)連接庫,也可以是靜態(tài)庫。
可以考慮各種各樣的構(gòu)成混合模型模擬執(zhí)行部件102的應(yīng)用程序接口的具體的軟件模塊的式樣等,但在此,為了說明,而最低限度地定義了以下3個API函數(shù)。另外,假設(shè)程序語言是C語言。
int XXX_AddEqnData(char*eqn,int*err)
int XXX_ActivateEqn(int eqnid)
int XXX_DeActivateEqn(int eqnid)
第1個API函數(shù)XXX_AddEqnData將表示一個連續(xù)系統(tǒng)方程式的字符串的指針指定為參數(shù)。XXX_AddEqnData解析該連續(xù)方程式的語法,將連續(xù)方程式的記述轉(zhuǎn)換為能夠執(zhí)行模擬的數(shù)據(jù)結(jié)構(gòu)(內(nèi)部數(shù)據(jù)表現(xiàn)),并進行將相關(guān)的內(nèi)部數(shù)據(jù)表現(xiàn)登記到方程式數(shù)據(jù)存儲部件114中的處理。另外,向此處的連續(xù)系統(tǒng)方程式分配了唯一的ID編號。
例如,如果假設(shè)付與“ab/cos(a-(c+b))-3c”這樣的公式,則作為上述內(nèi)部數(shù)據(jù)表現(xiàn)生成圖6那樣的樹結(jié)構(gòu)。在該樹結(jié)構(gòu)中,例如,參考數(shù)字61表示線性多項式的父節(jié)點(節(jié)),62表示乘運算的節(jié)點,63表示除運算的節(jié)點,64表示外部函數(shù)(四則運算)以外的節(jié)點,65表示構(gòu)成線性多項式的各項的節(jié)點。在本例子中,相當(dāng)于樹結(jié)構(gòu)的葉子的節(jié)點都是變量(a、b、c),向它們加上實數(shù)的系數(shù)而成為線性公式。線性公式成為cos等外部函數(shù)的參數(shù),成為乘運算和除運算的對象。在變量中,另行設(shè)置了值是否確定的標(biāo)志,另外,根據(jù)這樣的樹結(jié)構(gòu)的數(shù)據(jù),保存該變量的現(xiàn)在的值。如果樹結(jié)構(gòu)的所有葉子的值(即變量的值)都是確定的,則能夠計算公式的值。在方程式數(shù)據(jù)存儲部件114中,為了能夠高速地進行公式的值的計算等,而預(yù)先組合內(nèi)部的數(shù)據(jù)結(jié)構(gòu)構(gòu)成樹結(jié)構(gòu)。在上述處理中,在發(fā)生了任何的錯誤的情況下,則向err設(shè)置錯誤碼。在處理正常結(jié)束了的情況下,將登記的方程式的ID編號設(shè)置為返回值。
第2個API函數(shù)XXX_ActivateEqn將對應(yīng)于在參數(shù)中指定的方程式的ID編號的方程式設(shè)置為有效。在已經(jīng)指定了成為有效的方程式的情況下,則什么也不做。返回值是錯誤碼。
第3個API函數(shù)XXX_DeActivateEqn與XXX_ActivateEqn相反,將對應(yīng)于在參數(shù)中指定的方程式的ID編號的方程式設(shè)置為無效。在已經(jīng)指定了成為無效的方程式的情況下,則什么也不做。
控制信息解析部件110首先生成對必要的方程式依次調(diào)用XXX_AddEqnData的函數(shù)(InitEqnData)。它相當(dāng)于模型方程式登記程序202(第1程序)。
另外,控制信息解析部件110在執(zhí)行模擬時,還生成時間每前進Δt就進行條件的檢查和方程式的變更(更換)的函數(shù)(ChangeEqn)。它相當(dāng)于事件控制程序203(第2程序)。
在此,ChangeEqn函數(shù)通過GetEvent函數(shù),檢測Left事件、Right事件和E事件的產(chǎn)生。在執(zhí)行模擬時的每個時間步長由事件處理部件111調(diào)用ChangeEqn函數(shù)。
在混合模型模擬執(zhí)行部件102中,如圖1所知道的那樣,將事件處理部件111和連續(xù)系統(tǒng)模擬部件103分離。所以,在事件控制程序203中不包含依存于時間積分等的時間的模塊,與它對應(yīng)的事件處理部件111只進行連續(xù)系統(tǒng)方程式的有效/無效的標(biāo)志的切換。
通過采用這樣的模擬結(jié)構(gòu),能夠通過同一處理(if(GetEvent(事件){處理})管理與外部機器的接口有關(guān)的事件、與混合記述有關(guān)的事件。
另外,混合模型前處理部件201由于作為與附加處理相同的語言而輸出混合模擬模型,所以能夠容易地生成混合模擬執(zhí)行程序。
通過上述那樣,容易地使混合模擬與外部機器進行了協(xié)作。
進而,控制信息解析部件110從混合模型記述104中抽出附加處理的內(nèi)容記述。相應(yīng)的記述相當(dāng)于模擬執(zhí)行部件附加處理程序204(第3程序)。模擬執(zhí)行部件附加處理程序204在混合模型記述104中,同時相當(dāng)于通過C語言等記述的程序的源程序。例如,在圖5所示的混合模型記述104中,參照module段,抽出用C語言記述的部分。抽出的模擬執(zhí)行部件附加處理程序204由C語言編譯器進行編譯,生成能夠動態(tài)連接的庫。附加處理執(zhí)行部件205擔(dān)負(fù)著調(diào)用該可動態(tài)連接的庫的接口的作用。并且,生成的庫并不必須一定是動態(tài)連接庫,也可以是靜態(tài)庫。另外,記述附加處理的內(nèi)容的語言并不限定于C語言。
通過上述那樣的混合模型前處理部件201的處理,例如,對圖5所示的混合模型記述自動生成了以下這樣的C語言的源程序。
static char eqn1[]=“f=mx””;static char eqn2[]=“-f=mx“”;<!-- SIPO <DP n="9"> --><dp n="d9"/>static int eqn1id;static int eqn2id;int InitEqnData(){int err;eqn1id=XXX_AddEqnData(eqn1,&err);if(err!=0)return err;eqn2id=XXX_AddEqnData(eqn2,&err);if(err!=0)return err;}int ChangeEqn(){int err;BOOL GetEvent(char*eventname);if(GetEvent(“Left”)){err=XXX_ActivateEqn(eqnlid);if(err!=0)return err;XXX_DeActivateEqn(eqn2id);If(err!=0)return err;}if(GetEvent(“Right”)){XXX_ActivateEqn(eqn2id);if(err!=0)return err;XXX_DeActivateEqn(eqnlid);If(err!=0)return err;}if(GetEvent(“E”)){cPrint(x);}<!-- SIPO <DP n="10"> --><dp n="d10"/>return 0;}int cPrint(int num){FILE*fp=fopen(“l(fā)og.txt”,“a”);fprintf(fp.“%d”,num);fclose(fp);}
并且,GetEvent是檢查是否產(chǎn)生了在參數(shù)中指定的名字(eventname)的事件的函數(shù)。
以上的程序如上所述,由C語言編譯器進行編譯,進而被調(diào)整為動態(tài)連接庫的形式,實時地被連接。
并且,在本實施例中,說明了作為程序語言使用了C語言的例子,但本發(fā)明并不只限于此,也可以使用例如C++語言、SpecC語言等其他程序語言。
接著,說明模擬的執(zhí)行。在模擬執(zhí)行時,啟動混合模型模擬執(zhí)行部件102,通過計算連續(xù)系統(tǒng)方程式的值來進行模擬執(zhí)行。這時,連續(xù)系統(tǒng)方程式切換部件115在事件處理部件111的內(nèi)部被調(diào)用,利用有效/無效的標(biāo)志執(zhí)行連續(xù)系統(tǒng)方程式的切換。事件處理部件111對應(yīng)于在前處理中生成的事件控制程序203(第2程序ChangeEqn)。在圖2的狀態(tài)下,圖5的運動方程式eqn1是有效的,運動方程式eqn2成為無效。在此,在產(chǎn)生了Left事件的圖3的狀況下,設(shè)置標(biāo)志,使圖5的運動方程式eqn1有效,使運動方程式eqn2無效。作為存儲在方程式數(shù)據(jù)存儲部件114中的方程式各自的屬性數(shù)據(jù)來管理這些有效/無效的標(biāo)志。
連續(xù)系統(tǒng)模擬部件103參照方程式數(shù)據(jù)存儲部件114,將以樹結(jié)構(gòu)的形式存儲在該存儲部件114中的連續(xù)系統(tǒng)方程式的內(nèi)部數(shù)據(jù)表現(xiàn)作為運算對象,對每個時間步長執(zhí)行數(shù)值積分。模擬就是針對由常微分方程式和代數(shù)多項式的聯(lián)立構(gòu)成的非線性聯(lián)立方程式的初始值問題。因此,例如,付與圖2所示的初始狀態(tài)。具體地說,例如使用一般經(jīng)常使用的龍格-庫塔算法來計算解的值。
從機構(gòu)模擬器進行必要數(shù)據(jù)的輸出,進而,返回連續(xù)系統(tǒng)方程式切換部件115的處理,通過循環(huán)進行上述處理,來執(zhí)行必要時間的模擬。模擬結(jié)果被保存在變量值時間履歷存儲部件105中,被用于模擬結(jié)束后的分析等。
圖7是展示以上說明了的本發(fā)明的實施例1相關(guān)的機構(gòu)模擬中的一連串處理步驟的流程圖。該處理步驟可以大致區(qū)分為混合模型前處理的階段、模擬執(zhí)行的階段。
首先,向控制信息解析部件110輸入混合模型記述104,進行混合模型的語法解析(步驟S1)??刂菩畔⒔馕霾考?10如圖1所示,分別生成模型方程式登記程序202、事件控制程序203、模擬執(zhí)行時附加處理程序204。如果用于模擬執(zhí)行的前處理結(jié)束了,則從此轉(zhuǎn)移到模擬執(zhí)行階段。
首先,從混合模型模擬執(zhí)行部件102調(diào)用方程式語法解析部件112。方程式語法解析部件112與模型方程式登記程序202(第1程序InitEqnData)對應(yīng),在其內(nèi)部調(diào)用API函數(shù)XXX_AddEqnData。由此,將連續(xù)系統(tǒng)方程式的記述數(shù)據(jù)轉(zhuǎn)換為能夠執(zhí)行模擬的數(shù)據(jù)結(jié)構(gòu)。將轉(zhuǎn)換了的數(shù)據(jù)登記到方程式數(shù)據(jù)存儲部件114中(步驟S2)。
在步驟S3中,根據(jù)混合模型記述104決定了初始狀態(tài)后,在步驟S4中,檢測是否產(chǎn)生了事件。因此,混合模型模擬執(zhí)行部件102調(diào)用事件處理部件111。事件處理部件111與事件控制程序203(第2程序ChangeEqn)對應(yīng),在其內(nèi)部調(diào)用GetEvent。如果產(chǎn)生了事件,則控制前進到步驟S5。在沒有產(chǎn)生事件的情況下,前進到步驟S6,連續(xù)系統(tǒng)模擬部件103執(zhí)行數(shù)值積分。
在步驟S5中,判斷產(chǎn)生的事件是否關(guān)聯(lián)于附加處理。在該事件不關(guān)聯(lián)于附加處理的情況下,在步驟S9中,判斷是否有必要伴隨于狀態(tài)遷移切換連續(xù)系統(tǒng)方程式。如果有必要進行方程式的切換,則在步驟S10中,通過設(shè)置有效無效標(biāo)志,進行有效的連續(xù)方程式的切換。因此,調(diào)用API函數(shù)XXX_ActivateEqn或XXX_DeActivateEqn。在執(zhí)行了步驟S9或步驟S10后,在步驟S6中,連續(xù)系統(tǒng)模擬部件103執(zhí)行數(shù)值積分。
在產(chǎn)生的事件關(guān)聯(lián)于附加處理的情況下,在步驟S11中執(zhí)行相應(yīng)的附加處理。作為具體的附加處理的例子,可以考慮在畫面上顯示處理的進度狀況,或?qū)⑴c模擬有關(guān)的數(shù)據(jù)輸出到文件中等處理。在通過步驟S11執(zhí)行了附加處理后,前進到步驟S6,連續(xù)系統(tǒng)模擬部件103執(zhí)行數(shù)值積分。
接著,在步驟S7中判斷結(jié)束條件。在此,判斷時間是否到達了規(guī)定的模擬結(jié)束時間。如果到達了模擬結(jié)束時間,則結(jié)束模擬執(zhí)行。到此為止,通過步驟S8將時間前進一個步長,并返回步驟S4,循環(huán)進行相同的處理步驟。
圖8展示了對圖5所示的混合模型記述執(zhí)行以上處理的情況下的時間序列的流程。t=0表示初始狀態(tài),在t=0產(chǎn)生事件Left而切換連續(xù)系統(tǒng)方程式,在t=100產(chǎn)生事件E而執(zhí)行附加處理。在相關(guān)的事件之間執(zhí)行連續(xù)系統(tǒng)的模擬。
混合模型模擬執(zhí)行部件102與機構(gòu)控制軟件模擬器協(xié)作,為了作為整體高效率地執(zhí)行模擬,而必須適當(dāng)并且有效地控制構(gòu)成該模擬的各步驟的執(zhí)行順序。
在已經(jīng)敘述了的現(xiàn)有技術(shù)中,由于混合模型記述語言(例如HCC語言)的特性(不知道最初執(zhí)行哪行),為了適當(dāng)并且高效率地控制上述執(zhí)行順序那樣地進行編程,而需要極高的技巧,是難度很高的工作。另外,不只是處理簡單變量的值,也有將從外部得到的信息代入變量中后,進行混合模型的處理的情況。在該情況下,必須準(zhǔn)備與外部的接口有關(guān)的特別的外部函數(shù)等,模型制作者必須記述它們。
相對于此,本發(fā)明的實施例由于構(gòu)成為依照圖7所示的一連串處理,構(gòu)筑混合模型模擬執(zhí)行部件102來執(zhí)行模擬,所以能夠避免上述那樣的問題。即,在混合模型中能夠用C語言等程序語言作為附加處理記述與機構(gòu)控制軟件模擬器等外部(處理)之間的通信相當(dāng)?shù)能浖糠?,將該功能自動地組合到了模擬的執(zhí)行中。
通過本發(fā)明的實施例,能夠靈活地將復(fù)雜的模擬步驟模型化和進行編程。具體地說,本實施例能夠?qū)⑴c外部的協(xié)作等有關(guān)的附加處理的記述包含在混合模型記述的一部分中。所以,能夠簡單地構(gòu)筑高度多樣化的模擬模型,因而能夠擴大模擬的適用范圍。
(實施例2)
本發(fā)明的實施例2涉及與機構(gòu)控制軟件或機構(gòu)控制軟件的模擬器的協(xié)作。圖9是展示本發(fā)明的實施例2有關(guān)的機構(gòu)模擬器的概要結(jié)構(gòu)的框圖。本實施例的機構(gòu)模擬與實施例1一樣,由混合模型前處理部件201、混合模型模擬執(zhí)行部件102構(gòu)成。該圖所示的控制信號106在機構(gòu)控制軟件或機構(gòu)控制軟件的模擬器與混合模型模擬執(zhí)行部件102的附加處理執(zhí)行部件205之間經(jīng)由端口被輸入輸出。
在本實施例中,將控制信號106的輸入輸出作為附加處理,能夠?qū)⒃撚浭霭诨旌夏P陀浭?104中。
圖10是展示實施例2中的混合模型記述2104的內(nèi)容的一個例子的圖。outport函數(shù)是針對外部的控制系統(tǒng)將數(shù)據(jù)寫入其任意一個端口ID的API函數(shù)。inport函數(shù)是從端口ID讀入數(shù)據(jù)的API函數(shù)。在此,外部的控制系統(tǒng)相當(dāng)于機構(gòu)控制軟件或機構(gòu)控制軟件的模擬器。
從第11行到第18行是用C語言記述的。SetDataToCtrl是將參數(shù)num、data設(shè)置到outport函數(shù)的函數(shù)。GetDataFromCtrl函數(shù)是將參數(shù)第num個ID設(shè)置到inport函數(shù),并將取得的數(shù)據(jù)作為返回值返回的函數(shù)。
在第23、26行,使setDataToCtrl函數(shù)和getDataFromCtrl函數(shù)分別與事件E1、E2關(guān)聯(lián)。在發(fā)生事件E1時,執(zhí)行setDataToCtrl函數(shù),在發(fā)生事件E2時,執(zhí)行g(shù)etDataFromCtrl函數(shù)。
在第24行,將數(shù)據(jù)x轉(zhuǎn)換為整數(shù)型,并設(shè)置到控制ID編號1。在第27行,強制地將從控制信號106取得的數(shù)據(jù)設(shè)置到數(shù)據(jù)x。
如上所述,在該混合模擬中,能夠?qū)⒃谀M中與外部的控制對象協(xié)作的記述簡便地記述到同一源程序上。當(dāng)然,對應(yīng)于控制對象的狀態(tài),模擬結(jié)果是不同的。
圖11是展示與本發(fā)明的實施例2有關(guān)的機構(gòu)模擬器的動作的流程圖。如果產(chǎn)生了事件,則確定其種類,對應(yīng)于事件的種類分配處理,這與實施例是一樣的。本發(fā)明除了混合模型中的狀態(tài)遷移外,還有通過事件統(tǒng)一控制與外部控制對象的接口有關(guān)的處理上與實施例1不同,由此,具有能夠簡潔地構(gòu)成與外部控制系統(tǒng)(例如機構(gòu)控制軟件等)的協(xié)作模擬相關(guān)的結(jié)構(gòu)的優(yōu)點。
首先,如圖11所示,混合模型記述2104被輸入到控制信息解析部件110,進行混合模型的語法解析(步驟S1)??刂菩畔⒔馕霾考?10分別生成模型方程式登記程序202、事件控制程序203、模擬執(zhí)行時附加處理程序204。通過基于模型方程式登記程序202的方程式語法解析部件112,將連續(xù)系統(tǒng)方程式的記述數(shù)據(jù)轉(zhuǎn)換為能夠執(zhí)行模擬的數(shù)據(jù)結(jié)構(gòu),同時登記到方程式數(shù)據(jù)存儲部件114中(步驟S2)。
以上,結(jié)束用于模擬執(zhí)行的前處理,從這里轉(zhuǎn)移到模擬執(zhí)行階段。
在步驟S4中,檢測是否產(chǎn)生了事件。如果產(chǎn)生了事件,則控制前進到步驟S5。在沒有產(chǎn)生事件的情況下,前進步驟S6。
在步驟S5中,判斷產(chǎn)生的事件的種類。如果事件的種類是與連續(xù)系統(tǒng)方程式有關(guān)的事件,則在步驟S9中,判斷是否有必要進行伴隨著狀態(tài)遷移的連續(xù)系統(tǒng)方程式的切換。如果有必要進行方程式的切換,則在步驟S10中,通過設(shè)置有效無效標(biāo)志,進行有效的連續(xù)系統(tǒng)方程式的切換。在不需要進行方程式的切換的情況下,控制前進到步驟S6。
如果產(chǎn)生的事件的種類是與數(shù)據(jù)發(fā)送有關(guān)的事件,則在步驟S1中向外部控制對象發(fā)送數(shù)據(jù)。將該發(fā)送數(shù)據(jù)設(shè)想為安裝在作為對象的機構(gòu)上的傳感器的狀態(tài)信息等。另外,如果產(chǎn)生的事件的種類是與數(shù)據(jù)接收有關(guān)的事件,則在步驟S12中,從外部控制對象接收數(shù)據(jù)。
在步驟S6中,連續(xù)系統(tǒng)模擬部件103執(zhí)行數(shù)值積分。
接著,在步驟S7中判斷結(jié)束條件。在此,判斷時間是否到達了規(guī)定的模擬結(jié)束時間。如果到達了模擬結(jié)束時間則結(jié)束模擬執(zhí)行。到此為止,通過步驟S8將時間前進一個步驟并返回步驟S4,循環(huán)進行相同的處理步驟。
并且,本發(fā)明并不只限定于上述實施例,在實施階段可以在不脫離其宗旨的范圍內(nèi)變形構(gòu)成要素并具體化。另外,可以通過適當(dāng)?shù)亟M合在上述實施例中揭示了的多個構(gòu)成要素,而形成各種發(fā)明。例如,可以從實施例中所示的全體構(gòu)成要素中刪除幾個構(gòu)成要素。進而,也可以適當(dāng)?shù)亟M合在不同的實施例中的構(gòu)成要素。
權(quán)利要求
1.一種混合模型解析方法,是解析用于沿著時間軸的機構(gòu)的動作的模擬的混合模型的混合模型解析方法,其特征在于包括
從上述混合模型的記述中分別抽出與連續(xù)系統(tǒng)方程式有關(guān)的記述、與狀態(tài)遷移有關(guān)的記述、與附加處理有關(guān)的記述的解析步驟;
生成在上述模擬的執(zhí)行中分別被調(diào)用的、基于與上述連續(xù)系統(tǒng)方程式有關(guān)的記述的第1程序、基于與上述狀態(tài)遷移有關(guān)的記述的第2程序、基于與上述附加處理有關(guān)的記述的第3程序的程序生成步驟。
2.根據(jù)權(quán)利要求1所述的混合模型解析方法,其特征在于
與上述附加處理有關(guān)的記述由表示附加處理的內(nèi)容的第1記述、伴隨著事件的發(fā)生控制該附加處理的執(zhí)行的第2記述構(gòu)成。
3.根據(jù)權(quán)利要求2所述的混合模型解析方法,其特征在于
上述程序生成步驟具備
根據(jù)上述第1記述生成上述第3程序的步驟;
將基于上述第2記述的程序追加到上述第2程序的步驟。
全文摘要
本發(fā)明提供一種適合于與控制機構(gòu)系統(tǒng)的控制軟件協(xié)作模擬的模擬方法和程序。揭示了根據(jù)混合模型記述進行沿著時間軸的機構(gòu)的動作的模擬的模擬器。解析混合模型記述,分別抽出與連續(xù)系統(tǒng)方程式有關(guān)的記述、與狀態(tài)遷移有關(guān)的記述、與附加處理有關(guān)的記述。生成在模擬的執(zhí)行中分別被調(diào)用的、基于與連續(xù)系統(tǒng)方程式有關(guān)的記述的第1程序、基于與狀態(tài)遷移有關(guān)的記述的第2程序、基于與附加處理有關(guān)的記述的第3程序。將這些第1、第2、第3程序與機構(gòu)模擬的執(zhí)行部件連接。
文檔編號G05B17/00GK1834979SQ200610073390
公開日2006年9月20日 申請日期2003年12月26日 優(yōu)先權(quán)日2002年12月26日
發(fā)明者吉田充伸, 近藤浩一 申請人:株式會社東芝