摘 要:利用Simulink和OPNET设计并实现的无线AD Hoc网络系统的交互式仿真平台利用Simulink实现控制器和控制对象的仿真;利用OPNET模拟真实的网络环境;采用MATLAB引擎接口技术连接Simulink仿真对象和OPNET网络模块,实现了Simulink和OPNET的联合仿真,既发挥了Simulink强大的系统建模功能,又利用了OPNET网络仿真的优势。仿真实验表明,该平台克服了OPNET中仿真环境过于理想化的不足,能使仿真结果更加真实可信,从而证明了交互式仿真平台的有效性。
关键词:无线AD Hoc网络系统;仿真平台;OPNET;Simulink;引擎接口
中图分类号:TN929.5;TP391.9 文献标识码:A 文章编号:2096-4706(2018)11-0049-05
Research on the Interactive Simulation Platform for Wireless AD Hoc Networks
ZHANG Lin
(College of Electric and IT,Yangzhou Polytechnic Institute,Yangzhou 225127,China)
Abstract:The interactive simulation platform of wireless AD Hoc network system designed and implemented by Simulink and OPNET,and uses Simulink to realize the simulation of controller and control object. OPNET is used to simulate the real network environment,and MATLAB engine interface technology is used to connect Simulink simulation object and OPNET network module to realize the joint simulation of Simulink and OPNET. Simulation results show that the platform overcomes the shortcomings of over-idealized simulation environment in OPNET,and makes the simulation results more authentic and credible,thus proving the effectiveness of the interactive simulation platform.
Keywords:wireless AD Hoc networks;Simulink platform;OPNET;Simulink;engine interface
0 引 言
利用无线通讯网络实现地域上分布的、可移动的现场传感器、控制器及执行器之间的信息相互交换,以达到对被控对象的实时反馈控制,这样的一类网络系统近年来受到了广泛关注,它叫做无线AD Hoc网络,也称为无线自组织网络。与传统的点对点或有线网络控制系统相比,无线AD Hoc网络具有可实现资源共享、高诊断能力、增加系统灵活性和可靠性等优点,然而由于受网络带宽及数据包大小等物理限制,网络中的信息传输会不可避免地产生时延、丢包和时序错乱等现象,这使得对系统的分析、设计及仿真变得复杂。为了更好地研究无线AD Hoc网络,必须进行仿真实验[1]。因此设计和实现一个仿真平台对进一步地发展无线AD Hoc网络系统具有重要的研究意义。
1 无线AD Hoc网络系统仿真
仿真是无线AD Hoc网络系统研究领域的一个重要组成部分,对无线AD Hoc网络的仿真应做到既能支持控制系统的建模,又能进行网络部分的仿真,但目前很少有同时支持这两方面功能的软件,因此如何将控制系统的仿真软件与网络仿真软件进行有效结合从而构建一个联合仿真平台就成为了仿真研究的发展方向。
一个理想的仿真平台应同时具备如下品质[2]:真实性、灵活性和扩展性。基于以上几点,本文设计了结合控制系统仿真和网络仿真的实时仿真平台——基于Simulink和OPNET的联合仿真平台。OPNET作为一种应用广泛的网络仿真平台,它采用离散事件驱动机制,仿真效率高,能够为网络系统的建模提供良好的开发环境。但OPNET并不具备对控制系统仿真的能力,而Simulink对控制系统则拥有强大的仿真能力,如果能使用接口技术使二者结合起来,形成一个功能更加全面的综合仿真平台,将是一件很有意义的事。在此基础上搭建的仿真平台将会具有较强的系统建模能力和较真实的网络环境,能实现对控制系统和网络参数进行综合仿真,能够为网络控制系统的稳定性、实时性等理论研究提供仿真实验。整体设计思路如图1所示。
2 Simulink 和OPNET Modeler协同仿真架构
为了实现Simulink和OPNET之间的数据交互,本文采用MATLAB引擎(Engine)接口技术[3]来实现OPNET与MATLAB的连接。
MATLAB引擎是指一组由MATLAB提供的支持C、C++、Fortran等语言的接口函数,通过这些接口函数,用户可以在其他编程环境中实现对MATLAB的控制。它采用“客户机/服务器”的计算模式,在具体应用中,由MATLAB作为ActiveX服务器在后台运行,而应用程序作为前端客户机通过引擎与MATLAB进行交互。
基于Simulink和OPNET联合仿真的结构如图2所示,它由MATLAB、联合仿真模块Cosim、OPNET及其扩展组成。要运行联合仿真必须建立外部系统(external system)的代码。Cosim作为OPNET的外部模块,是需方程序与OPNET之间的桥梁。联合仿真的思想是[4]利用OPNET的外部系统定义ESD(External System Definition)的对外接口和中断,通过OPNET中的ESYS外部模块来实现OPNET与Cosim之间的数据交换,OPNET根据仿真描述SD文档将OPNET中通信模型与Cosim代码联合静态编译,形成一个可独立运行的仿真程序。
3 Simulink和OPNET联合仿真的同步机制
本文搭建的仿真平台是采用Matlab引擎接口技术来实现OPNET和MATLAB之间的数据交互,以期望构建一个比原系统更为真实的网络仿真环境,得到更为客观的仿真结果。根据设计思想可知,网络部分的设计和控制部分的设计是完全独立的,所以用户可以在Simulink中对控制对象、控制器等进行建模,在OPNET中进行网络架构的设计。联合仿真具有模块化的功能,能适用于任何无线AD Hoc网络系统的仿真。Simulink和OPNET的连接结构见图3。
在仿真过程中,Simulink和OPNET要进行互动,但Simulink采用的是时间驱动机制,而OPNET采用的是离散事件驱动机制,如何使两者的仿真时钟达到同步就显得尤为关键。联合仿真由OPNET来主导仿真时间,当OPNET开始执行仿真时,在0时刻停止,此时OPNET的节点调用相应的Simulink模型。初始化后,Simulink的控制对象模型会在0时刻停止,OPNET继续执行并在采样时刻T1停止。这时,OPNET会给Simulink的控制对象模型传递一个命令让它也执行到T1停止。当Simulink在T1时刻暂停后,OPNET的节点会从Simulink模型中读取状态数据并产生采样数据包。
传感器到控制器的延迟加上控制器到执行器的延迟称为系统总的闭环延迟,记为t1。控制对象节点会在T1+t1接收到控制器发出的数据包,然后OPNET会向Simulink控制对象模型发出命令,让其用先前的输入u0执行到T1+t1时刻停止,在T1+t1时刻,Simulink的控制对象模型会暂停,控制信息的输入模式会从u0变成u1[5]。当Simulink执行完毕,OPNET会继续以这种方式运行。如图4所示。
4 仿真方案设计
OPNET Modeler[6]对无线信道建模采用了管道过程框架,这一框架虽然能正确地反映无线传输的过程,但默认模型库中的实现却不太准确。一方面,模型库中的实现忽略了信道上信息速率与空中速率的区别,造成只能适用于这两种速率相同的信道,如采用BPSK、QPSK等二进制调制方式的信道;另一方面,该实现对传输中的多径、衰减、背景噪声、热噪声、环境的模拟需要传播模型共享库的支持,而OPNET Modeler提供的传播模型非常有限,只有TIREM、Longley-Rice、Freespace三种,其他常用的如Rayleigh模型、AWGN模型就需要用户定义[7]。但Rayleigh模型和AWGN模型是最基本的模型,它们对通信信道的传输性能有着深远的影响,如果能够将这些模型导入到信道中来,对扩大仿真的应用领域,提高仿真结果的正确性就会有很大的帮助,同时克服了目前OPNET中仿真环境过于理想化的不足。幸运的是,MATLAB中有很多现成的资源,它们可以很容易地与其他编程语言或仿真软件进行结合,实现复杂的科学计算和仿真。如果能将OPNET和MATLAB二者有效结合,就能充分利用这些资源,这无疑会对提高仿真结果的真实性和可信度有极大的帮助。
本文所建立的管道过程能识别具体的调制方式,在传输前能将数据的比特数换算为符号数,使收发机的速率能正确反映空中速率,并能将当前调制方式、信噪比条件传递给MATLAB,并利用其模拟调制、添加高斯白噪声、计算瑞利衰减、解调等过程,得出数据包的某段上的误比特数,并不断累积,最后得出整个数据包的具体误比特数。接收时将数据包的符号数转换为比特数,并根据此误比特数算出误比特率,判断是否超过纠错门限,超过的数据包不予接收。
本设计方案大体分为四个阶段,即编制管道阶段实现函数、编制进程模型、建立节点模型、编制想定。
4.1 编制管道阶段实现函数
这里需要编写三个管道阶段函数和一个外部文件,分别命名为“matlab_err”、“matlab_txdel”、“matlab_ecc”和“pipe_support”。外部文件“pipe_support”的作用是控制Matlab的函数,将与MATLAB引擎的交互和管道阶段实现函数区分开。“matlab_err”阶段实现函数编译前要声明对外部文件“pipe_support”的引用,这几个函数要先放到op_models文件夹里,然后逐个编译,直至全部编译通过。
4.2 编制进程模型
为了控制MATLAB引擎的开启和关闭,我们需要建立一个进程模型,名称为“engine_connect”,在Header Block中定义如下:
#include “engine.h”
Engine *ep;
仿真开始时打开 MATLAB引擎的程序在“run”状态的“Enter Execs”中完成:
if(op_intrpt_type()==
OPC_INTRPT_BEGSIM)
{
if (!(ep = engOpen(“0”)))
{
op_sim_end(“t start MATLAB engine”,
””,””,””);
}
}
else if(op_intrpt_type()==
OPC_INTRPT_ENDSIM)
{
engClose(ep);
}
4.3 建立节点模型
在本文的仿真场景中需要建立两种节点模型,分别名为“matlab_starter”和“matlab_node”。第一个节点模型就是包含了一个进程模型为“engine_connect”的进程模块;第二个节点模型直接由OPNET中的“wlan_wkstn_adv”模型另存后改动得到,把“wlan_port_rx0”模块中的“error model”属性设置由原来的“wlan_err”改为“matlab_err”,把“ecc model”属性设置由原来的“wlan_ecc”改为“matlab_ecc”,把“waln_port_tx0”模块中的“txdel model”属性设置由原来的“wlan_txdel”改为“matlab_txdel”,把“ecc threshold”的属性值由0.0改为0.5。
4.4 编制想定
在10m×10m的范围内放置1个“matlab_starter”节点,50个“matlab_node”节点,1个服务器,各节点采用AD Hoc模式,路由协议采用AODV协议,业务产生采用ON-OFF模式。
5 仿真结果分析
在运行过程中,任务栏上会显示MATLAB引擎的图标,运行结束后会自动关闭。我们开展了采用联合仿真的前后对比实验,先后比较了无线网络中的时延(Delay)、总丢包数(Total Packets Dropped)、媒介存取延迟(Media Access Delay)、吞吐量(Throughput)这些性能指标,仿真时间设定为1小时。
图5和图6是联合仿真前后的网络拓扑对比图,图5采用的是“wlan_wkstn_adv”节点,图6采用的是“matlab_starter”和“matlab_node”节点,在图6中,通过使用MATLAB引擎接口技术实现了Simulink和OPNET的数据交互。
图7-10是联合仿真前后的仿真结果对比图,实线表示联合仿真前的仿真结果,虚线表示联合仿真后的仿真结果,从图中可以看出,两条曲线存在很大的差别,这就说明了通过联合仿真所引入的Simulink中的模型,如Rayleigh模型、AWGN模型确实对无线信道的数据传输产生了影响,改变了各个方面的仿真结果,使得仿真更加贴近真实的无线网络传输环境,由此得到的仿真结果更能真实地反映网络性能,更加使人信服。
6 结 论
本文根据交互式仿真的整体设计思想,结合Simulink和OPNET两款软件的特点,利用MATLAB引擎接口技术,成功实现了Simulink和OPNET的联合仿真,组成了一个完整的交互式仿真平台,该平台融合了控制系统的建模与网络的实时调度等优点,具有较强的系统建模能力与网络仿真的功能,仿真结果也显示了交互式仿真平台的优越性,从而为无线AD Hoc网络的研究人员提供了一款优秀的仿真平台。
笔者未来的研究方向是建立更加复杂的无线AD Hoc网络仿真平台使其更具有推广性,同时要考虑进一步地提高系统的仿真速度。
参考文献:
[1] 王庆凤,陈虹,王萍.基于NS2的网络控制系统仿真平台的设计与实现 [J].系统仿真学报,2011,23(2):270-274+309.
[2] 李洪波,吴凤鸽,孙增圻,孙富春.网络控制系统仿真平台的设计与实现 [J].系统仿真学报,2006,18(6):1700-1704.
[3] 马荣国,李平凡.Matlab接口技术及仿真随机数的生成 [J].长安大学学报(自然科学版),2003,23(6):111-114.
[4] C.Harding,A.Griffiths,H.Yu. An Interface between MATLAB and OPNET to Allow Simulation of WNCS with MANETs [C].Proceedings of IEEE International Conference on Networking, Sensing and Control,2007:711-716.
[5] HASAN MS,YU H,CARRINGTON A,et al. Co-simulation of wireless networked control systems over mobile ad hoc network using SIMULINK and OPNET [J].IET Communications,2009,3(8):1297-1310.
[6] 王立平,崔智林,马力.基于OPNET仿真平台的MANET路由协议性能分析 [J].现代电子技术,2011,34(14):71-74.
[7] 高嵩.OPNET Modeler仿真建模大解密 [M].北京:电子工业出版社,2010.
作者简介:张霖(1983-),男,汉族,安徽宿州人,高校教师,硕士研究生。研究方向:网络建模与仿真。