模拟方法和模拟程序的制作方法

文档序号:6421411阅读:170来源:国知局
专利名称:模拟方法和模拟程序的制作方法
技术领域
本发明涉及用来使用计算机进行机械等的动作模拟的方法和程序,特别地本发明使用混合模型。
背景技术
现在,在使用计算机进行机械和装置等的动作的模拟时,使用了被称为混合模型的方法。使用了混合模型的模拟被称为“混合模拟”。将进行这样的模拟动作的系统称为“混合系统”。
以模拟目的作成的混合模型是概念性地组合了通过使常微分方程式和代数方程式联合成立的联立方程式表现的连续系统模型、用来表现伴随着事件发生的状态迁移的状态迁移模型的模型。通过混合模型,能够表现根据来自外部的事件瞬时地切换用连续系统模型表现的状态的系统。
作为记述混合模型的语言,有由美国xerox公司(商标)的帕洛阿尔托研究所创制的被称为HCC(混合并行约束编程)的语言(参照下述的非专利文献1)。HCC正在发展中,现在在美国的NASA的埃莫斯研究所中正在进行研究。HCC是被称为约束处理编程(约束编程)的技术的一种,将表现连续系统模型的常微分方程式和代数方程式作为约束进行处理,可以用其原样的不同顺序记述这些方程式。向这样的约束记述附加控制状态迁移的记述,来完成HCC语言的混合模型。通过HCC,能够作为其原样的约束来编写方程式(编程),并能够记述复杂的模型。
如果这样使用混合模型的技术,则能够用常微分方程式模型地表现系统的特性,能够从初始状态依照时间的推移,模拟出表示了什么样的动作。
作为能够用微分方程式等表现的对象和能够将对象确实地模型化的混合模型的技术的应用例子,有通过软件模拟控制机械的电子管机械的机构模拟。通过相关的模拟,在不存在实际的机械机构的状况下,能够进行控制该机构的控制软件的编制、测试或调试等。
非专利文献1因特网<URLhttp//www2.parc.com/spl/projects/mbc/publications.html#cclanguages>
但是,能够处理混合模型的公知的程序语言并不必须是以应用于电子管机械的机构模拟为目的而开发的,因此有以下这样的问题点。
例如,美国xerox公司(商标)的HCC是编译型的编程语言,例如在控制软件从模拟器的外部作为控制信号接受发向对机构发送信号的执行元件的动作指令等的结构的情况下,在有必要个别地定义外部函数等的基础上,还有必要在编程中花费工夫。
具体地说,就是模型制作者有必要对外部函数的编程例如进行以下的工作。
(1)利用HCC语言固有的外部函数记述用API,用C语言等其他的语言记述外部函数的程序。
(2)通过C语言编译器编译记述了的外部函数的程序,作成例如能够在执行时连接的动态连接库。
(3)配置在HCC编译器能够确定其路径的目录上作成的库,使得HCC编译器能够调用它。
所以,模型制作者有必要学习HCC语言固有的外部函数记述用API,在模拟执行时还要花费另行编译外部函数的时间。
另外,有关模型记述中的外部函数的调用方法,在不与事件关联地管理外部函数的执行的HCC中,由于能够记述发生了状态迁移的瞬间进行调用的情况、进行数值积分时进行调用的情况这两者的情况,所以模型制作者难以掌握执行外部函数的定时,需要对模型制作有高度的熟练。

发明内容
本发明就是考虑了这样的情况而提出的,其目的是提供一种能够使用混合模型简便并且正确地对复杂的机构系统进行模型化,并适合于与控制该机构系统的控制软件进行协作模拟的模拟方法和程序。
另外,其目的还在于能够使记述与外部的协作等有关的处理的程序直接包含在混合模型记述的一部分中,扩大模拟的适用范围。
与本发明的一个观点有关的模拟方法是根据利用了混合模型的记述数据,沿着时间轴模拟作为对象的机构的动作的模拟方法,具有为了抽出包含在上述记述数据中的连续系统方程式的记述、伴随着状态迁移的该连续系统方程式的切换有关的记述、以及与用上述连续系统方程式表现的处理以外的处理有关的记述,而解析上述记述数据的解析步骤;根据在上述解析步骤中抽出的上述连续系统方程式的记述,生成第1程序的第1程序生成步骤;根据在上述解析步骤中抽出的与伴随着上述状态迁移的连续系统方程式的切换有关的记述,生成第2程序的第2程序生成步骤;根据在上述解析步骤中抽出的与用上述连续系统方程式表现的处理以外的处理有关的记述,生成第3程序的第3程序生成步骤;通过执行上述第1程序,将上述连续系统方程式转换为能够执行模拟的数据结构的转换步骤;通过执行上述第2程序,而对应于事件的发生切换上述连续系统方程式的有效/无效的切换步骤;执行模拟的模拟执行步骤,其中该模拟使用与在上述切换步骤中成为有效的上述连续系统方程式对应的上述数据结构,通过沿时间轴的数值积分求解该连续系统方程式,输出表示上述机构的动作的数据;通过执行上述第3程序,执行用上述连续系统方程式表现的处理以外的处理的处理执行步骤。
根据本发明,能够提供一种能够使用混合模型简便并且正确地对复杂的机构系统进行模型化,并适合于与控制该机构系统的控制软件进行协作模拟的模拟方法和程序。


图1是展示本发明的实施例1相关的机构模拟器的概要构成的框图。
图2是展示与用来说明混合模型记述的具体例子有关的汽缸装置的某状态的图。
图3是展示与用来说明混合模型记述的具体例子有关的汽缸装置的另一个状态的图。
图4是展示与用来说明混合模型记述的具体例子有关的汽缸装置的状态迁移的图。
图5是展示混合模型记述的内容的图。
图6是对1个连续系统方程式进行语法解析的结果而得到的内部数据表现的说明图。
图7是展示本发明的实施例1有关的机构模拟的处理步骤的流程图。
图8是机构模拟的时间序列的流程的说明图。
图9是展示本发明的实施例2有关的机构模拟器的概要构成的框图。
图10是展示本发明的实施例2的有关的混合模型记述的内容的图。
图11是展示机构模拟的处理步骤的流程图。
具体实施例方式
以下,参照附图,说明本发明的实施例。
(实施例1)图1是展示本发明的实施例1相关的机构模拟器的概要构成的框图。
本实施例由混合模型前处理部件201、混合模型模拟执行部件102构成。混合模型记述104是用混合模型记述语言等记述的源程序,被输入到本实施例的混合模型前处理部件201。从混合模型模拟执行部件102的输出是通过连续系统模拟部件103作为连续系统模拟的结果得到的变量值的运算结果及其时间履历。该输出被存储在变量值时间履历存储部件105中。
如图1所示,混合模型前处理部件201具备控制信息解析部件110。另外,混合模型模拟执行部件102具备事件处理部件111、方程式语法解析部件112、方程式数据存储部件114、连续系统方程式切换部件115、附加处理执行部件205以及连续系统模拟部件103。另外,本实施例能够使用一般的计算机来构成,作为其基本硬件结构,具备未图示的中央运算单元(CPU)、存储器、外部存储装置、通信接口(I/F)、显示装置、以及键盘、鼠标等输入装置。另外,还具备控制这些硬件的操作系统(OS)。另外,本发明的实施例有关的机构模拟器能够作为在这样的操作系统上工作的应用程序而安装。
在说明这样的本实施例相关的机构模拟器的构成及其处理步骤之前,在此,首先列举具体例子说明如何记述混合模型记述104。
图2和图3是展示与具体例子有关的作为混合模型的记述对象的机构的图。该机构是具备阀301、弹簧303和活塞302的简单构造的汽缸装置。
阀301对应于来自外部的指令(事件)而进行开闭动作。由此,以下,将如图2所示汽缸装置内的空气流动变更为向侧的事件称为“Left”,将如图3所示变更为左侧的事件称为“Right”。图2展示了向阀301付与Left事件的状态,对活塞302作用为纸面向右的力。表示该状态的运动方程式如汽缸装置的下部所示的那样,为“-F=mx’’”。与此相对,图3展示了向阀301付与Right事件的状态,空气流向改变,运动方程式变化为同图的“F=mx’’”。
图4作为由状态的迁移和与各个状态对应的运动方程式构成的状态迁移图,来表现这样的结构动作。混合模型表示用微分方程式和代数方程式或它们的联立方程式(连续系统方程式)来表现如该图4所示的状态迁移、各状态的记述。根据图4可知,状态有2个,在该2个状态之间存在状态迁移。
在本发明中,通过在根据图4的状态迁移图用HCC语言记述具体的混合模型的内容的同时,用规定的程序语言记述用连续系统方程式表现的处理以外的处理,例如与外部的协作等有关的处理(以下称为“附加处理”),来生成混合模型记述104。
图5是展示本发明相关的与混合模型记述相当的程序的一个例子的图。在图5中,假设(源)程序的逻辑行编号为L1~L23。L3、L4和L8相当于上述机械装置的初始状态和阀操作定时等的运转条件的记述,L5和L6相当于图4所示的状态迁移的表现记述。另外,L9~L23是与附加处理有关的记述,在此,记述“将现在的状态写入文件中”这样的内容的处理。另外,在module段中指定为“C”,相应的L9~L17为基于C语言的程序记述。
在HCC语言中,如图5的L5和L6所知道的那样,能够原样地在程序内记述运动方程式。在L5和L6中状态是不同的。另外,在各自的状态下,接在所谓的前提条件“always if”后面记述迁移到该状态的条件。另外,接在所谓的迁移条件“watching”后面记述取消该状态的条件,换一种说法就是从该状态迁移出去的条件。
并且,在HCC中,并不一定按照程序记述的顺序(例如图5中的逻辑行编号L1→L8的顺序)进行执行。在HCC中,搜索个别程序记述中的沿着执行模拟的时间轴成立的步骤来执行。即,逻辑行编号L1→L8的顺序与执行顺序无关。例如,在开始模拟的时刻,只有L3和L8有效。在此,由于通过L3产生了事件Right(ev1),所以作为L6的前提条件的Right变得有效,而L6中所记述的运动方程式eq2变得有效。即,从图4的左侧的状态开始执行模拟。
进而,如果时间变为50,则L4成为有效,产生事件Left(ev2),L6的迁移条件(“watch”以下即Left)成为有效,L6的运动方程式eq2成为无效。代替它,L5的前提条件成为有效,运动方程式eq1成为有效。
另外,以上那样的程序例子还记述了根据来自外部的事件而状态迁移的情况(L5、L6),但当然也可以根据内部的状况使状态迁移。例如,在图2中没有切换阀301的情况下,移动的活塞302与弹簧303接触,受到了来自该弹簧303的反作用力。即,与弹簧302的位置相关,存在即使在没有来自外部的事件的情况下也发生状态迁移的情况。在这样的情况下,例如可以根据x是否为正那样的内部变量的评价公式(不等式)的评价结果,来判断状态迁移的必要性。
一般,混合模型是组合了以下模型的模型通过使常微分方程式和代数方程式联立的联立方程式表现的连续系统模型、用来表现伴随着事件发生的状态迁移的状态迁移模型。通过混合模型,能够表现根据来自外部的事件等瞬时地切换用连续系统模型表现的状态的系统。
进而,如果时间成为100,则L19成为有效,产生事件E(ev5),同时调用cPrint的函数和参数x的值(L18~L23)。该记述表示执行将该时刻的状态保存到文件中的附加处理,其具体的处理内容在L9~L17中通过例如C语言被记述。
行L18~L23是控制附加处理(L11~L16)的混合模型记述104的内容。process(E){cPrint(x)}的记述是伴随着事件E的发生执行附加处理即cPrint(x)那样的指令语法。在此,可以使用与连续方程式的切换有关的Left事件、Right事件相同的事件,来记述与附加处理的执行控制有关的事件。通过这样的本实施例,(1)能够在与相当于具有连续系统方程式的切换的混合模型的记述为同一个的源程序上,记述附加处理的内容;(2)能够混合记述调用附加处理等的控制。所以,能够记述容易理解的简洁的模拟模型。
接着,说明混合模型前处理部件201中的处理。混合模型记述104首先在混合模型前处理部件201的控制信息解析部件110中被处理,生成模型方程式登记程序202、事件控制程序203以及模拟执行时附加处理程序204。
作为构成混合模型模拟执行部件102的软件模块,作为API提供了用来进行模型方程式的登记的函数和用来切换连续系统方程式的函数。模型方程式登记程序202和事件控制程序203是按照输入的混合模型记述104,适当地组合了调用对应的上述API函数的记述的程序。如果从该观点考虑,则混合模型前处理部件201可以被考虑为是一种编译器,它将输入作为混合模型记述104,将输出作为包含例如C语言的API函数调用的记述的C程序(源程序)。这样的模型方程式登记程序202和事件控制程序203进而通过C语言等的编译器被编译,生成例如在执行时能够动态连接的库。在混合模型模拟执行部件102中,在模拟的执行时连接所生成的动态连接库,完成忠实地再现输入混合模型的模拟程序,而变得能够执行。另外,生成的这些库并不一定必须是动态连接库,也可以是静态库。
可以考虑各种各样的构成混合模型模拟执行部件102的应用程序接口的具体的软件模块的式样等,但在此,为了说明,而最低限度地定义了以下3个API函数。另外,假设程序语言是C语言。
int XXX_AddEqnData(char*eqn,int*err)int XXX_ActivateEqn(int eqnid)int XXX_DeActivateEqn(int eqnid)第1个API函数XXX_AddEqnData将表示一个连续系统方程式的字符串的指针指定为参数。XXX_AddEqnData解析该连续方程式的语法,将连续方程式的记述转换为能够执行模拟的数据结构(内部数据表现),并进行将相关的内部数据表现登记到方程式数据存储部件114中的处理。另外,向此处的连续系统方程式分配了唯一的ID编号。
例如,如果假设付与“ab/cos(a-(c+b))-3c”这样的公式,则作为上述内部数据表现生成图6那样的树结构。在该树结构中,例如,参考数字61表示线性多项式的父节点(节),62表示乘运算的节点,63表示除运算的节点,64表示外部函数(四则运算)以外的节点,65表示构成线性多项式的各项的节点。在本例子中,相当于树结构的叶子的节点都是变量(a、b、c),向它们加上实数的系数而成为线性公式。线性公式成为cos等外部函数的参数,成为乘运算和除运算的对象。在变量中,另行设置了值是否确定的标志,另外,根据这样的树结构的数据,保存该变量的现在的值。如果树结构的所有叶子的值(即变量的值)都是确定的,则能够计算公式的值。在方程式数据存储部件114中,为了能够高速地进行公式的值的计算等,而预先组合内部的数据结构构成树结构。在上述处理中,在发生了任何的错误的情况下,则向err设置错误码。在处理正常结束了的情况下,将登记的方程式的ID编号设置为返回值。
第2个API函数XXX_ActivateEqn将对应于在参数中指定的方程式的ID编号的方程式设置为有效。在已经指定了成为有效的方程式的情况下,则什么也不做。返回值是错误码。
第3个API函数XXX_DeActivateEqn与XXX_ActivateEqn相反,将对应于在参数中指定的方程式的ID编号的方程式设置为无效。在已经指定了成为无效的方程式的情况下,则什么也不做。
控制信息解析部件110首先生成对必要的方程式依次调用XXX_AddEqnData的函数(InitEqnData)。它相当于模型方程式登记程序202(第1程序)。
另外,控制信息解析部件110在执行模拟时,还生成时间每前进Δt就进行条件的检查和方程式的变更(更换)的函数(ChangeEqn)。它相当于事件控制程序203(第2程序)。
在此,ChangeEqn函数通过GetEvent函数,检测Left事件、Right事件和E事件的产生。在执行模拟时的每个时间步长由事件处理部件111调用ChangeEqn函数。
在混合模型模拟执行部件102中,如图1所知道的那样,将事件处理部件111和连续系统模拟部件103分离。所以,在事件控制程序203中不包含依存于时间积分等的时间的模块,与它对应的事件处理部件111只进行连续系统方程式的有效/无效的标志的切换。
通过采用这样的模拟结构,能够通过同一处理(if(GetEvent(事件){处理})管理与外部机器的接口有关的事件、与混合记述有关的事件。
另外,混合模型前处理部件201由于作为与附加处理相同的语言而输出混合模拟模型,所以能够容易地生成混合模拟执行程序。
通过上述那样,容易地使混合模拟与外部机器进行了协作。
进而,控制信息解析部件110从混合模型记述104中抽出附加处理的内容记述。相应的记述相当于模拟执行部件附加处理程序204(第3程序)。模拟执行部件附加处理程序204在混合模型记述104中,同时相当于通过C语言等记述的程序的源程序。例如,在图5所示的混合模型记述104中,参照module段,抽出用C语言记述的部分。抽出的模拟执行部件附加处理程序204由C语言编译器进行编译,生成能够动态连接的库。附加处理执行部件205担负着调用该可动态连接的库的接口的作用。并且,生成的库并不必须一定是动态连接库,也可以是静态库。另外,记述附加处理的内容的语言并不限定于C语言。
通过上述那样的混合模型前处理部件201的处理,例如,对图5所示的混合模型记述自动生成了以下这样的C语言的源程序。
<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;amp;err);   if(err!=0) return err;   eqn2id=XXX_AddEqnData(eqn2,&amp;amp;err);   if(err!=0) return err;  }  int ChangeEqn()  {   int err;   BOOL GetEvent(char*eventname);   if(GetEvent(“Left”)){  err=XXX_ActivateEqn(eqn1id);  if(err!=0) return err;  XXX_DeActivateEqn(eqn2id);  If(err!=0) return err;   }  if(GetEvent(“Right”)){   XXX_ActivateEqn(eqn2id);&lt;!-- SIPO &lt;DP n="10"&gt; --&gt;&lt;dp n="d10"/&gt;  if(err!=0) return err;  XXX_DeActivateEqn(eqn1id);  If(err!=0) return err;  }   if(GetEvent(“E”)){  cPrint(x);   }   return 0;  }  int cPrint(int num)  {   FILE*fp=fopen(“log.txt”,“a”);   fprintf(fp,“%d”,num);   fclose(fp);  }</pre>并且,GetEvent是检查是否产生了在参数中指定的名字(eventname)的事件的函数。
以上的程序如上所述,由C语言编译器进行编译,进而被调整为动态连接库的形式,实时地被连接。
并且,在本实施例中,说明了作为程序语言使用了C语言的例子,但本发明并不只限于此,也可以使用例如C++语言、SpecC语言等其他程序语言。
接着,说明模拟的执行。在模拟执行时,启动混合模型模拟执行部件102,通过计算连续系统方程式的值来进行模拟执行。这时,连续系统方程式切换部件115在事件处理部件111的内部被调用,利用有效/无效的标志执行连续系统方程式的切换。事件处理部件111对应于在前处理中生成的事件控制程序203(第2程序ChangeEqn)。在图2的状态下,图5的运动方程式eqn1是有效的,运动方程式eqn2成为无效。在此,在产生了Left事件的图3的状况下,设置标志,使图5的运动方程式eqn1有效,使运动方程式eqn2无效。作为存储在方程式数据存储部件114中的方程式各自的属性数据来管理这些有效/无效的标志。
连续系统模拟部件103参照方程式数据存储部件114,将以树结构的形式存储在该存储部件114中的连续系统方程式的内部数据表现作为运算对象,对每个时间步长执行数值积分。模拟就是针对由常微分方程式和代数多项式的联立构成的非线性联立方程式的初始值问题。因此,例如,付与图2所示的初始状态。具体地说,例如使用一般经常使用的龙格-库塔算法来计算解的值。
从机构模拟器进行必要数据的输出,进而,返回连续系统方程式切换部件115的处理,通过循环进行上述处理,来执行必要时间的模拟。模拟结果被保存在变量值时间履历存储部件105中,被用于模拟结束后的分析等。
图7是展示以上说明了的本发明的实施例1相关的机构模拟中的一连串处理步骤的流程图。该处理步骤可以大致区分为混合模型前处理的阶段、模拟执行的阶段。
首先,向控制信息解析部件110输入混合模型记述104,进行混合模型的语法解析(步骤S1)。控制信息解析部件110如图1所示,分别生成模型方程式登记程序202、事件控制程序203、模拟执行时附加处理程序204。如果用于模拟执行的前处理结束了,则从此转移到模拟执行阶段。
首先,从混合模型模拟执行部件102调用方程式语法解析部件112。方程式语法解析部件112与模型方程式登记程序202(第1程序InitEqnData)对应,在其内部调用API函数XXX_AddEqnData。由此,将连续系统方程式的记述数据转换为能够执行模拟的数据结构。将转换了的数据登记到方程式数据存储部件114中(步骤S2)。
在步骤S3中,根据混合模型记述104决定了初始状态后,在步骤S4中,检测是否产生了事件。因此,混合模型模拟执行部件102调用事件处理部件111。事件处理部件111与事件控制程序203(第2程序ChangeEqn)对应,在其内部调用GetEvent。如果产生了事件,则控制前进到步骤S5。在没有产生事件的情况下,前进到步骤S6,连续系统模拟部件103执行数值积分。
在步骤S5中,判断产生的事件是否关联于附加处理。在该事件不关联于附加处理的情况下,在步骤S9中,判断是否有必要伴随于状态迁移切换连续系统方程式。如果有必要进行方程式的切换,则在步骤S10中,通过设置有效无效标志,进行有效的连续方程式的切换。因此,调用API函数XXX_ActivateEqn或XXX_DeActivateEqn。在执行了步骤S9或步骤S10后,在步骤S6中,连续系统模拟部件103执行数值积分。
在产生的事件关联于附加处理的情况下,在步骤S11中执行相应的附加处理。作为具体的附加处理的例子,可以考虑在画面上显示处理的进度状况,或将与模拟有关的数据输出到文件中等处理。在通过步骤S11执行了附加处理后,前进到步骤S6,连续系统模拟部件103执行数值积分。
接着,在步骤S7中判断结束条件。在此,判断时间是否到达了规定的模拟结束时间。如果到达了模拟结束时间,则结束模拟执行。到此为止,通过步骤S8将时间前进一个步长,并返回步骤S4,循环进行相同的处理步骤。
图8展示了对图5所示的混合模型记述执行以上处理的情况下的时间序列的流程。t=0表示初始状态,在t=0产生事件Left而切换连续系统方程式,在t=100产生事件E而执行附加处理。在相关的事件之间执行连续系统的模拟。
混合模型模拟执行部件102与机构控制软件模拟器协作,为了作为整体高效率地执行模拟,而必须适当并且有效地控制构成该模拟的各步骤的执行顺序。
在已经叙述了的现有技术中,由于混合模型记述语言(例如HCC语言)的特性(不知道最初执行哪行),为了适当并且高效率地控制上述执行顺序那样地进行编程,而需要极高的技巧,是难度很高的工作。另外,不只是处理简单变量的值,也有将从外部得到的信息代入变量中后,进行混合模型的处理的情况。在该情况下,必须准备与外部的接口有关的特别的外部函数等,模型制作者必须记述它们。
相对于此,本发明的实施例由于构成为依照图7所示的一连串处理,构筑混合模型模拟执行部件102来执行模拟,所以能够避免上述那样的问题。即,在混合模型中能够用C语言等程序语言作为附加处理记述与机构控制软件模拟器等外部(处理)之间的通信相当的软件部分,将该功能自动地组合到了模拟的执行中。
通过本发明的实施例,能够灵活地将复杂的模拟步骤模型化和进行编程。具体地说,本实施例能够将与外部的协作等有关的附加处理的记述包含在混合模型记述的一部分中。所以,能够简单地构筑高度多样化的模拟模型,因而能够扩大模拟的适用范围。
(实施例2)本发明的实施例2涉及与机构控制软件或机构控制软件的模拟器的协作。图9是展示本发明的实施例2有关的机构模拟器的概要结构的框图。本实施例的机构模拟与实施例1一样,由混合模型前处理部件201、混合模型模拟执行部件102构成。该图所示的控制信号106在机构控制软件或机构控制软件的模拟器与混合模型模拟执行部件102的附加处理执行部件205之间经由端口被输入输出。
在本实施例中,将控制信号106的输入输出作为附加处理,能够将该记述包含在混合模型记述2104中。
图10是展示实施例2中的混合模型记述2104的内容的一个例子的图。outport函数是针对外部的控制系统将数据写入其任意一个端口ID的API函数。inport函数是从端口ID读入数据的API函数。在此,外部的控制系统相当于机构控制软件或机构控制软件的模拟器。
从第11行到第18行是用C语言记述的。SetDataToCtrl是将参数num、data设置到outport函数的函数。GetDataFromCtrl函数是将参数第num个ID设置到inport函数,并将取得的数据作为返回值返回的函数。
在第23、26行,使setDataToCtrl函数和getDataFromCtrl函数分别与事件E1、E2关联。在发生事件E1时,执行setDataToCtrl函数,在发生事件E2时,执行getDataFromCtrl函数。
在第24行,将数据x转换为整数型,并设置到控制ID编号1。在第27行,强制地将从控制信号106取得的数据设置到数据x。
如上所述,在该混合模拟中,能够将在模拟中与外部的控制对象协作的记述简便地记述到同一源程序上。当然,对应于控制对象的状态,模拟结果是不同的。
图11是展示与本发明的实施例2有关的机构模拟器的动作的流程图。如果产生了事件,则确定其种类,对应于事件的种类分配处理,这与实施例是一样的。本发明除了混合模型中的状态迁移外,还有通过事件统一控制与外部控制对象的接口有关的处理上与实施例1不同,由此,具有能够简洁地构成与外部控制系统(例如机构控制软件等)的协作模拟相关的结构的优点。
首先,如图11所示,混合模型记述2104被输入到控制信息解析部件110,进行混合模型的语法解析(步骤S1)。控制信息解析部件110分别生成模型方程式登记程序202、事件控制程序203、模拟执行时附加处理程序204。通过基于模型方程式登记程序202的方程式语法解析部件112,将连续系统方程式的记述数据转换为能够执行模拟的数据结构,同时登记到方程式数据存储部件114中(步骤S2)。
以上,结束用于模拟执行的前处理,从这里转移到模拟执行阶段。
在步骤S4中,检测是否产生了事件。如果产生了事件,则控制前进到步骤S5。在没有产生事件的情况下,前进步骤S6。
在步骤S5中,判断产生的事件的种类。如果事件的种类是与连续系统方程式有关的事件,则在步骤S9中,判断是否有必要进行伴随着状态迁移的连续系统方程式的切换。如果有必要进行方程式的切换,则在步骤S10中,通过设置有效无效标志,进行有效的连续系统方程式的切换。在不需要进行方程式的切换的情况下,控制前进到步骤S6。
如果产生的事件的种类是与数据发送有关的事件,则在步骤S1中向外部控制对象发送数据。将该发送数据设想为安装在作为对象的机构上的传感器的状态信息等。另外,如果产生的事件的种类是与数据接收有关的事件,则在步骤S12中,从外部控制对象接收数据。
在步骤S6中,连续系统模拟部件103执行数值积分。
接着,在步骤S7中判断结束条件。在此,判断时间是否到达了规定的模拟结束时间。如果到达了模拟结束时间则结束模拟执行。到此为止,通过步骤S8将时间前进一个步骤并返回步骤S4,循环进行相同的处理步骤。
并且,本发明并不只限定于上述实施例,在实施阶段可以在不脱离其宗旨的范围内变形构成要素并具体化。另外,可以通过适当地组合在上述实施例中揭示了的多个构成要素,而形成各种发明。例如,可以从实施例中所示的全体构成要素中删除几个构成要素。进而,也可以适当地组合在不同的实施例中的构成要素。
权利要求
1.一种模拟方法,是根据利用了混合模型的记述数据,沿着时间轴模拟作为对象的机构的动作的模拟方法,其特征在于包括为了抽出包含在上述记述数据中的连续系统方程式的记述、与伴随着状态迁移的该连续系统方程式的切换有关的记述、与用上述连续系统方程式表现的处理以外的处理有关的记述,而解析上述记述数据的解析步骤;根据在上述解析步骤中抽出的上述连续系统方程式的记述,生成第1程序的第1程序生成步骤;根据在上述解析步骤中抽出的与伴随着上述状态迁移的连续系统方程式的切换有关的记述,生成第2程序的第2程序生成步骤;根据在上述解析步骤中抽出的与用上述连续系统方程式表现的处理以外的处理有关的记述,生成第3程序的第3程序生成步骤;通过执行上述第1程序,将上述连续系统方程式转换为能够执行模拟的数据结构的转换步骤;通过执行上述第2程序,对应于事件的发生切换上述连续系统方程式的有效/无效的切换步骤;使用与在上述切换步骤中被设置为有效的上述连续系统方程式对应的上述数据结构,通过沿着时间轴的数值积分求解该连续系统方程式,输出表示上述机构的动作的数据,从而执行模拟的模拟执行步骤;通过执行上述第3程序,执行用上述连续系统方程式表现的处理以外的处理的处理执行步骤。
2.根据权利要求1所述的模拟方法,其特征在于具备检测事件的发生的步骤;如果检测到上述事件的发生,则判断该事件是否是与上述第3程序关联的事件的步骤;如果判断出上述事件是与上述第3程序关联的事件,则为了执行而调用该第3程序的步骤。
3.根据权利要求2所述的模拟方法,其特征在于上述第3程序包含以下处理在与包含控制上述机构的机构控制软件的外部之间经由输入输出端口,输入输出控制信号。
4.根据权利要求1所述的模拟方法,其特征在于上述事件包含上述机构的内部变量的评价结果。
5.一种模拟程序,是使计算机执行根据利用了混合模型的记述数据,沿着时间轴模拟作为对象的机构的动作的步骤的模拟程序,其特征在于使计算机执行以下步骤为了抽出包含在上述记述数据中的连续系统方程式的记述、与伴随着状态迁移的该连续系统方程式的切换有关的记述、与用上述连续系统方程式表现的处理以外的处理有关的记述,而解析上述记述数据的解析步骤;根据在上述解析步骤中抽出的上述连续系统方程式的记述,生成第1程序的第1程序生成步骤;根据在上述解析步骤中抽出的与伴随着上述状态迁移的连续系统方程式的切换有关的记述,生成第2程序的第2程序生成步骤;根据在上述解析步骤中抽出的与用上述连续系统方程式表现的处理以外的处理有关的记述,生成第3程序的第3程序生成步骤;通过执行上述第1程序,将上述连续系统方程式转换为能够执行模拟的数据结构的转换步骤;通过执行上述第2程序,对应于事件的发生切换上述连续系统方程式的有效/无效的切换步骤;使用与在上述切换步骤中被设置为有效的上述连续系统方程式对应的上述数据结构,通过沿着时间轴的数值积分求解该连续系统方程式,输出表示上述机构的动作的数据,从而执行模拟的模拟执行步骤;通过执行上述第3程序,执行用上述连续系统方程式表现的处理以外的处理的处理执行步骤。
6.根据权利要求5所述的模拟程序,其特征在于具备检测事件的发生的步骤;如果检测到上述事件的发生,则判断该事件是否是与上述第3程序关联的事件的步骤;如果判断出上述事件是与上述第3程序关联的事件,则为了执行而调用该第3程序的步骤。
7.根据权利要求6所述的模拟程序,其特征在于上述第3程序包含以下步骤在与包含控制上述机构的机构控制软件的外部之间经由输入输出端口,输入输出控制信号。
8.根据权利要求5所述的模拟程序,其特征在于上述事件包含上述机构的内部变量的评价结果。
9.一种混合模型解析方法,是解析用于沿着时间轴的机构的动作的模拟的混合模型的混合模型解析方法,其特征在于包括从上述混合模型的记述中分别抽出与连续系统方程式有关的记述、与状态迁移有关的记述、与附加处理有关的记述的解析步骤;生成在上述模拟的执行中分别被调用的、基于与上述连续系统方程式有关的记述的第1程序、基于与上述状态迁移有关的记述的第2程序、基于与上述附加处理有关的记述的第3程序的程序生成步骤。
10.根据权利要求9所述的混合模型解析方法,其特征在于与上述附加处理有关的记述由表示附加处理的内容的第1记述、伴随着事件的发生控制该附加处理的执行的第2记述构成。
11.根据权利要求10所述的混合模型解析方法,其特征在于上述程序生成步骤具备根据上述第1记述生成上述第3程序的步骤;将基于上述第2记述的程序追加到上述第2程序的步骤。
12.一种混合模型解析程序,是解析用于沿着时间轴的机构的动作的模拟的混合模型的程序,其特征在于使计算机执行以下步骤从上述混合模型的记述中分别抽出与连续系统方程式有关的记述、与状态迁移有关的记述、与附加处理有关的记述的解析步骤;生成在上述模拟的执行中分别被调用的、基于与上述连续系统方程式有关的记述的第1程序、基于与上述状态迁移有关的记述的第2程序、基于与上述附加处理有关的记述的第3程序的程序生成步骤。
13.根据权利要求12所述的混合模型解析程序,其特征在于与上述附加处理有关的记述由表示附加处理的内容的第1记述、伴随着事件的发生控制该附加处理的执行的第2记述构成。
14.根据权利要求13所述的混合模型解析程序,其特征在于上述程序生成步骤具备根据上述第1记述生成上述第3程序的步骤;将基于上述第2记述的程序追加到上述第2程序的步骤。
15.一种模拟方法,是使用由通过连续系统方程式表现的连续系统模型、表示伴随着事件的发生的状态迁移的状态迁移模型、附加处理构成的混合模型,进行沿着时间轴的机构的动作的模拟的模拟方法,其特征在于包括将上述连续系统模型存储到存储装置中的步骤;判断是否发生了记述在上述状态迁移模型中的任意的事件的事件处理步骤;判断上述事件是否与上述附加处理关联的判断步骤;如果上述事件与上述附加处理关联,则执行与该事件关联的附加处理的执行步骤;在存储在上述存储装置中的连续系统模型中,基于有效的连续系统方程式执行连续系统模拟的模拟步骤。
16.根据权利要求15所述的模拟方法,其特征在于上述附加处理包含以下处理在与包含控制上述机构的机构控制软件的外部之间经由输入输出端口,输入输出控制信号。
17.根据权利要求15所述的模拟方法,其特征在于还包括伴随着基于上述状态迁移模型的状态迁移,切换上述有效的连续系统方程式的步骤。
18.一种模拟程序,是具有由通过连续系统方程式表现的连续系统模型、表示伴随着事件的发生的状态迁移的状态迁移模型、附加处理构成的混合模型,根据该混合模型进行沿着时间轴的机构的动作的模拟的模拟程序,其特征在于使计算机执行以下步骤存储上述连续系统模型的存储步骤;判断是否发生了记述在上述状态迁移模型中的任意的事件的事件处理步骤;判断上述事件是否与上述附加处理关联的判断步骤;如果上述事件与上述附加处理关联,则执行与该事件关联的附加处理的执行步骤;在通过上述存储步骤存储的连续系统方程模型中,基于有效的连续系统方程式执行连续系统模拟的模拟步骤。
19.根据权利要求18所述的模拟程序,其特征在于上述附加处理包含以下处理在与包含控制上述机构的机构控制软件的外部之间经由输入输出端口,输入输出控制信号。
20.根据权利要求18所述的模拟程序,其特征在于还包括伴随着基于上述状态迁移模型的状态迁移,切换上述有效的连续系统方程式的步骤。
全文摘要
本发明提供一种适合于与控制机构系统的控制软件协作模拟的模拟方法和程序。揭示了根据混合模型记述进行沿着时间轴的机构的动作的模拟的模拟器。解析混合模型记述,分别抽出与连续系统方程式有关的记述、与状态迁移有关的记述、与附加处理有关的记述。生成在模拟的执行中分别被调用的、基于与连续系统方程式有关的记述的第1程序、基于与状态迁移有关的记述的第2程序、基于与附加处理有关的记述的第3程序。将这些第1、第2、第3程序与机构模拟的执行部件连接。
文档编号G06F17/50GK1512433SQ20031012433
公开日2004年7月14日 申请日期2003年12月26日 优先权日2002年12月26日
发明者吉田充伸, 近藤浩一, 一 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1