CN102622262B - 基于modelica建模语言的分布式实时交互仿真系统 - Google Patents
基于modelica建模语言的分布式实时交互仿真系统 Download PDFInfo
- Publication number
- CN102622262B CN102622262B CN201210006613.7A CN201210006613A CN102622262B CN 102622262 B CN102622262 B CN 102622262B CN 201210006613 A CN201210006613 A CN 201210006613A CN 102622262 B CN102622262 B CN 102622262B
- Authority
- CN
- China
- Prior art keywords
- task
- module
- emulator
- server
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于modelica建模语言的分布式实时交互仿真系统,是结合Modelica建模语言支持多领域仿真建模的特点,并根据Modelica建模语言在实时交互仿真方面的薄弱环节,结合现有HLA仿真体系结构而提出。该系统通过中心服务器将异构的多台计算机通过具有统一的通信标准、规范和协议的高速网络互联起来,以构成一个一体化仿真环境。系统借助客户端、中心服务器、子计算服务器、仿真器调度接口和仿真器五个功能模块来实现。多个客户端和中心服务器通过TCP协议进行通信。系统的核心是提供了统一的仿真器调度接口。本发明使得开发新的仿真实验更容易,降低了开发难度,提高了系统的可扩展性。
Description
技术领域
本发明属于计算机运用领域,具体涉及一种基于modelica建模语言的分布式实时交互仿真系统,该系统特别适合于搭建多学科虚拟实验教学平台。
背景技术
分布式交互仿真是指采用协调一致的结构、标准、协议和数据库,通过局域网或者广域网,将分散在各地的仿真设备互联,形成可参与的综合仿真环境。分布式交互仿真技术从产生到DIS2.X、IEEE1278.X系列协议的制定,进而发展到今天的HLA(高级仿真体系架构),都企图解决建模与仿真领域存在的问题:绝大多数仿真器的应用实现较为独立,仿真器的重用性差;开发、维护和使用费时而且成本高;可验证性、有效性和置信度较差。
Modelica的语言采用类似MatLab语法,模型是通过各专业领域熟悉的数学方程表达出来,从而可以方便的描述方程,而不需要特殊手动计算中间变量,使模式的开发者从繁重的语言学习开发中解脱出来。Modelica用类似面向对象的编程方式来描述对象,并在运算和表达式中支持条件判断语句,支持离散事件的仿真与计算。在Modelica的语言设计中特别强调事务的同步与衍发,在连续事件中能够启动离散事件。Modelica提供了丰富的语法功能,例如可以声明不同类型的变量,不同的事件触发过程,以满足各类复杂系统仿真的要求。目前,随着Modelica语言的发展,其支持多领域仿真建模的特征也越来越突出。然而,支持Modelica建模语言的众多求解器都没能很好的实现实时交互式仿真。
随着计算机多媒体技术和网络通信技术的迅速发展,信息时代的学习、生活方式都发生了重大变革。作为培养和提高学生动手实践能力、观察能力、分析问题和解决问题能力等方面有着先天优势的实验教学是高校教育改革的关键问题之一。目前,我国传统实验教学环节不足、实验资源不均衡,学生创新能力不足,虚拟实验教学环境研究与建设有利于解决当前实验教学中存在的问题。然后虚拟实验教学环境存在学科多样性的特点,现有仿真系统均难以满足所有实验教学的需要。因而迫切需要构建一种支持多领域仿真建模,易于扩展和维护的虚拟实验教学平台。
发明内容
本发明的目的在于提供一种基于modelica建模语言的分布式实时交互仿真系统,该系统在仿真计算规模较小的情况下,可支持多人实时交互仿真,因而特别适合于搭建多学科虚拟实验教学平台。
为了实现上述目的,本发明提供了下述技术方案:一种基于modelica建模语言的分布式实时交互仿真系统,其特征在于,该系统包括中心服务器,每个中心服务器上连接有多个客户端和多个子计算服务器,每个子计算服务器通过仿真器调度接口连接有多个仿真器;
客户端接收用户提交的仿真任务请求,向中心服务器请求全局唯一的标示仿真任务的任务号;客户端通过与中心服务器建立的TCP连接发送用于交互的任务请求命令和接收回复命令,客户端处理回复命令并通知用户;
中心服务器监听来自客户端的TCP连接请求,解析来自不同客户端的任务请求命令后根据任务号和负载均衡策略分配对应于子计算服务器的IP地址给仿真任务;中心服务器与任务对应的子计算服务器建立TCP连接,转发包含仿真任务的任务请求命令,并接收来自子计算服务器的回复命令,将其转发给相应的客户端;
子计算服务器监听来自中心服务器的TCP连接请求,负责解析来自中心服务器的任务请求命令,并在本地根据任务的类型,创建不同的仿真器调度接口进程;子计算服务器还负责维护仿真器调度接口的工作目录和通信端口;子计算服务器主动与仿真器调度接口进程建立TCP连接,并处理任务请求命令后将计算请求命令转发给仿真器调度接口进程;子计算服务器接收来自仿真器调度接口的结果命令,并继续将其转发给中心服务器;
中心服务器和子计算服务器配合完成集群的分布式任务调度;
仿真器调度接口获得子计算服务器分配的启动参数并监听来自子计算服务器的TCP连接请求,为子计算服务器提供统一的调用接口;仿真器调度接口与仿真器配合,通过TCP对外提供计算服务,仿真器调度接口解析计算请求命令并调用仿真器进行计算,并将计算结果整合后以结果命令的形式通过TCP返还给子计算服务器。
本发明结合Modelica建模语言支持多领域仿真建模的特点,并根据Modelica建模语言在实时交互仿真方面的薄弱环节,结合现有HLA仿真体系结构而提出。该系统通过中心服务器将异构的多台计算机通过具有统一的通信标准、规范和协议的高速网络互联起来,以构成一个一体化仿真环境。系统借助客户端、中心服务器、子计算服务器、仿真器调度接口和仿真器五个功能模块来实现。多个客户端和中心服务器通过TCP协议进行通信。系统的核心是提供了统一的仿真器调度接口。
本发明的有益效果是,运用基于modelica建模语言的分布式实时交互仿真系统,可以实现多用户的实时交互仿真。系统提供了统一的仿真器调度接口,使得开发新的仿真实验更容易,降低了开发难度,提高了系统的可扩展性。
根据上述技术方案,本发明是一种基于modelica建模语言的分布式实时交互仿真系统,该系统通过客户端发送仿真请求命令到中心服务器,中心服务器根据任务类型以及当前系统负载,将任务分发到合适的子服务器,子服务根据任务类型调用相应的仿真器调度接口,仿真器调度接口调用仿真器完成仿真任务并将结果以数据流的形式返回客户端。
附图说明
图1为本发明的整体结构图。
图2为本发明的仿真器调度接口的功能结构框图。
图3为本发明中客户端的功能结构框图。
图4为本发明中客户端的工作流程图。
图5为本发明中心服务器的功能结构框图。
图6为本发明中心服务器的工作流程图。
图7为本发明子计算服务器的功能结构框图。
图8为本发明子计算服务器的工作流程图。
图9为本发明仿真器调度接口的工作流程图。
图10为本发明仿真器的功能结构图。
图11为本发明仿真器的工作流程图。
具体实施方式
如图1所示,系统借助客户端1、中心服务器2、子计算服务器3、仿真器调度接口4和仿真器5五个功能模块来实现。
在介绍各模块的功能和交互过程之前,首先对系统的仿真交互协议做详细说明。系统包含三种交互命令:任务请求命令、计算请求命令和回复命令。任务请求命令、计算请求命令和回复命令的集合构成了本系统的仿真交互协议。
客户端1向中心服务器2发送的命令和中心服务器2向子计算服务器3转发的命令都是任务请求命令;子计算服务器3向仿真器调度接口4发送的命令为计算请求命令;仿真器调度接口4向子计算服务器3回复的命令、子计算服务器3向中心服务器2回复的命令和中心服务器2向客户端1回复的命令都是回复命令。
每条计算请求命令均由一串字符组合而成,字符串的结构为:长度+命令类型+命令内容+命令编号。其中长度由8个字符表示,命令类型由4个字符表示,命令内容根据具体仿真任务和命令类型确定,字符数不限(最少为空),命令编号由1个字符表示。长度的十进制值是指字符串“长度+命令类型+命令内容+命令编号”的总字节长度。长度的字符串表示不够八字符则在前面补字符’0’,所有字符串的编码为UTF-8。命令类型指示命令所表示的意义,具体信息请参见表1、计算请求命令的内容。命令内容包含了对求解任务的规范化描述(比如modelica的源文件mo)或者命令执行时所需的参数,具体内容由仿真器5决定。命令编号从0开始计数,以10为模,命令编号用于和回复命令的编号对应,保证请求与应答的对应关系。
任务请求命令用于平台的内部通信,和计算请求命令不同的是它增加了任务管理前缀,而且命令类型编号以字母a开头,每条任务请求命令均由一串字符组合而成,字符串的结构为:任务号+实验类型编号+长度+命令类型+命令内容+命令编号。其中任务号由28个字符表示,实验类型由4个字符表示,长度由8个字符表示,命令类型由4个字符表示,命令内容为计算请求命令或者任务请求命令所需参数或者为空,命令编号由1个字符表示。其中任务号由中心服务器2产生并返回给客户端1,实验类型为4位字符,用于保证子计算服务器3调用正确的仿真器调度接口4。长度的十进制值是指字符串“长度+命令类型+命令内容+命令编号”的总字节长度。长度的字符串表示不够八字符则在前面补字符’0’,所有字符串的编码为UTF-8。命令类型指示命令所表示的意义,具体信息请参见表2、任务请求命令的内容。命令编号从0开始计数,以10为模,命令编号用于和回复命令的编号对应,保证请求与应答的对应关系。
同样,每一条回复命令也由一串字符组合而成,字符串的结构为:长度+命令类型+命令内容+命令编号。回复命令的字符串各部分所指代意义与计算请求命令字符串中名称相同的各部分指代意义相同。回复命令的类型参见表3、回复命令的内容。回复命令的命令编号填充对应请求命令的命令编号。
客户端1和中心服务器2通过可靠的TCP协议进行通信。用户通过客户端1生成描述仿真任务的仿真场景;客户端1向中心服务器2请求全局唯一的任务号,标示这一次仿真任务;客户端1通过与中心服务器2建立的TCP连接发送用于交互的任务请求命令,比如初始化命令、修改参数命令、暂停命令等;客户端1通过与中心服务器2建立的TCP连接接收回复命令;客户端1处理回复命令,并通知用户。
中心服务器2监听来自客户端1的TCP连接请求,并准备为客户端1分配全局唯一的任务号;中心服务器2解析来自不同客户端1的任务请求命令后根据任务号和负载均衡策略分配对应于子计算服务器3的IP地址给仿真任务。中心服务器2与任务对应的子计算服务器3建立TCP连接,转发包含仿真任务的任务请求命令;中心服务器2负责接收来自子计算服务器3的回复命令并将其转发给相应的客户端1。
子计算服务器3监听来自中心服务器2的TCP连接请求;子计算服务器3负责解析来自中心服务器2的任务请求命令,并在本地根据任务的类型,创建不同的仿真器调度接口4进程;子计算服务器3负责维护仿真器调度接口4的工作目录,通信端口等临时资源;子计算服务器3主动与仿真器调度接口4进程建立TCP连接,并处理任务请求命令后将计算请求命令转发给仿真器调度接口4进程;子计算服务器3接收来自仿真器调度接口4的结果命令,并继续将其转发给中心服务器2。
中心服务器2和子计算服务器3配合完成集群的分布式任务调度。
仿真器调度接口4提供了子计算服务器3使用不同仿真器5的统一调用接口。统一的调用接口包括下面几个方面:
第一、仿真器调度接口4为一个可执行程序(如在linux或者windows下的),这个可执行程序启动时,可以接收来自命令行的参数,参数包括但不限于仿真器调度接口4用于监听计算服务器3发送的TCP连接请求的端口号和仿真器调度接口4调用仿真器5进行仿真计算时存放临时文件的工作目录;
第二、仿真器调度接口4需要根据仿真器5的具体功能提供用于仿真控制的交互命令,具体包括实现系统仿真协议部分的计算请求命令和回复命令。
第三、仿真器调度接口4可以将仿真结果以回复命令的形式通过TCP发给子计算服务器3。
仿真器调度接口4与仿真器5配合,通过TCP对外提供计算服务。如图2,根据仿真器5的不同,仿真器调度接口4调用仿真器5的结构分多种形式,典型的结构包括以下三种:
当仿真器5的仿真计算过程能由单独一个可执行程序控制完成时,如果这个仿真器5的控制程序可以通过简单修改实现仿真调度接口4需要满足的统一调用接口,可采用单进程仿真器调用接口4.3;如果这个仿真器5的控制程序结构复杂,不容易修改或者不可修改时,可采用第一多进程仿真器调用接口4.1,通过添加第一多进程仿真器调用接口4.1程序来实现对仿真器5的调用包装,实现子计算服务器3对仿真器5的统一调用。
当仿真器5的仿真计算过程不能由单独一个可执行程序控制完成时,仿真器调用接口4需要根据仿真器5的具体结构,实现仿真器5的调用,同时对子计算服务器3提供统一的调用接口。如图2中第二仿真器调用接口4.2所示为此种情况下的典型,仿真器5由仿真编译器5.1和仿真可执行程序5.2组成,第二仿真器调用接口4.2首先需要调用仿真编译器5.1来生产仿真可执行文件5.2,之后第二仿真器调用接口4.2与仿真可执行文件5.2交互进行仿真计算。
本发明所述客户端1必须根据所选用的仿真器调度接口4和仿真器5所提供的计算服务的具体内容构造任务请求命令、计算请求命令和解析回复命令。客户端与中心服务器2之间的交互过程也需遵从一定的流程,其中包括启动阶段、交互阶段和退出阶段。仿真的规范化交互流程可以表述如下:
启动阶段:客户端1启动以后创建客户端1与中心服务器2之间的TCP连接,并向中心服务器2申请任务号。之后,客户端1构造用于初始化的任务请求命令,请求中心服务器2分发仿真任务到任务号对应的子计算服务器3,子计算服务器3接收到中心服务器2转发的任务请求命令后,根据任务类型启动仿真器调度接口4,仿真器调度接口4启动以后向子计算服务器3发送表示初始化成功的回复命令,子计算服务器3转发该回复命令给中心服务器2,中心服务器2转发该回复命令给客户端1。客户端1一旦接收到初始化的回复命令,则保证了仿真器调度接口4已经正常启动。
交互阶段:客户端1根据具体用户指令向后台发送任务请求命令,同时接收、处理来自中心服务器2的回复命令。
退出阶段:客户端1向中心服务器2发送退出命令,客户端1断开与中心服务器2的TCP连接。
下面借助实施例更加详细地说明本发明,但以下实施例仅是说明性的,本发明的保护范围并不受这些实施例的限制。
实施例实现了如下表1、表2、表3所示的任务请求命令、计算请求命令和回复命令。客户端1遵从以上仿真交互协议,并按照系统的规范化交互流程实现如下模块。
如图3所示,为客户端1的功能结构框图。客户端1由交互控制模块1.1、仿真任务请求模块1.2、结果数据接收模块1.3、数据缓存1.4构成。交互控制模块1.1负责给用户提供交互界面,接受用户输入、显示仿真结果和构建仿真场景等。仿真任务请求模块1.2负责构造任务请求命令。结果数据接收模块1.3负责接收中心服务器2回传的回复命令。数据缓存1.4用于缓存回传的回复命令。用户借助交互控制模块1.1向客户端1输入指令(比如点击按钮,传输文件,书写代码等),仿真任务请求模块1.2根据指令生成不同的任务请求命令,并将其发送到中心服务器2。结果数据接收模块1.3接收到中心服务器2回传的回复命令时,将其保存到数据缓存1.4中。交互控制模块1.1检查数据缓存1.4的数据,并解析回复命令向用户输出信息(比如图像,文字,动画等)。
下面结合具体流程图详细说明客户端的工作过程。如图4、客户端启动以后向中心服务器申请任务号,请求中心服务器为该任务分配子计算服务器IP。申请任务号成功之后,客户端发送init命令,请求中心服务器转发任务请求命令到负责该任务的子计算服务器,并等待来自中心服务器的回复命令init-answer。客户端一旦接收回复命令init-answer,则保证了仿真器调度接口已经正常启动。之后,客户端就可以不停地向后台发送包含命令类型为0002至0013的计算请求命令的任务请求命令,同时接受来自中心服务器的回复命令,直到客户端退出程序,断开与中心服务器的连接。
如图5所示、为本发明所述中心服务器2的功能结构框图,中心服务器3基于异步通信框架实现,包括第一请求命令转发模块2.1、第一任务管理模块2.2、第一回复命令转发模块2.3、负载均衡模块2.4。
当第一任务管理模块2.2接收到来自客户端的TCP连接请求后,第一任务管理模块2.2从负载均衡模块2.4获取各子计算服务器的负载信息,由第一任务管理模块2.2的负载均衡策略负责为该TCP连接请求所指代的任务分配仿真任务号和子计算服务器的IP地址。之后,第一任务管理模块2.2将调用第一请求命令转发模块2.1创建服务器连接对象,该对象负责接收来自客户端的任务请求命令,并利用从第一任务管理模块2.2获得的子计算服务器的IP地址创建中心服务器与子计算服务器的TCP连接,最后第一请求命令转发模块2.1返回该服务器连接对象连接子计算服务器的TCP套接字句柄给第一任务管理模块2.2,同时将客户端发送的任务请求命令转发给该任务所分配的子计算服务器。第一任务管理模块2.2根据客户端与中心服务器的TCP套接字句柄、中心服务器与子计算服务器的TCP套接字句柄和任务号调用第一回复命令转发模块2.3创建客户端连接对象,该对象负责接收来自子计算服务器的回复命令,并将其转发给客户端。最后第一任务管理模块2.2将以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到第一任务管理模块2.2维护的任务字典中、该任务字典为一个字典数据结构,记录了中心服务器上所有任务号对应的服务器连接对象和客户端连接对象。当第一任务管理模块2.2需要断开与客户端的连接时,第一任务管理模块2.2通过任务号在任务字典中查找服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。
下面结合具体流程图详细说明中心服务器的工作过程。如图6所示、中心服务器启动后首先读取配置文件,配置文件描述了系统中各子计算服务器的IP地址、通信端口,平台类型(linux、windows或者mac os等)以及各子计算服务器所能承担的仿真计算类型。中心服务器创建监听服务,接收来至客户端的连接。客户端的连接到达时,中心服务器会创建一个临时的连接对象,该对象用于管理与客户端的通信。如果对象创建失败,中心服务器负责做资源清理,包括断开连接,删除临时的连接对象。如果对象创建成功,那么中心服务器等待客户端发送仿真请求数据。如果接收的数据不是一条完整的命令,则返回继续接收。当接收到一条完整的命令时,对命令经行解析。如果命令是a001,则向客户端返回一个任务编号,并为该任务分配子计算服务器的IP地址,然后创建客户端连接对象,并将任务号等信息添加到任务字典中。如果不是命令a001,也不是退出命令,则将任务请求命令转发到对应的子计算服务器,否则,销毁服务器连接对象和客户端连接对象,删除任务号并等待新的客户端发起的连接请求。客户端连接对象负责将子计算服务器回传的回复命令传递给客户端。如果中心服务器退出,则程序销毁所有连接对象,回收系统资源然后退出。
如图7所示,是本发明所述子计算服务器3功能框图,子计算服务器3基于异步通信框架实现,包括第二请求命令转发模块3.1、第二任务管理模块3.2、第二回复命令转发模块3.3、第二仿真求解器器调用模块3.4。
当第二任务管理模块3.2接收到来自中心服务器的TCP连接请求后,第二任务管理模块3.2从第二仿真求解器器调用模块3.4获取端口号和临时工作目录。之后,第二任务管理模块3.2将调用第二请求命令转发模块3.1创建服务器连接对象,该对象负责接收来自中心服务器的任务请求命令,并利用从第二任务管理模块3.2获得的端口号、临时工作目录以及对应该任务类型的仿真器调度接口路径创建仿真器调度接口进程,并与仿真器调度接口进程建立TCP连接,之后如果任务请求命令中包含计算请求命令,则将其转发给仿真器,最后第二请求命令转发模块3.1返回该服务器连接对象连接仿真器调度接口的TCP套接字句柄给第二任务管理模块3.2,第二任务管理模块3.2根据中心服务器与子计算服务器的TCP套接字句柄、子计算服务器与仿真器调度接口的TCP套接字句柄和任务号调用第二回复命令转发模块3.3创建客户端连接对象,该对象负责接收来自仿真器调度接口的回复命令,并将其转发给中心服务器。最后第二任务管理模块3.2将以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到第二任务管理模块3.2维护的任务字典中、该任务字典为一个字典数据结构,记录了子计算服务器上所有任务号对应的服务器连接对象和客户端连接对象。当第二任务管理模块3.2需要断开与中心服务器的连接时,第二任务管理模块3.2通过任务号在任务字典中查找服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。下面结合具体流程图详细说明子计算服务器的工作过程。如图8所示、子服务器启动后首先读取配置文件,配置文件描述了该子计算服务器上实验类型对应的仿真器调度接口的路径,以及启动这些仿真器调度接口所需要的必要参数。子计算服务器创建监听服务,接收来至中心服务器的连接。中心服务器的连接到达时,子计算服务器会创建一个临时的连接对象,该对象用于管理与中心服务器的通信。如果对象创建失败,子计算服务器负责做资源清理,包括断开连接,删除临时的连接对象。如果对象创建成功,那么子计算服务器等待中心服务器发送仿真请求数据。如果接收的数据不是一条完整的命令,则返回继续接收。当接收到一条完整的命令时,对命令经行解析。然后根据命令中出现的任务号判断该任务是否已经存在。如果不存在,则根据任务的实验类型确定仿真器调度接口的路径,分配与仿真器调度接口通信的端口号并创建临时工作目录,创建仿真器调度接口进程,创建客户端连接对象,将任务号等信息添加到仿真任务字典中。客户端连接对象负责接受回复命令,并将其转发给中心服务器。如果任务存在,而且命令不是退出命令,则将仿真的请求转发到对应的仿真器调度接口进程,否则,销毁连接对象,结束仿真器调度接口进程,删除任务号并等待中心服务器发起新的连接请求。如果子服务器退出,则程序销毁所有连接对象并回收系统资源然后退出。
该实施例的仿真器调度接口4采用的是如图2的第二多进程仿真器调度接口4.2的形式,仿真编译器和仿真可执行程序构成仿真器5。该实施例的仿真器调度接口4具备以下特性:仿真器调度接口4为一个可执行文件,且能够以带命令行参数的方式启动,参数包括但不限于端口号,临时工作目录;具备解析表1、表3中所有交互命令的能力;将仿真结果以回复命令的形式通过TCP发给子计算服务器3。仿真编译器为Openmodelica的编译器OMC(open modelica compiler)。
下面结合具体流程图详细说明仿真器调用接口的工作过程。如图9所示,仿真器调度接口从命令行参数读取端口号port和临时工作目录,端口号用于和子计算服务器通信,临时工作目录是该仿真任务临时数据和文件的存放地。仿真器调度接口在分配的端口处创建监听服务器并等待子计算服务器的仿真请求。仿真器调度接口创建回复命令发送线程和计算请求命令接收线程,同时主线程返回继续等待子计算服务器的其他请求。发送线程不断检查共享缓冲区是否为空,如果不为空时,发送线程将缓冲区的数据取出并发送给子计算服务器,如果为空,则发送线程继续等待直到共享缓冲区不为空。接收线程等待仿真请求命令,当命令类型为0001时,构造0001号回复命令并将其插入共享缓冲队列尾部,然后返回继续接收后续命令。当命令类型为0002的请求命令时,仿真器调度接口获取仿真模型,并调用OMC编译器对仿真模型经行编译,编译后将生成仿真可执行程序,随后仿真器调度接口以端口号port+1为参数启动生成的仿真可执行程序并创建结果数据接收线程。主线程构造0002号回复命令并将其插入共享缓冲队列尾部,然后返回继续接收后续命令。接收线程与仿真可执行程序建立连接。接收线程等待仿真可执行程序产生的结果数据。当接收到结果数据时,对结果数据经行解析,根据结果数据的意义构造相应的回复命令并将其插入共享缓冲队列尾部。同时接收线程返回继续等待仿真可执行程序产生的结果数据。当命令为退出命令时,程序释放所有资源并退出。当命令类型为除0002,0001和退出的其他命令时,将命令转发给仿真可执行程序,然后返回继续接收后续命令。
如图10所示、是本发明所述仿真器5的功能框图。仿真器5由第三接收数据模块5.1、数据缓存5.2、命令解析模块5.3、求解计算模块5.4、结果数据过滤模块5.5和第三回传数据模块5.6组成。
第三接收数据模块5.1接收来自求解器调度接口4的计算请求命令,并存放到数据缓存5.2中,命令解析模块5.3解析数据缓存中存放的计算请求命令,并根据命令意义控制求解器计算模块5.4计算。求解器计算模块5.4计算的结果保存在数据缓存5.4中,结果过滤模块5.5从数据缓存5.2中取出数据并过滤后通知第三回传数据模块5.6发送给仿真器调度接口4。
下面结合具体流程图详细说明仿真器的工作过程。如图11所示,仿真器启动以后,从命令行参数列表中读取端口号port+1的参数,然后在端口port+1出创建服务监听。仿真器创建回复命令发送线程、计算请求命令接收线程和求解计算线程。计算请求命令接收线程等待计算请求命令,并根据命令类型做不同处理。如果命令为退出命令,则退出程序。求解计算线程在计算请求命令接收线程的控制下将计算仿真结果存放到共享缓冲区中。回复命令发送线程不断检测共享缓冲区是否为空,如果不为空则将结果发送给求解器调度接口。
根据上述技术方案,一种基于modelica建模语言的分布式实时交互仿真系统通过客户端按照规范化的交互流程和仿真交互协议发送任务请求命令到中心服务器,中心服务器根据任务类型以及当前系统负载,将任务分发到合适的子计算服务器,子计算服务器根据任务类型调用仿真器调度接口,仿真器调度接口解析任务请求命令并调用仿真器完成仿真任务,然后将结果以数据流的形式返回客户端。
表1、计算请求命令的内容
表2、任务请求命令的内容
表3、回复命令的内容
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
Claims (10)
1.一种基于modelica建模语言的分布式实时交互仿真系统,其特征在于,该系统包括中心服务器(2),每个中心服务器上连接有多个客户端(1)和多个子计算服务器(3),每个子计算服务器通过仿真器调度接口(4)连接有多个仿真器(5);
客户端(1)接收用户提交的仿真任务请求,向中心服务器(2)请求全局唯一的标示仿真任务的任务号;客户端(1)通过与中心服务器(2)建立的TCP连接发送用于交互的任务请求命令和接收回复命令,客户端(1)处理回复命令并通知用户;
中心服务器(2)监听来自客户端(1)的TCP连接请求,并准备为客户端(1)分配全局唯一的任务号;中心服务器(2)解析来自不同客户端(1)的任务请求命令后根据任务号和负载均衡策略分配对应于子计算服务器(3)的IP地址给仿真任务;中心服务器(2)与任务对应的子计算服务器(3)建立TCP连接,转发包含仿真任务的任务请求命令,并接收来自子计算服务器(3)的回复命令,将其转发给相应的客户端(1);
子计算服务器(3)监听来自中心服务器(2)的TCP连接请求,负责解析来自中心服务器(2)的任务请求命令,并在本地根据任务的类型,创建不同的仿真器调度接口(4)进程;子计算服务器(3)还负责维护仿真器调度接口(4)的工作目录和通信端口;子计算服务器(3)主动与仿真器调度接口(4)进程建立TCP连接,并处理任务请求命令后将计算请求命令转发给仿真器调度接口(4)进程;子计算服务器(3)接收来自仿真器调度接口(4)的结果命令,并继续将其转发给中心服务器(2);
中心服务器(2)和子计算服务器(3)配合完成集群的分布式任务调度;
仿真器调度接口(4)获得子计算服务器(3)分配的启动参数并监听来自子计算服务器(3)的TCP连接请求,为子计算服务器(3)提供统一的调用接口;仿真器调度接口(4)与仿真器(5)配合,通过TCP对外提供计算服务,仿真器调度接口(4)解析计算请求命令并调用仿真器(5)进行计算,并将计算结果整合后以结果命令的形式通过TCP返还给子计算服务器(3)。
2.根据权利要求1所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,所述仿真器调度接口(4)为可执行程序,该可执行程序启动时接收来自命令行的参数,参数包括仿真器调度接口(4)用于监听子计算服务器(3)发送的TCP连接请求的端口号和仿真器调度接口(4)调用仿真器(5)进行仿真计算时存放临时文件的工作目录;所述仿真器调度接口(4)提供用于仿真控制的交互命令,包括计算请求命令和回复命令;所述仿真器调度接口(4)将仿真结果以回复命令的形式通过TCP发给子计算服务器(3)。
3.根据权利要求2所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,仿真器调度接口(4)包括第一多进程仿真器调用接口(4.1)、第二仿真器调用接口(4.2)和单进程仿真器调用接口(4.3)三种结构形式;
单进程仿真器调用接口(4.3)是指仿真器5的仿真计算过程由单独一个可执行程序控制完成,且该仿真器(5)的控制程序能够通过简单修改实现统一调用接口功能;
第一多进程仿真器调用接口(4.1)是指仿真器(5)的仿真计算过程由单独一个可执行程序控制完成,且仿真器(5)的控制程序结构复杂,通过添加专用仿真器调用接口程序以实现对仿真器(5)的调用包装;
第二仿真器调用接口(4.2)是在仿真器(5)由仿真编译器和仿真可执行程序组成时,调用仿真编译器以生产仿真可执行文件,之后与仿真可执行文件交互进行仿真计算。
4.根据权利要求1、2或3所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,客户端(1)包括交互控制模块(1.1)、仿真任务请求模块(1.2)、结果数据接收模块(1.3)和第一数据缓存(1.4);
交互控制模块(1.1)负责给用户提供交互界面,接受用户输入、显示仿真结果和构建仿真场景,并提供给仿真任务请求模块(1.2);
仿真任务请求模块(1.2)负责构造任务请求命令,并将其发送到中心服务器(2);
结果数据接收模块(1.3)负责接收中心服务器(2)回传的回复命令,将其保存到第一数据缓存(1.4)中;交互控制模块(1.1)检查第一数据缓存(1.4)的数据,并解析回复命令向用户输出信息。
5.根据权利要求1、2或3所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,中心服务器(3)包括第一请求命令转发模块(2.1)、第一任务管理模块(2.2)、第一回复命令转发模块(2.3)和负载均衡模块(2.4);
第一任务管理模块(2.2)接收到来自客户端的TCP连接请求,从负载均衡模块(2.4)获取各子计算服务器的负载信息,为该TCP连接请求所指代的任务,分配仿真任务号和子计算服务器的IP地址;第一任务管理模块(2.2)还将调用第一请求命令转发模块(2.1)创建服务器连接对象,该对象负责接收来自客户端的任务请求命令,并利用从第一任务管理模块(2.2)获得的子计算服务器的IP地址创建中心服务器与子计算服务器的TCP连接,最后第一请求命令转发模块(2.1)返回该服务器连接对象连接子计算服务器的TCP套接字句柄给第一任务管理模块(2.2),同时将客户端发送的任务请求命令转发给该任务所分配的子计算服务器;第一任务管理模块(2.2)根据客户端与中心服务器的TCP套接字句柄、中心服务器与子计算服务器的TCP套接字句柄和任务号调用第一回复命令转发模块(2.3)创建客户端连接对象,该对象负责接收来自子计算服务器的回复命令,并将其转发给客户端;最后第一任务管理模块(2.2)将以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到中心服务器的任务字典中、该任务字典为一个字典数据结构,记录了中心服务器上所有任务号对应的服务器连接对象和客户端连接对象;当第一任务管理模块(2.2)需要断开与客户端的连接时,第一任务管理模块(2.2)通过任务号在任务字典中查找服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。
6.根据权利要求4所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,中心服务器(3)包括第一请求命令转发模块(2.1)、第一任务管理模块(2.2)、第一回复命令转发模块(2.3)、负载均衡模块(2.4);
第一任务管理模块(2.2)接收到来自客户端的TCP连接请求,从负载均衡模块(2.4)获取各子计算服务器的负载信息,为该TCP连接请求所指代的任务,分配仿真任务号和子计算服务器的IP地址;第一任务管理模块(2.2)还将调用第一请求命令转发模块(2.1)创建服务器连接对象,该对象负责接收来自客户端的任务请求命令,并利用从第一任务管理模块(2.2)获得的子计算服务器的IP地址创建中心服务器与子计算服务器的TCP连接,最后第一请求命令转发模块(2.1)返回该服务器连接对象连接子计算服务器的TCP套接字句柄给第一任务管理模块(2.2),同时将客户端发送的任务请求命令转发给该任务所分配的子计算服务器;第一任务管理模块(2.2)根据客户端与中心服务器的TCP套接字句柄、中心服务器与子计算服务器的TCP套接字句柄和任务号调用第一回复命令转发模块(2.3)创建客户端连接对象,该对象负责接收来自子计算服务器的回复命令,并将其转发给客户端;最后第一任务管理模块(2.2)将以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到中心服务器的任务字典中、该任务字典为一个字典数据结构,记录了中心服务器上所有任务号对应的服务器连接对象和客户端连接对象;当第一任务管理模块(2.2)需要断开与客户端的连接时,第一任务管理模块(2.2)通过任务号在任务字典中查找服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。
7.根据权利要求1、2或3所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,子计算服务器(3)包括第二请求命令转发模块(3.1)、第二任务管理模块(3.2)、第二回复命令转发模块(3.3)、第二仿真求解器调用模块(3.4);
第二任务管理模块(3.2)用于接收来自中心服务器的TCP连接请求,从第二仿真求解器调用模块(3.4)获取端口号和临时工作目录;第二任务管理模块(3.2)调用第二请求命令转发模块(3.1)创建服务器连接对象,该对象负责接收来自中心服务器的任务请求命令,并利用从第二任务管理模块(3.2)获得的端口号、临时工作目录以及对应该任务类型的仿真器调度接口路径创建仿真器调度接口进程,并与仿真器调度接口进程建立TCP连接,之后如果任务请求命令中包含计算请求命令,则将其转发给仿真器,最后第二请求命令转发模块(3.1)返回该服务器连接对象连接仿真器调度接口的TCP套接字句柄给第二任务管理模块(3.2),第二任务管理模块(3.2)根据中心服务器与子计算服务器的TCP套接字句柄、子计算服务器与仿真器调度接口的TCP套接字句柄和任务号调用第二回复命令转发模块(3.3)创建客户端连接对象,该对象负责接收来自仿真器调度接口的回复命令,并将其转发给中心服务器;第二任务管理模块(3.2)以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到第二任务管理模块(3.2)维护的任务字典中、该任务字典为一个字典数据结构,用于记录子计算服务器上所有任务号对应的服务器连接对象和客户端连接对象;当第二任务管理模块(3.2)需要断开与中心服务器的连接时,第二任务管理模块(3.2)通过任务号在任务字典中查找该任务对应的服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。
8.根据权利要求6所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,子计算服务器(3)包括第二请求命令转发模块(3.1)、第二任务管理模块(3.2)、第二回复命令转发模块(3.3)、第二仿真求解器调用模块(3.4);
第二任务管理模块(3.2)用于接收来自中心服务器的TCP连接请求,从第二仿真求解器调用模块(3.4)获取端口号和临时工作目录;第二任务管理模块(3.2)还调用第二请求命令转发模块(3.1)创建服务器连接对象,该对象负责接收来自中心服务器的任务请求命令,并利用从第二任务管理模块(3.2)获得的端口号、临时工作目录以及对应该任务类型的仿真器调度接口路径创建仿真器调度接口进程,并与仿真器调度接口进程建立TCP连接,之后如果任务请求命令中包含计算请求命令,则将其转发给仿真器,最后第二请求命令转发模块(3.1)返回该服务器连接对象连接仿真器调度接口的TCP套接字句柄给第二任务管理模块(3.2),第二任务管理模块(3.2)根据中心服务器与子计算服务器的TCP套接字句柄、子计算服务器与仿真器调度接口的TCP套接字句柄和任务号调用第二回复命令转发模块(3.3)创建客户端连接对象,该对象负责接收来自仿真器调度接口的回复命令,并将其转发给中心服务器;第二任务管理模块(3.2)以任务号为关键字,服务器连接对象和客户端连接对象为键值,将其添加到第二任务管理模块(3.2)维护的任务字典中、该任务字典为一个字典数据结构,用于记录子计算服务器上所有任务号对应的服务器连接对象和客户端连接对象;当第二任务管理模块(3.2)需要断开与中心服务器的连接时,第二任务管理模块(3.2)通过任务号在任务字典中查找该任务对应的服务器连接对象和客户端连接对象,并将之销毁,之后删除该任务号。
9.根据权利要求1、2或3所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,
仿真器(5)包括第三接收数据模块(5.1)、第二数据缓存(5.2)、命令解析模块(5.3)、求解计算模块(5.4)、结果数据过滤模块(5.5)和第三回传数据模块(5.6);
第三接收数据模块(5.1)用于接收来自求解器调度接口(4)的计算请求命令,并存放到第二数据缓存(5.2)中,命令解析模块(5.3)解析数据缓存中存放的计算请求命令,并根据命令意义控制求解器计算模块(5.4)计算;求解器计算模块(5.4)用于将计算的结果保存在数据缓存(5.4)中,结果过滤模块(5.5)从第二数据缓存(5.2)中取出数据并过滤后通知第三回传数据模块(5.6)发送给相连的仿真器调度接口(4)。
10.根据权利要求8所述的基于modelica建模语言的分布式实时交互仿真系统,其特征在于,
仿真器(5)包括第三接收数据模块(5.1)、第二数据缓存(5.2)、命令解析模块(5.3)、求解计算模块(5.4)、结果数据过滤模块(5.5)和第三回传数据模块(5.6);
第三接收数据模块(5.1)用于接收来自求解器调度接口(4)的计算请求命令,并存放到第二数据缓存(5.2)中,命令解析模块(5.3)解析数据缓存中存放的计算请求命令,并根据命令意义控制求解器计算模块(5.4)计算;求解器计算模块(5.4)用于将计算的结果保存在数据缓存(5.4)中,结果过滤模块(5.5)从第二数据缓存(5.2)中取出数据并过滤后通知第三回传数据模块(5.6)发送给相连的仿真器调度接口(4)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210006613.7A CN102622262B (zh) | 2012-01-09 | 2012-01-09 | 基于modelica建模语言的分布式实时交互仿真系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210006613.7A CN102622262B (zh) | 2012-01-09 | 2012-01-09 | 基于modelica建模语言的分布式实时交互仿真系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102622262A CN102622262A (zh) | 2012-08-01 |
CN102622262B true CN102622262B (zh) | 2014-07-09 |
Family
ID=46562191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210006613.7A Expired - Fee Related CN102622262B (zh) | 2012-01-09 | 2012-01-09 | 基于modelica建模语言的分布式实时交互仿真系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102622262B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103781107B (zh) * | 2012-10-22 | 2018-03-23 | 中兴通讯股份有限公司 | 无线通信网络的仿真、仿真处理方法及装置 |
CN105243223B (zh) * | 2015-10-28 | 2018-11-02 | 苏州同元软控信息技术有限公司 | 基于Modelica的程序快速构建方法 |
CN106503321B (zh) * | 2016-10-17 | 2019-09-13 | 北京理工大学 | 一种分布式仿真系统的逆序模型调度方法 |
CN107273618A (zh) * | 2017-06-20 | 2017-10-20 | 北京京东尚科信息技术有限公司 | 用于仿真模型之间信息传输的方法和装置 |
CN109598040B (zh) * | 2018-11-22 | 2023-04-07 | 浙江工业大学 | 基于tcp协议的ns3与matlab集成的联合仿真接口方法 |
CN113591279A (zh) * | 2021-07-13 | 2021-11-02 | 苏州同元软控信息技术有限公司 | 在线建模仿真的方法、装置、设备和存储介质 |
CN113746683B (zh) * | 2021-09-15 | 2022-09-06 | 北京航空航天大学 | 跨域环境下的互连、互通和互操作仿真方法 |
CN114157549A (zh) * | 2021-11-23 | 2022-03-08 | 上海创景信息科技有限公司 | 基于分布式总线的系统仿真装置、方法、系统及介质 |
CN115964131B (zh) * | 2023-03-16 | 2023-05-16 | 中国人民解放军国防科技大学 | 支持多仿真引擎的仿真模型管理系统和仿真模型调度方法 |
CN117473798B (zh) * | 2023-12-26 | 2024-05-14 | 国家超级计算天津中心 | 仿真项目管理方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075275A (zh) * | 2007-06-28 | 2007-11-21 | 上海交通大学 | 分布式多角色协同仿真演习方法 |
CN101719078A (zh) * | 2009-12-15 | 2010-06-02 | 北京空间飞行器总体设计部 | 一种基于并行计算管理的自主导航仿真调度管理系统 |
US7882253B2 (en) * | 2001-04-05 | 2011-02-01 | Real-Time Innovations, Inc. | Real-time publish-subscribe system |
-
2012
- 2012-01-09 CN CN201210006613.7A patent/CN102622262B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882253B2 (en) * | 2001-04-05 | 2011-02-01 | Real-Time Innovations, Inc. | Real-time publish-subscribe system |
CN101075275A (zh) * | 2007-06-28 | 2007-11-21 | 上海交通大学 | 分布式多角色协同仿真演习方法 |
CN101719078A (zh) * | 2009-12-15 | 2010-06-02 | 北京空间飞行器总体设计部 | 一种基于并行计算管理的自主导航仿真调度管理系统 |
Non-Patent Citations (3)
Title |
---|
《MISM:Modelica-Based Interactive Scheduling Mechanism for Virtual Educational Experiments》;Wenbin Jiang etc.;《The Fifth Annual ChinaGrid Conference》;20100718;第103-108页 * |
Wenbin Jiang etc..《MISM:Modelica-Based Interactive Scheduling Mechanism for Virtual Educational Experiments》.《The Fifth Annual ChinaGrid Conference》.2010,第103-108页. |
刘超等.《一种多学科虚拟实验教学平台仿真计算与调度机制》.《第六届和谐人机环境联合学术会议(HHME2010)、第19届全国多媒体学术会议(NCMT2010)、第6届全国人机交互学术会议(CHCI2010)、第5届全国普适计算学术会议(PCC2010)论文集 》.2010,第469-474页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102622262A (zh) | 2012-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102622262B (zh) | 基于modelica建模语言的分布式实时交互仿真系统 | |
CN209448755U (zh) | 用于异构仿真系统中的通信互连装置 | |
CN110083455B (zh) | 图计算处理方法、装置、介质及电子设备 | |
CN108932588A (zh) | 一种前后端分离的水电站群优化调度系统及方法 | |
CN111966748B (zh) | 分布式空基仿真运行控制管理方法 | |
CN103646134B (zh) | 一种面向服务的网络化仿真系统动态生成方法 | |
CN107145673B (zh) | 一种联合仿真系统和方法 | |
CN107992767A (zh) | 一种基于多云平台的权限控制方法 | |
CN103324605A (zh) | 一种多用户协同编辑的方法、设备及系统 | |
CN108063812B (zh) | 实时云办公系统下文件管理的一致性维护方法 | |
CN112349165A (zh) | 基于调控云的电网调度员仿真培训方法、装置及系统 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN103634290A (zh) | 网络仿真系统 | |
CN106209483A (zh) | 卫星通讯仿真方法及装置 | |
CN103473389A (zh) | 一种应用于hla分布式仿真技术的通用模型 | |
CN109634647B (zh) | 大型前端项目的构建方法及系统 | |
CN109150938A (zh) | 基于云服务的卫星应用公共服务平台 | |
CN112363856A (zh) | 一种基于dds实现深度学习框架与应用程序互操作的方法 | |
CN110968398A (zh) | 一种基于机器学习和大数据处理的互动系统 | |
CN111459459A (zh) | 一种游戏客户端资源配置方法及系统 | |
CN105183487B (zh) | 基于抽注服务的软件开发方法及其装置 | |
Dou et al. | Operation Command Transformation of Synchronized Collaborative Design Upon Heterogeneous CAD Systems | |
CN109375987A (zh) | 一种虚拟机选择物理机的方法和系统 | |
CN113656952B (zh) | 一种云边端计算环境的建模工具 | |
CN113535389B (zh) | 一种实验方案并行推演管控系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140709 Termination date: 20210109 |
|
CF01 | Termination of patent right due to non-payment of annual fee |