【 摘 要 】 提出一种分布式仿真的通信方法,核心是通信软件总线。该总线由程序模块和外部配置文件两部分构成。外部配置文件用来定义数据包、数据整合操作和通信路由。各仿真程序只通过通信软件总线收发数据,数据的传输路由由通信软件总线根据外部配置文件确定,实现了仿真程序的通信解耦。方法具有通信简洁、规范、易于扩展、通用的特点。
【 关键词 】 分布式仿真;通信软件总线;软件复用
【 中图分类号 】 TP391.9 【 文献标识码 】 A
【 Abstract 】 A communication method with a key component called communication software bus for distributed simulation is presented. The communication software bus consists of?some software modules and two configuration files defining data packet formats,merging operations and communication routes. Simulation applications send to and receive from the communication software bus that routes the data packets based on the configuration files and thus the simulation applications are decoupled. The method is simple, normative,expansive and general.
【 Keywords 】 distributed simulation;communication software bus; software reusebility
1 引言
分布式仿真系统需要由多台计算机协同完成仿真任务,仿真节点间的通信是关键问题之一。通常的“点-点”通信方式,如果系统内有n个仿真程序需要通信,在极端情况下,需要有n(n-1)条逻辑通信链路。这种通信方式的不足之处在于通信链路多,数据拥塞,浪费网络带宽,造成通信效率下降;仿真程序紧密藕合,每一个仿真程序都需要知道与之通信的其它仿真程序的存在;通信方式不规范,当系统内增加需要通信的仿真程序时,会导致对已存在的仿真程序通信代码的修改;通信数据分散,造成通信数据监控困难,不便于系统开发时的调式和系统运营后的状态监控。本文采用软件总线方法解决这些通讯问题。
2 通信总体结构
如图1所示是采用通信软件总线的分布式仿真系统的通信逻辑结构。分布式仿真系统由若干仿真节点和一个总线节点构成,各仿真节点和总线节点通过以太网络相联。仿真节点运行仿真程序,仿真程序是完成具体仿真任务或硬件驱动任务的程序。总线节点运行一个通信管理程序(以下称通信软件总线),该程序协调各仿真程序之间的通信。各仿真程序不能直接而是必须经过通信软件总线进行通信。各仿真程序向通信软件总线发送数据而不必关心这些数据发向哪个仿真程序,只需接收通信软件总线的数据而不必关心这些数据来自哪个仿真程序,数据的路由完全由通信软件总线根据外部配置文件确定,如图2所示,从而实现了各仿真程序间的通信解耦。总线节点(计算机)可配置一块或多块以太网网卡,具体网卡数量根据具体仿真系统的通信节点数、通信流量和实时性的要求具体决定。
3 通信软件总线组成
通信软件总线由五个模块和两个外部配置文件组成,如图2所示。五个模块为外部配置解析模块、数据接收模块、数据发送模块、数据整合模块、数据监控模块;两个外部配置文件为数据包配置文件、通信路由配置文件。数据包配置文件用于定义通信数据包的结构、数据包之间的赋值关系;通信路由配置文件用于定义通信接入端口,通信发送路由。
数据包配置文件、通信路由配置文件存储于总线节点(计算机)硬磁盘上,将其从通信软件总线程序中分离出来,而不是与通信软件总线程序二为一,是为了实现通信软件总线的通用性问题。这两个配置文件为文本文件,可用任何一种文本编辑工具对其进行修改,如果需要产生一个新分布式仿真系统的通信系统,只要在这两个配置文件中填入新的内容即可,而通信软件总线程序不需做任何改变,可大大提高通信系统开发效率。
4 外部配置文件
4.1 数据包配置文件
数据包配置文件用于定义通信数据包的结构、数据包之间的赋值关系,其定义格式:
数据包配置文件:数据包列表 数据包赋值列表;
数据包:struct 数据包名{数据成员列表};
数据成员:成员类型 成员名;
成员类型:float|double|char|short|int|long|
unsigned char| unsigned short| unsigned int| unsigned long|数据包名;
成员名:标识符|成员名[正整数];
数据包赋值:数据包名::成员标识符=数据包名::成员标识符;
成员标识符:标识符|成员标识符[非负整数]。
4.2 通信路由配置文件
通信路由配置文件用于定义通信接入端口,通信发送路由,其定义格式:
通信路由配置文件:通信接入端口配置 通信发送路由配置;
通信接入端口配置:[LinkIn Ports]={接入端口列表};
通信发送路由配置:[Send Links]={发送路由列表};
接入端口:;
发送路由: ip(from)=IP地址, port(from )=端口号,ip(to)=IP地址, port(to )=端口号>。
5 通信软件总线算法
外部配置解析模块解析数据包配置文件,在内存中建立通信数据包的结构(以下简称数据包结构)、数据包之间的赋值关系(以下简称赋值关系)、数据包存储区;外部配置解析模块还解析通信路由配置文件,在内存中建立通信接入端口(以下简称接入端口)、通信发送路由(以下简称发送路由);
数据接收模块按接入端口接收网络数据,存于数据包存储区;
数据整合模块按赋值关系对数据包存储区进行赋值操作,达到数据包整合目标;
数据发送模块按发送路由发送数据包存储区中的数据包;
数据监控模块按数据包结构显示数据包存储区,用于系统开发时的调试和系统运营时的状态监控;
通信软件总线完成通信的主要分为几个步骤。
步骤1(系统初始化):通信软件总线的外部配置解析模块解析外部配置文件的数据包配置文件,在内存中建立数据包结构、赋值关系、数据包存储区;外部配置解析模块还解析外部配置文件的通信路由配置文件,在内存中建立接入端口、发送路由。
步骤2(发送数据包):仿真程序以UDP协议经以太网络分别向通信软件总线发送数据包。
步骤3(接收数据包):通信软件总线的数据接收模块根据接入端口接收新的数据包存于数据包存储区。
步骤4(形成新的数据包):通信软件总线的数据整合模块根据赋值关系对接收到的已存入数据包存储区的数据包进行整合,形成新的数据包。
步骤5(发送新的数据包):通信软件总线的数据发送模块以UDP协议经经以太网络,按发送路由向第一仿真程序发送新的数据包。
步骤6(显示数据包存储区):通信软件总线的的数据监控模块根据数据包结构显示数据包存储区,用于系统开发时的调试和系统运营时的状态监控。
步骤7(循环控制):继续通信,转步骤2;否则,转步骤8;
步骤8:通信结束。
6 结束语
本文提出一种分布式仿真的通讯方法,核心是通信软件总线。通信软件总线的通信节点接入方式简洁统一、规范,提供若干接入接口,设系统内的通信节点数为n,则在极端条件下,只有n条逻辑通信链路;仿真程序只需向中心程序发送数据而不必关心这些数据发向哪个具体仿真程序,只需接收中心程序的数据而不必关心这些数据来自哪个具体仿真程序,数据的路由完全由通信软件总线根据外部配置文件确定,从而实现了各仿真程序间的通信解耦,有利于仿真程序重用、提高开发效率;总线节点(计算机)可配置多块网卡,通信软件总线通过外部配置文件支持多网卡使用,通过数据包整合减少通信数据冗余,有效消除数据拥塞,提高通信效率;通信软件总线通过数据集中、整合,便于系统开发时的调式和系统运营时的状态监控;外部配置文件隔离了具体仿真系统的通信变化,通过简单地修改外部配置文件,通信软件总线便可应用于任何仿真系统,可大大提高工程开发效率和系统可靠性。
参考文献
[1] 邬国安,赖兰剑,张大海,陈鼎才.分布式仿真系统的自适应通信中间件设计[J] .西安:计算机技术与发展,2012,21(12):75-79.
[2] 何波玲,张志春,徐坤.设备密集型系统的硬件控制体系结构[J].信息安全与技术,2015,6(2):63-64.
[3] Michael J. Donahoo, Kenneth L. Calvert.: TCP/IP sockets in C : practical guide for programmers, 2nd Edition[M].Morgan Kaufmann Publishers, San Francisco 2009.
.Microsoft Press, Washington 2011.
作者简介:
何波玲(1965-),女,吉林长春人,长春金融高等专科学校计算机系,副教授;主要研究方向和关注领域:计算机软件。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回通信学论文列表