张渊博 黄硕 (海军潜艇学院,山东 青岛 226071)
摘 要 通过对仿真模拟器网络通信系统结构的分析,解析软件实现方法,给出了关键技术。 关键词 US3公用数据区;模块说明文件;C语言结构
1 引言
计算机、网络及通信软件是模拟器仿真系统的基本软、硬件平台,是实现仿真的基础。我们按可靠适用的原则架构仿真系统网络,采用标准的通信协议和模块化的程序设计方法设计实时、可靠、灵活的网络通信软件,以满足模拟系统功能和性能的需要。
2 功能
仿真模拟器系统具有综合/组合仿真的功能,计算机、网络与通信软件是实现系统各项功能的基础和不可或缺的组成部分。概括起来,计算机、网络与通信软件的主要功能包括从仿真主计算机Origin2100到教控台图形工作站的Unix (SGI IRIX6.5)计算机间的通讯;从仿真主计算机到辅控台图形工作站的Unix (SGI IRIX6.5)计算机间的通讯;从仿真主计算机到工业PC的Unix与Windows 9x计算机间的通讯;从仿真主计算机到软台屏计算机的Unix与Windows 9x计算机间的通讯;从仿真主计算机到数据库PC的Unix与Windows NT计算机间的通讯;从教控台图形工作站到综合显控台计算机的Unix与Windows NT计算机间的通讯。从辅教控台图形工作站到综合显控台计算机的Unix与Windows NT计算机间的通讯。
3 组成
通讯软件的组成如表1所示。
表1 通讯软件的组成
在上述模块中,每一个模块将包括多个通讯线程:数据的接收线程;发送线程;SOCKET线程;数据处理线程;通讯监控线程。上述线程的工作方式按FIFO(先进先出)方式进行。整个通讯软件的组成如图1所示。
4 软件设计
4.1 网络通信软件的类型
本系统网络通信软件可分为两种类型,一种是UNIX-UNIX之间的通信,另一种是UNIX-WINDOWS之间的通信。
4.1.1 Unix-Unix
Unix-Unix间的通信是指运行于IRIX操作系统上的US3仿真平台与M/IS软件间的数据通信,US3 将仿真的计算结果等传送给M/IS,供主教控台、辅教控台进行监视,M/IS发送指令信息给US3来控制仿真任务的进程。其实现方式采用共享内存技术,即US3和M/IS间交互的数据全部存放在仿真主机共享内存区,供US3下的仿真进程和M/IS进行访问。M/IS和US3均为GSE公司产品,该功能已由GSE公司实现。
4.1.2 Unix-Windows
Unix和Windows之间的通信可以分为以下几种情况:
(1)当通信两端分别为仿真主机和工控机时,仿真主机从工控机获得模拟硬台屏的开关和设备的状态等参数,工控机则从仿真主机获得模拟硬台屏显示的变量参数、教控台指令等。它们两者间的通信是核动力仿真通信的主体部分,该通信具有连续性和周期性的特点,必须可靠地优化设计和实现。
(2)当通信两端分别为仿真主机和模拟软台屏计算机时,仿真主机从软台屏计算机获得模拟软台屏开关和设备的状态等参数,模拟软台屏计算机则从仿真主机获得模拟软台屏显示的变量参数、教控台指令等。在模拟软台屏计算机端,通信程序还需通过动态数据交换机制(DDE)方式和模拟软台屏界面程序进行数据交换,交换媒介为通信点表文件。
(3)当通信两端分别为教控台图形工作站和接口计算机时,教控台图形工作站从接口计算机获得系统指令,并将指令显示给教练员。接口计算机则从教控台图形工作站获得教练员的反馈,两者间的通信是非周期性的和异步的。
4.2 US3仿真平台下的网络通信程序设计考虑
在此以仿真主机端的通信模块与软台屏计算机端的通信模块间的通信为例进行说明。仿真主机与软台屏计算机进行通讯联系,接收仿真所需的数据并写入到公用数据区,同时将公用数据区的数据发送到软台屏计算机。
4.2.1 US3仿真平台下的程序开发
在US3系统下有两种程序开发方式:在US3系统内进行程序开发以及在US3系统外进行程序开发,在本通讯软件中使用US3系统内的程序开发方式,使用开发语言为C语言。US3系统内的程序开发遵循一个固定的程序结构和固定的程序开发模式。
4.2.2 公用数据区(MDD)
公用数据区是由系统所指定的一块特定的内存区域,在系统中运行的所有程序都可以通过这一片内存区域进行数据变量的共享和存储。在公用数据区中的数据又可以分为两种级别:系统级的和用户级的。用户级的数据只有定义该变量的用户才能使用,系统级的变量可以共系统内的每一个用户进行使用。在进行程序开发之前必须先使用MDD命令将程序所需要使用变量添加到共享数据中。
4.2.3 模块说明文件(MSF)
模块说明文件是一个US3系统内的程序的一个文件表格,在表格内包含有每一个程序模块的相关信息,US3系统可以通过该文件来管理系统内存在所有程序模块。与公用数据区类似所有需要在US3系统内运行的程序模块都需要先使用include添加到MSF中。 4.2.4 C语言程序的结构
在US3系统内的程序遵循一个特定的程序结构和编译/执行方式。该程序不同于通常结构的c语言程序,它无须由main()指定一个主程序,添加到模块说明文件(MSF)中的模块名称就是该程序的主程序。程序在开始时必须有一段说明,在说明中使用program描述本程序提供给其他程序调用以及MSF使用的名称,使用global描述在本程序中所需要调用的公用数据区的数据变量,使用module描述在本程序中所需要调用的其他的程序模块的名称,并且必须引用一个与本程序名称相同的函数库文件。
例如:
/*program test */ 程序模块的名称
/*global test1 */ 需要调用的公共变量,一次只能指定一个
/*module test2 */ 需要调用的程序模块的名称
#include “test.h”
void test()
{ … }
4.2.5 执行程序模块
程序有两种执行方式:由ISD将程序xx,此时程序的执行方式为互交执行方式(IEXEC)。由MSTxx执行,此时运行的程序为实时运行方式(RTEXEC)。在这种运行方式下,程序由实时控制器进行管理,按照预先约定的执行频率进行重复的执行,管理器分配给程序一定数量的cpu时间片,程序必须在该时间以内完成,如果超时程序将被系统中断。 4.2.6 程序功能的实现
在仿真主机端,利用BSD SOCKET API建立服务端Socket并绑定服务器IP地址和通信端口,侦听通信请求,在软台屏客户计算机端利用WINSOCK API建立客户端Socket,并向服务器端发起通信请求。服务器端收到通信请求后进行必要的分析,并将有关仿真数据写入到相应的公用数据区中,然后,逐个扫描公用数据区的数据,将需要发送的数据合并后,再传给软台屏计算机处理。
5 关键技术
(1)本仿真系统的计算机系统是一个由SGI计算机和PC组成的计算机系统,其中操作系统UNIX (SGI IRIX6.5)、Windows NT、Windows9x,针对这样一个由异种机组成的计算机网络系统,要采用适用的通讯协议来实现整个网络的数据通讯。
(2)由于仿真运行平台中使用了GSE的US3、MIS软件,而US3、MIS本身是一个非开放式商业软件,要在这样一个业已封装好的软件中实现与其它计算机的通讯,必须掌握US3 、MIS的通讯机理。
(3)由于软台屏计算机中使用了INTOUCH软件开发的软台屏界面,INTOUCH软件规定了软台屏界面与相应通讯模块的通讯方式是动态数据交换机制(DDE),中间连接媒介为通讯点表文件,相应通讯模块的编制必须考虑使用DDE技术。
6 结束语
计算机大型模拟仿真系统具有多平台、多系统、结构复杂的特点,只有满足标准化、模块化和通用化特点的网络通讯软件,才能保证整个模拟训练系统的高可靠性和可扩充性,实现仿真系统可以持续升级使用的目的。
参考文献
[1] 佟震东,余雪丽,陶世群.现代计算机网络教程[M].北京.电子工业出版社.1999.2
[2] 马正午,周德兴.过程可视化组态软件InTouch应用技术(M).机械工业出版社.2006.06 收稿日期:4 月 9 日 修改日期:4 月 28 日
作者介绍:张渊博(1980-),男,助理工程师,主要研究方向:网络数据库及网络管理。
文章来源: