本文介绍了飞控系统半物理仿真平台通讯网络构建,采用标准以太网和反射内存网结合的方法进行通信,在保证系统实时性要求下,节省建设经费。并简要介绍基于C++Builder6.0开发环境中反射内存网、标准以太网的软件开发。
1、前言
飞控系统半物理仿真是型号研制和试验过程中的一个重要环节,飞控系统作为一种强实时性的系统,其半实物仿真是时间约束非常强的过程,其计算、数据通讯和关键信号的处理如果出现超时将可能导致整个仿真实验的失败。因此,实时算法和通讯技术的研究是半实物仿真系统的关键技术。
随着计算机技术和通讯技术的迅速发展,仿真主机的速度大大提高,为飞行器非线性动力学方程的高速、高精度求解提供了条件;其次,采用实时网络通讯技术,可以实现两结点数据传输时延迟为纳秒级或微秒级。
2、仿真平台构建
为保证飞控系统半物理仿真平台的可扩展性,系统构建时引入分布式布局的思想,不同于传统一对一的宿主机-目标机模式,设计一对多的分布式模式。基本结构如图1所示。采用RTW-xPC作为实时仿真的框架(仿真主计算机-仿真目标计算机模式),子任务被分布在系统的各个成员上,成员之间通过网络连接在一起,通过各子任务并发运行来提高解算速度,满足实时应用的要求。
飞控计算机一般每10ms读取一帧数据,这要求飞控仿真系统的仿真周期远小于10ms。最初的设计是通过以太网络完成计算机之间的数据传输,但是难以保证该飞控仿真系统强实时性的要求。以任一仿真目标机为例,若每毫秒产生1000个数据,按每数据大小4字节计算,其数据量4KB,按照千兆以太网的数据传输率,则在以太网络上的时间延迟32ms,无法满足系统实时性要求。反射内存网具有可高达170MB/s的数据传输率,在反射内存网上传输的时间延迟为24us,远低于1ms的要求。
图1 仿真平台基本结构组成
本方案采用标准以太网和反射内存网(内存映射网)结合的方法进行通讯。系统中对实时性要求不高的部分采用普通的以太网络传输;系统中实时性要求较高的部分采用反射内存网搭建。以太网卡实现计算机与局域网传输介质之间的物理连接和电信号匹配,主要针对飞控系统仿真过程中仿真主机-仿真目标机的网络通讯检测,以及实时仿真过程中接受控制信号和发送各种控制命令信号。反射内存网作为一种快速的实时网络,用来实现仿真目标计算机和信号转换计算机的数据交互。这样做的好处是既可以保证系统实时性要求,又能够节省建设费用,减少系统复杂度。
3、实时网络通讯系统
3.1反射内存网
3.1.1反射内存的概念
反射内存光纤网络采用了先进特殊的技术,具备很强的支持分布实时系统的数据传输能力。在每个需要实时通讯的节点上插入反射内存网卡(节点卡),反射内存卡上有一块专门的存储器,并且它们都映射在同一个地址空间,构成了分布式共享存储器。用户可以在分布式共享存储器中定义多个全局公用的数据存储区。当某个节点的处理器对存储器进行了“写”操作,接口板将修改的数据通过光纤自动实时的写到另一节点的对应存储器中,这样,另一节点的用户只需读取本地接口板上的相应的存储器就可以获得修改的数据。采用反射内存通讯方式的好处是:数据传输速度快,读/写操作延时为纳秒级,能够大大降低总的网络延时,减小仿真周期,满足系统的实时性要求。在反射内存网上,节点之间的通讯对软件是透明的。用户不需采用消息传递方式进行节点间的通讯,只需在本机系统中对共享存储器进行直接读写操作就可实现多机之间的通讯,大大简化了应用软件结构的复杂度,减少了用户的编程负担,能准确地算出节点之间通讯的最大延迟时间。
3.1.2反射内存网络构建
本方案采用的VMIC5565反射内存(RFM)是基于环状/星状的,高速复制的共享内存网络。它支持不同总线结构的多计算机系统,并且可以使用不同的操作系统来共享高速的、稳定速率的实时数据。
VMIPCI-5565反射内存卡可以不通过HUB直接构成环形拓扑结构的连接,也可以通过HUB构成星型拓扑结构的连接,每个结点的TX接口同下一个结点的RX接口交叉连接。这种环形拓扑结构的连接可靠性不如星型拓扑结构的连接,因为环网中任一个节点出现故障会造成整个实时网络联接中断,而星型拓扑结构下不存在这样的问题,考虑到平台节点较多,故采用星型拓扑结构的连接。
3.1.3反射内存卡使用
VMIPCI-5565反射内存卡之间或与智能型HUB之间通过两条光纤进行数据传送。其中TX插口连接发送光纤,RX插口连接接收光纤。在组网前,需要对每块反射内存卡进行统一编址,不同计算机扩展槽内的VMIPCI-5565板卡必须具有不同的地址,此地址的分配是通过板卡上的跳线来选择的。地址跳线总共有8条,通过这8条地址跳线可以选择0~255总共256个地址范围。
建立反射内存网络的通讯设计,在WindowsXP系统下安装反射内存卡驱动程序,然后在C++ Builder 6.0开发环境中添加VMIPCI-5565反射内存卡的头文件:rfm2g_windows.h,rfm2g_api.h和库文件到工程文件路径。至此完成了反射内存网配置。
在C++ Builder控件中添加时钟控件,利用时钟周期性(周期可设置)工作的原理,在时钟控件下进行程序设计,实时的通过反射内存卡完成数据通讯,具体方法:
a)先自定义反射内存卡设备名称,再申明句柄RFM2GHANDLE RFM2gHandle;
b)系统启动完成后,打开反射内存卡端口,调用函数:RFM2gOpen(char *DevicePath,&RFM2gHandle);
c)在时钟控件中通过执行函数语句RFM2gRead(RFM2GHANDLE rh,RFM2G_UINT32 Offset,void *Buffer,RFM2G_UINT32 Length)从卡地址读取指定长度的数据,至此完成了数据的获取;
d)同样,如果用户需要给反射内存卡地址写入数据达到数据共享,只需执行函数语句RFM2gWrite(RFM2GHANDLE rh,RFM2G_UINT32 Offset,void *Buffer,RFM2G_UINT32 Length)即可;
e)数据校验:当通过反射内存网接收实时数据时,对每个节点的参数变量值进行求和方法计算,将得到和值与接收到的校验和信号值进行比较,如果两个值差值的绝对值小于10-4,则认为数据接收正确,否则丢掉这一包数据。
3.2标准以太网
由于标准以太网已普及使用,在此不对其概念做详细说明。建立以太网的通讯设计,需要先在网络连接中的TCP/IP属性中设置协议约定好的IP地址,子网掩码和默认网关。然后用C++Builder的网络通讯控件IdUDPServer和IdUDPClient,以及IdIcmpClient建立通讯。
a)作为客户端应该在程序设计中设置IdUDPClient需要请求连接目标机的地址和端口,即设置控件的Host和Port属性,并用Open函数打开IdUDPClient控件或者将Active属性设置为true。
b)作为服务器端,需要设置接收数据端口,必须与客户端端口一致才能正确建立通讯,同时还必须用Open函数打开IdUDPServer控件或者将Active属性设置为true。建立客户服务器之间连接之后,就可在程序设计上实现数据通讯了。
c)IdIcmpClient主要是在网络通讯检测中用到。可以设置该控件IP地址属性,然后调用ping函数,在Reply事件中得到返回值进行网络连通性检测判断。
4、结论
本文主要介绍了飞控系统半物理仿真平台通讯网络构建,并给出了具体的通讯协议及注意事项。该半实物仿真平台经使用验证,具有通信实时性好,数据传输速度快,传输可靠性高的特点,满足实时仿真需要,取得了良好的效果,被实践证明是一种成熟、有效的方法。
作者:涂晋 张震 来源:科技与企业 2016年4期
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回通信学论文列表