本发明提供一种分布式仿真系统通信网络构建方法,涉及计算机网络技术、多智能体系统技术、分布式系统技术和系统仿真技术。
背景技术:
分布式系统指物理上具有分布特征或行为上具有分布能力的个体之间联合工作,共同解决较大规模或大规模问题的系统。航空航天系统中多机协同实现对敌进攻、机器人世界杯3D仿真平台(Robocup3D)中多智能体配合进球都是分布式理论应用的典型例子。分布式系统的搭建与运行牵涉较多理论与方法,其中底层通信网络的建立及运行算法的研制是重要问题之一。
现存的分布式仿真系统或是物理拓扑结构复杂,或是通信实时性不好,或是通信可靠性不高,严重阻碍工程项目的顺利进行。
技术实现要素:
为了克服现有技术的不足,本发明提供一种搭建分布式仿真系统通信网络的方法,能够实时、可靠地保证分布式模块(由计算机模拟)之间的通信。
本发明解决其技术问题所采用的技术方案包括以下步骤:
步骤1,搭建分布式仿真系统通信网络,包括主机、交换机、监视器、外机和若干从机,所述的主机有且仅有一台,主机、监视器和外机分别通过交换机联通各台从机;
步骤2,主机初始化,设置主机信道类型、主机地址和主机监听端口,所述的主机信道类型为无线类型或有线类型;从机初始化,设置从机的逻辑地址;
步骤3,约定消息编码与解码规则,包括:消息以字符串的形式在信道中流通,并且存在一个界定消息首尾的标记;消息字符串中包含若干信息单元,每个信息单元存在一个界定首尾的标记,信息单元中包括一个信息功能描述符与若干信息功能参数;通信消息中包括时间标签;
步骤4,主机启动等待从机接入,若有从机接入请求,则建立临时验证信道,接受来自从机的验证信息,如果验证信息合法,则允许从机正常接入,临时验证信道提升为正常主从通信信道;如果无验证信息到来或验证超时或验证非法,则断开当前临时信道,拒绝从机接入;从机启动后发送接入请求和验证信息,直到主机返回验证正确的状态回应后从机正常接入;从机正常接入后,主机和从机按照设定周期收发消息,如果当前周期的收发消息无效,则使用上一周期有效数据。
所述的建立临时验证信道之后,以及主机和从机按照设定周期收发消息之后,更新分布式仿真系统通信网络的全局记录,内容包括:主机被尝试接入的次数与当前尝试的次序;当前主机和从机占用物理信道的编号与进入接口;当前尝试接入的从机编号及其与实际物理信道的对应关系;当前尝试接入的从机的属性和物理属性。
所述的从机i向和机j通信,先由从机i执行步骤4接入主机并收发消息,再从机j执行步骤4接入主机并收发消息。
本发明的有益效果是:物理结构采用交换式以太网,具有形式简单,连接方便,成本低廉,支持开放式互联等诸多优点;同时本发明所提出的基于描述性的信息流规范及主、从机调度算法能在保证实时性的前提下极大程度地保障网络安全,对于设计分布式仿真系统提供了便利、可靠的参考。
附图说明
图1是分布式系统通信网络拓扑结构。
图2是主机执行逻辑,包括主机动态任务调度。
图3是从机执行逻辑。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明搭建的分布式仿真系统的底层通信基础基于以太网技术、IP寻址技术、TCP技术,节点拓扑结构采用交换式。并且设计了通信主机(以下简称主机)与通信从机(以下简称从机)的握手规程、消息规则,以及通信主机的动态任务调度算法。
本发明提供的基于描述性信息流的分布式仿真系统通信网络构建方法的实施步骤如下:
Step 1:网络连接。
本发明采用图1所示的基于交换式的通信系统拓扑结构。
由于系统具有可扩展性,所以对于连入子系统数不加限制。但是,只能有且只有一个主机,因为他是网络状态唯一的监视者和网络任务唯一的调度者。
其中,主机承担全局信息交换中介,当服务器使用;监视器、外机、从机在网络结构层面上讲都是客户端。外机指的是不参与分布式联合的外来机器,在环境中承担新信息的提供者与新态势的构造者。这种结构的物理结构形式简单,连接方便,成本低廉。
为了实时获取主从机之间的通信状态(分布式调度算法在实时中的需求),采用TCP/IP协议在该系统中通信。
Step 2:主机、从机初始化。
具体包括设置主机信道类型(无线类型、或有线类型,依据具体需求或现有条件设置)、主机地址、主机监听端口;从机的逻辑地址(由专门的地址分配规则确定,也可以人为约定)。
Step 3:约定消息编码与解码规则。
采用基于描述性信息流的消息流规则。
信道建立完毕后,对于主从之间的信息编码格式,要执行采用基于描述性信息流的消息流规则:
(1)消息以字符串的形式在信道中流通,同时要存在一个界定消息首尾的标记。这种标记可以是“()”也可以是“[]”或其他形式。例如:“[this is a message]”。
(2)消息字符串中包含多种信息(比如对于飞机,有俯仰角、横滚角等),称为信息单元。信息单元也必须有界定标记(比如“()”或“[]”)。信息单元必须存在信息的功能描述符与功能参数。功能描述符说明信息的功能,功能参数说明信息的度量,比如“角度”作为功能描述符时,“10”可以作为功能参数。功能描述符与功能参数之间使用空格隔开,空格个数不限,至少一个。一个信息必须有且只有一个功能描述符,但功能参数允许有多个。消息单元的加入不应定义先后顺序,先到先入,功能参数无效时当前消息不包含该消息单元。
例如:“(degree 10)”。
(3)为了通信的实时性验证,通信消息要加时间标签。
Step 4:主机、从机分别开始执行各自的逻辑。
主从机握手与主机动态任务调度算法如下所述:
主机与从机建立通信握手,实施正常通信的调度算法与全局数据交换的同步算法大致为:
主机启动等待从机接入,若有从机接入请求,则建立临时验证信道,接受来自从机的验证信息,如果验证信息合法,则允许本次接入,临时验证信道提升为正常主从通信信道。如果无验证信息到来(或验证超时)或者验证非法,则断开当前临时信道,拒绝从机接入。正常接入后,为了保证通信的实时性与有效性,必须定期收发消息,如果当前收发周期数据无效,则使用上一周期有效数据。同时,主机存在调度逻辑,用于实时监控各个从机状态,从机逻辑编号与信道的对应关系,当前接入总从机数。
对于从机,启动后发送链接请求和验证信息,直到主机返回验证正确的状态回应,才进入正常通信阶段。
主机与从机建立通信握手的算法如图2、图3所示。
其中,更新全局记录包含的内容为:
1、主机被尝试接入的次数与当前尝试的次序。
2、当前主从机实际占用的物理信道的编号与进入接口(套接字与线程句柄)。
3、当前尝试接入的从机编号ID,及其与实际物理信道的对应关系。
4、当前尝试接入的从机的物理属性(IP地址、占用本机的端口号)。
5、当前尝试接入的从机的属性。如接入时间,型号。
注意:如果信息更新时缺少上述之一,则对应记录不更新,只更新有效部分。
并且,如果需要从机i向从机j喊话,则先由从机i发向主机,再有主机转发,这样可以有效节省信道资源,降低开发成本。
本实施例考虑如下实际问题:有四个机器人,合作完成某件事,比如将一个球踢进球门,设计该系统的仿真系统的通信子系统。要求就要足够好的实时性、可靠性。
该网络搭建细则如下详述:
Step 1:网络连接。
选择5台性能足够好的计算机(本发明建议硬件要求为:Windows 7Ultimate;硬盘>500G;内存>4G;处理器>Intel 5)分别模拟4个机器人和服务器。服务器的作用是用于场景生成,实时检测或获取各机器人在场景中的信息,并作为通信主机分发给相应的机器人。利用图1所示网络拓扑连接上述5台计算机。交换机建议为千兆级。
Step 2:主机、从机初始化。
(1)主机设置Server监听端口为4000,并设置主机IP地址为“192.168.1.1”。将监听套接字放入描述符集(FD_SET),使用Select函数开启监听描述符集的状态变化,当有消息到来时函数返回正值,否则为-1。并设定Select函数不等待,即时间参数设置为0。
(2)从机在初始化完TCP环境后,获得各自的逻辑地址,假设为1~4,然后申请接入“192.168.1.1:4000”。
Step 3:约定消息编码与解码规则。
遵从下述约定:
1、通信信息使用字符串作为载体,消息整体用圆括号“()”加以界定。
2、具体信息使用圆括号“()”加以限定,称为信息单元。圆括号中存在信息的功能描述符与功能参数。功能描述符与功能参数之间使用空格隔开,空格个数不限,至少一个。一个信息必须有且只有一个功能描述符,但功能参数允许有多个。即信息格式为
(功能描述符功能参数[1][功能参数2……])。
方括号括起来的表示可选项。消息单元的加入不应定义先后顺序,先到先入,功能参数无效时当前消息不包含该消息单元。
3、为了通信的实时性验证,通信消息要加时间标签。其功能描述符为“time”,参数使用分时秒制“00:00:00”或秒制“00000000”。所以时间标签信息的格式为(time00:00:00)或(time 00000000)。
4、从机向主机的验证信息的功能描述符为“ID”,功能参数只有一个,为当前从机编号,验证信息不应包含其他无关信息,如果主机不回有效接入的信号,则在主从信道还存在的情况下定期不间断发送,直到收到主机回应。
5、当从机间需要喊话时,由主机转发。功能描述符为“say”,第一参数为本机ID,第第二参数为目标从机ID,第三参数为喊话信息。
如(say 1 2“(time 00:00:50)(pos 0.1 0.2 0.3)”)
6、其他类型的信息单元(功能描述符与功能参数)依据实际需求定义。
7、所以一条有效的验证信息应如下:
“<(time 00:00:00)(ID 1)>”
一条有效的正常通信信息应如下:
“<(time 00:00:10)(pos 1.0 2.0 3.0)(attack 2)(sideslide 2)(pitch 1)(roll 2)(yaw 3)…>””
至于高层协议,如功能描述符与相应参数的制定取决于高层决策,不是本发明的主要内容,不予详细阐述。不过对于通信子系统的搭建与测试,这也是不必要的。
Step 4:主机、从机分别开始执行各自的逻辑。
主机这时已经处在监听状态,若有消息到来,则先检测是不是身份验证消息,若是,则验证身份是否合法,包括是否已被占用等。若否,直接销毁当前信道。当身份验证正常时,给从机分配通信信道(也就是开启一个子线程),并将申请握手的从机(体现为套接字)的信息记入数据库(体现为增加),比如从机的IP地址、实际接入主机时主机分配的通信端口等。由于监听函数不等待,所以当其返回后立即执行数据库检测,包括已有记录是否正常,如果某一主从通信信道意外终止,则立即更新数据库记录,体现为删除。
对于从机则当身份验证合法后,则进入正常数据互传主循环。
数据互传逻辑,体现为描述性数据流功能描述符与功能参数的约定,制定后,由主机操控整个系统的执行,例如是广播规则、一对一规则、或是数据转发,细则依据上册决策需要制定。