监视雷达信号仿真模型通用框架设计
2019-10-16王燊燊车万方
王燊燊 赵 晶 车万方
(1.中国人民解放军93110部队 北京 100038;2.北京赛博天网防务技术有限公司 北京 100041)
0 引言
监视雷达仿真在防空反导武器效能评估、弹道导弹攻防对抗仿真等应用领域起到至关重要的作用。建立雷达仿真模型通用框架是降低模型开发成本、提高开发质量的必然途径。本文提出一种监视雷达信号仿真模型通用框架设计方法,该方法以监视雷达仿真模型为研究对象,分析了监视雷达信号处理流程,建立了监视雷达信号仿真模型体系结构,通过面向对象技术、软件设计模式等,设计了模型外部接口和内部结构,并进行了实验研究。这种方法可在后续雷达模型开发中充分利用过去积累的模型成果,减少重复开发的过程,从而保证仿真模型的开发质量、降低开发成本。
然而,现有雷达仿真建模文献大都将研究重点放在模型内部算法的实现上[1-5],很少有文献论述雷达仿真模型的通用框架设计。为减少重复劳动,实现监视雷达信号仿真模型的重用性,本文重点研究雷达仿真模型框架的设计方法,为各种监视雷达仿真模型提供一种通用的软件框架。采用UML类图来描述系统结构,通过设计模式封装系统的可变部分。最后通过几种典型监视雷达工作样式对系统设计进行了验证。
1 监视雷达信号仿真模型体系
1.1 监视雷达信号处理流程
对监视雷达进行信号级仿真建模,首先要清楚其工作过程和信号处理流程。通过对监视雷达作战使用进行分析可知,监视雷达开机后,通过预定的天线扫描方式,向指定空域发射电磁信号,电磁信号在大气中传输,遇到目标后产生电磁散射,部分散射能量通过大气传输到达雷达接收天线,产生回波信号,对回波信号分别进行接收机处理和信号处理,得到探测目标的点迹,该点迹进入雷达航迹管理模块,进行航迹的起始、状态更新和航迹终结,同时在显示器上输出相应的航迹和点迹状态信息。其工作流程如图1所示。
由图可知,监视雷达探测目标过程可分为信号发射和信号接收两部分。信号发射部分主要是通过雷达发射天线将电磁信号辐射到大气环境中,通过电波传输后,到达空中目标,在目标处产生后向散射,生成目标回波信号。信号接收部分主要是生成的目标回波信号通过电波传输,叠加上地海杂波信号后,达到雷达接收天线,然后对接收的信号进行接收机处理、信号处理、数据处理和抗干扰处理后,提取目标有用信息,并输出至显示设备进行综合显示。
1.2 监视雷达信号仿真模型体系结构
根据对监视雷达信号处理流程的分析,结合信号/信息处理流程划分,可将监视雷达信号仿真模型分为天线、发射信号、电波传输、地海杂波、回波生成、接收处理六大类,具体如图2所示。
图2 系统模型体系结构图
天线模型用于仿真雷达天线,主要对雷达天线指向、天线方向图和发射或接收增益进行计算;信号发射模型综合考虑雷达信号样式、发射功率、发射波形等典型因素,完成发射信号模拟;电波传输模型用来描述地表地面反射、电磁波衍射、大气层对雷达波的弯曲和折射、对雷达波能量的衰减和吸收、多径效应以及其它传输信道的影响效应;地海杂波模型依据雷达的技战术参数和工作状态,采用距离-方位二维网格划分的方式,对雷达主瓣、旁瓣波束照射范围内的杂波RCS进行计算,根据后向散射系数、幅度分布、功率谱,产生相参地海杂波回波序列;回波生成模型综合考虑雷达散射截面积及其统计描述、目标起伏模型、相对运动速率等状态参数,通过回波功率计算、传播延时计算、多普勒频率计算、遮挡效应计算、距离波门选通计算等一系列模型解算,生成到达监视雷达接收天线前端的目标回波信号;接收处理计算模型按照典型的信号/信息处理流程,首先对接收天线处的信号进行相干合成,然后完整地执行雷达的接收机处理、信号处理、数据处理和抗干扰处理等操作。接收处理是模型的核心,通过模拟实际雷达系统的工作过程,生成相应的中间过程数据、任务评估数据,从而为定量评估雷达系统的作用距离、探测精度、多目标跟踪、航迹管理等典型战技指标提供数据支撑。
2 可复用监视雷达信号仿真模型框架设计
仿真模型复用是指在新仿真模型的开发过程中,利用已有的、可重用的软件成分来构造和生成新的仿真模型,为了复用目的而设计的仿真模型被称为可复用仿真模型。对监视雷达信号仿真模型进行可复用设计,能有效提高模型开发效率,减少开发代价。在新的仿真模型开发中可以充分地利用己有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动。仿真模型复用的主要思想是,将模型看成是由不同功能部分的“构件”所组成的有机体,每一个构件在设计编写时可以被设计成完成同类工作的通用工具,这些可复用构件包括对象类、框架或者软件体系结构等。
2.1 外部接口设计
外部系统使用监视雷达仿真模型时,并不关心模型内部的工作流程,而只关心模型与外部系统的交互。对仿真模型建立一个外观类既是仿真控制的需要也是提高复用性的需要。外观类中的接口提供的内容应根据仿真需求中对仿真控制的要求制定,同时也应尽可能多的将雷达仿真模型内部能够提供的信息暴露出来。一旦使提供的信息最大化,那么当遇到不同监视雷达仿真需求时,就可以不用或是较少地修改接口,进一步提高复用性。
通过分析可知,外部系统在使用监视雷达雷达信号仿真模型时,首先要对其进行初始化和位置、状态等信息的设置,然后在仿真过程中,需要在每个仿真步长中输入环境信息,执行雷达解算后,输出雷达的状态信息、探测信息和受关注的采样信号信息等。因此,监视雷达信号仿真模型接口主要有初始化、设置雷达位置和开关状态、输入环境信息、执行一步解算、输出雷达状态、输出扫描点迹、输出航迹信息、输出采样信号,在该模型的外观类中应该包含这几个接口的函数,但不提供模型内部接口。确定了监视雷达仿真模型的对外接口后,就可以设计其外观类了。外观类一般被仿真主控调用,且外观类通过对子系统的操作来实现其接口功能。监视雷达仿真模型的外观类结构设计如图3所示。
图3 监视雷达仿真模型外观类结构
在该设计中,监视雷达仿真模型中包含了其主要接口,这些都是供外部系统调用的,这里并未对接口的输入参数、输出参数、返回类型等进行详细定义,也没有对外观类的成员变量进行定义,关于这些内容在后续设计中给出,本节只给出系统架构设计的主要内容。
在根据需要设计好外观类后,利用外观模式对仿真系统进行封装,使得调用雷达仿真模型的主控避免直接与其内部的交互类和子系统类打交道,隔离了繁琐的细节,提高了仿真模型复用性。具体代码为:
classSurveillanceRadar
{
public:
void Initialize(RadPararadPara)//初始化
void SetSwitchState(bool state)//设置开关状态
void SetRadPos(Position pos)//设置雷达位置
void SetEnvirInfo(vector
void RadExecute();//一步推进
boolGetRadState();//得到雷达状态
vector
vector
vector
……//其他指令和信息接口
}
接口类中各接口在实现时通过调用子系统中的相关操作来实现其功能,避免了客户端直接与雷达仿真模型内部的细节交互,从而提升了雷达仿真模型的复用性。
2.2 内部结构设计
进行可复用设计的关键是对系统的易变部分进行分离。在一个复杂系统的可复用设计中,通常将整个系统划分为多个相对独立的子系统,这对于隔离变化是非常有利的[6]。根据监视雷达信号处理流程,监视雷达信号仿真模型主要包含六个部分:天线模型、信号发射模型、电波传输模型、回波生成模型、地海杂波模型和接收处理模型。其中天线模型主要确定天线指向、模拟雷达天线方向图和计算增益;信号发射模型主要确定发射信号样式、计算发射功率、确定发射波形;电波传输模型主要对电波在大气中的衰减、折射、衍射和多径进行模拟;地海杂波模型用于计算雷达地海杂波信号,通过对雷达照射地域进行网格剖分,计算每个网格的散射系数,得到综合的杂波信号;回波生成模型对目标回波进行模拟,通过目标的RCS特性,计算回波功率,并通过雷达和目标的相对运动状态信息,计算信号传输延时和多普勒效应;接收处理模型首先对目标回波和地海杂波信号进行相干合成,生成接收天线前端信号,然后对该合成信号进行接收机处理、信号处理,得到探测点迹信息,最后进行数据处理,从而更新目标航迹信息。监视雷达信号仿真模型对象层次结构如图4所示。
每个部分都是相对独立且功能相对固定,因此可将这六个部分作为六个子系统,在每个子系统中,处理方法是多种多样的,也就是每个子系统都是易变的。根据面向对象编程思想[7],可将监视雷达仿真模型视为几个子系统的组合。监视雷达仿真模型框架结构如图5所示。
图4 监视雷达信号仿真模型对象层次结构
图5 监视雷达仿真模型框架结构
在雷达仿真模型接口类中,只提供了仿真用例中列出的功能接口,而将六个子系统对象设置为私有变量,这就实现了对雷达仿真模型的封装。在某个子系统发生变化时,只需将相应的新的子系统替换原有子系统,这个新的子系统可以通过扩展得到,而对于雷达仿真模型的外部接口并不发生改变,因此通过外观模式设计提高了框架的复用性[8]。
雷达仿真模型接口类中,除了构造函数、析构函数、初始化函数、输入输出函数外,最重要的就是雷达执行函数RadExecute(),这个函数封装了雷达的全部执行流程,是雷达仿真模型的关键函数。通过分析可知,RadExecute()函数通过雷达初始化参数和输入的目标环境信息,并根据当前仿真时间来确定当前仿真步长内雷达探测到的目标点迹信息,同时通过数据处理算法输出目标航迹信息。RadExecute()函数执行的交互图如图6所示。
图6 RadExecute()函数执行的交互图
RadExecute()函数首先调用信号发射模型来生成发射信号,在生成发射信号过程中,通过天线模型来计算发射增益,然后依次生成回波信号、地海杂波信号,并通过电波传输模型来计算信号从发射到接收过程中的衰减和折射等效应,将回波信号和杂波信号输入接收处理模型,对接收天线前端的信号进行相干合成,通过天线模型计算接收增益,得到接收信号,分别进行接收机处理、信号处理和数据处理,得到中间过程信号、探测点迹和航迹信息。在这个过程中,RadExecute()函数将处理过程委托给下级子系统来处理,一方面简化了该函数的处理流程,另一方面实现了各处理环节的解耦,一旦某个子系统的处理方法发生变化,RadExecute()函数的执行流程无需更改,仅需要对该子系统进行扩展后重新实现新的处理方法即可,这进一步提高了整个模型的复用性。
在子系统设计中,为提高算法的复用性,将易于变化的部分分离出来,可采用策略模式进行设计。以接收处理模型中的数据处理子系统为例,它包含航迹起始、数据关联、状态更新、航迹终结四个关键算法,而且有多重实现方法,针对这四个模块,分别建立相应的抽象类,具体执行算法类再从各自的抽象类继承,以分离变化。采用策略模式对数据处理子系统进行设计,其类图如图7所示。
这里使用策略模式对数据处理中的航迹起始和数据关联模型进行了设计。航迹起始和数据关联算法均有多种,通过建立抽象基类接口,子类实现各自算法的方式,来增强模型的扩展性。算法类的基类一般定义为抽象类,抽象类是一种不能进行实例化的类,因此它只能作为基类使用。在抽象类中至少有一个没有实现的方法,这个方法需要留到子类中去实现,这样就提供了一种扩展机制。由于抽象类不能被实例化,它可以作为实现具体子类的模板,因此它可以被看作是一种支持设计的机制。抽象类规定了父类和子类的接口,当客户需要子类化抽象类并使用子类的实例时,他实际上将使用一个实现了抽象类接口的子类对象。
3 实验研究
为验证文中提出的设计框架,实现了几种典型的监视雷达信号仿真模型。在信号发射环节中的信号形式采用线性调频、相位编码和非线性调频,天线方向图类型采用高斯和余割平方。这样,一共可以组合为6种不同的监视雷达模型。分别采用传统方法和本文提出的通用框架来设计这6种算法,传统方法是对每一种监视雷达分别建立模型,不采用任何设计模式,而采用本文框架则是设计第一种监视雷达模型时工作量较大,而后续模型的实现非常便捷,分别从总代码量、新增代码量、代码重用率、更改代码量等方面进行比较,得到6种监视雷达仿真模型统计结果如表1所示。
图7 数据处理子系统模型类图设计
表1 设计方法通用性比较
信号形式线性调频相位编码非线性调频线性调频相位编码非线性调频天线方向图高斯高斯高斯余割平方余割平方余割平方代码总量本文方法264022768528230288662902229152传统方法229802332023456226842280323078新增代码量本文方法2640214281630115600传统方法2298045604822403616631520代码重用率本文方法080.2%87.6%83.7%100%100%传统方法067.8%63.3%56.7%88.5%90.6%更改代码量本文方法000000传统方法0232617402291518475
可以看出,在设计采用线性调频和高斯方向图的雷达仿真模型时,本文方法的代码量要高于传统方法,这是因为本文所提出的通用框架在首次设计时所采用的类较多,要花费更多的精力,因而也更具有扩展性。在实现后续的算法时,可以看出传统方法的总代码量、新增代码量、代码重用率和更改代码量都变化不大,代码重用率较低。而通过本文方法设计的框架来实现这些后续算法时,尽管代码总量较多,但是新增代码量不多,这部分新增代码仅仅是新算法产生的代码,原程序架构基本保持不变,代码的重用率较高,特别是在实现最后两种算法时,新增代码量为0,代码重用率达到100%,这是由于这两种算法的每个环节在前面都已经实现,不必再新增加代码,只需通过指定算法的构造器即可。另外,传统方法仅仅是代码有一定的重用性,对采用新算法的雷达,需要在原来基础上对代码进行更改,更改的过程很容易出错,大大降低了模型的维护性。而本文方法则无需对代码进行任何更改,只需在原来基础上进行扩展,有效提高了雷达仿真模型的维护性和通用性。
利用本文提出的设计框架,不同算法的实现只需对相关抽象类进行派生即可,而不必改动系统整体框架,而这可以保证系统的大部分代码能够重用。通过对以上算法的实现可以看出本文框架具有较强的通用性,且易于扩展。
4 结束语
本文研究了一种监视雷达信号仿真模型框架,在该框架中,系统中的易变部分和不变部分被隔离,通过策略模式来设计系统中的易变部分,通过工作模式来创建不同的算法对象。给出了监视雷达信号仿真模型结构,建立了其通用框架,对模型外部接口和内部结构进行了设计。实验证明本文提出的框架通用性强,且易于扩展,为监视雷达信号仿真模型的通用设计提供了一种新的思路。