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