*
(1.西华大学无线电管理技术研究中心,四川 成都 610039;2.四川省无线电监测站,四川 成都610039)
软件总线是以硬件总线为依据提出的,在异构的环境中,被看作具有独立功能组件的各部分串联在一起形成的一个完整功能系统[1]。最早研究的软件总线框架是STARS双生命周期模型[2]。随后:A.Fred 等[3]提出3个生命周期软件工程模型;D. Dikel等[4]提出双生命周期的改进模型;Mike Stark等[5]提出软件生产线开发过程模型。自2000年以来,软件总线概念在众多行业的各种异构系统平台中被广泛研究和应用[6-8]。
目前,国内无线电监测设备提供商有40余家,省级无线电监测网络系统使用不同提供商的各类无线电监测设备。在实际应用中,由于不同提供商的各类无线电监测设备之间的功能、作用和通信协议等各不相同,因此,无线电监测技术人员通常使用单一种类的无线电监测设备或者由同一提供商集成的无线电监测网络平台获取必要的监测数据,无法协同配合完成复杂监测任务[9]。随着无线电监测技术向自动化、网格化、智能化方向发展,无线电监测过程中多设备、多任务、自组织的相互调度已成为一种必然趋势[10],现有无线电监测网络系统的软件结构已不能满足上述发展需求。
本文借鉴软件总线的思想,设计无线电监测软件总线。该软件总线以监测系统构件库为基础,各个构件有序组合,在消息机制和调度机制的作用下,使不同监测设备间协调工作,共同完成复杂监测任务。文章以无线电考试保障监测任务为例,阐述无线电监测软件总线如何解决不同设备间数据无法正常交互的问题,以使不同设备执行不同的功能,并行触发,自组织协同作业,精确、高效地完成监测任务。
结合无线电监测的相关知识[11-12]和监测系统的整体设计,本文将软件总线应用于无线电监测系统中,设计了无线电监测软件总线,其结构如图1所示。图中软件总线如同插排,各个部分如同插头即插即用,各类设备之间通过总线自主“沟通”,最终完成应用层指令的任务。
无线电监测软件总线主要分为4部分:基于无线电监测任务的构件库、内部和外部设备连接交互的通信协议及适配器、消息机制和工作调度机制。
图1 无线电监测软件总线结构
在构件库中,构件按需求进行组装集成,形成特定的功能模块,各个功能模块通过标准的接口挂载在总线接口上。 当执行某复杂监测任务时,多个功能模块有序执行,前后功能模块具有衔接关系。软件总线的消息机制负责协调、组织、调用各构件组合,使其能够交替工作。当1条用户指令通过对外接口传入软件总线时,如图2所示,对外接口与应用层对接,指令按流向顺序执行。若需要交互数据,指令根据要求,自动将相关监测数据返回给应用层用户。
图2 无线电监测指令流向图
构件是实现单一功能的独立结构。在实际应用中,具体监测任务由各构件间的有序组合完成。软件总线通过调用相应功能的构件或构件组合实现与不同平台、不同协议的监测设备通信并解析获取的数据,然后按照系统内部协议的统一格式输出。其中, 通信和解析过程的每个步骤都会调用不同的功能构件。结构设计合理的构件库有利于构件的存储和外层共享内层构件,同时提高构件的复用率和检索速度[13-14]。
根据无线电监测任务要求,无线电监测软件总线的构件库分为系统构件库、通用构件库和功能构件库,如图3所示。
图3 无线电监测软件总线的构件库
系统构件库包括基本的数据结构(各种业务数据结构体定义)、数据类型、常数变量(如固定数值、字符串)等;通用构件库包括常用的监测数据处理方法,如数据分析方法、数据聚类算法、数据排序和查询算法等;功能构件库由基本监测任务(如频段扫描、中频测向等)及获取无线电监测系统自身运行状态的基本功能指令等组成。
在无线电监测软件总线中,通信协议负责数据帧格式和交互流程实现,适配器负责指令识别和数据转换。通过通信协议和适配器,设备“认识”接收到的系统指令,同时把设备数据“翻译”为系统内部可以识别的格式,保证系统与设备的正常交互,完成必要的通信过程(这个过程可能发生在不同平台、不同协议之间)。首先无线电监测软件总线的通信协议和适配器要确保各种异构协议的设备(如RMTP、SCPI等)可以像插头一样随意地与“插座”进行数据交互;其次,适配器具有一定的调度能力和管理能力,并且能够通过指令操作获得系统状态信息或设置系统参数等。
从图1可以看出,通信协议和适配器可以最大限度地集成无线电监测网络系统中的设备。如当A类设备要集成到无线电监测网络系统时,通过A类通信协议,将A类设备具有的功能构件添加到构件库中,同时把A类适配器“安装”到总线,这样软件总线就会把系统内部的指令转换为A类设备可识别的指令,并调用构件库中A类设备对应的功能构件完成与设备的交互,交互过程中会调用其他构件实现诸如数据分析、信号监测等功能。
本文适配器解析的指令分为4部分并以“;”作为分隔符,第1部分是指令ID,第2部分为设备(控制)ID,第3部分为功能类型,第4部分为任务类型。
例1考试保障监测任务指令的解析与工作过程。指令内容为: 0002;61007500;TKNEW;FSCAN#startfreq=87,stopfreq=108,step=100#tasktype=1,starttime=20130728010123,totletime=100,creator=1,level=1,name=考试保障。
其中:0002为指令ID,表示该指令为任务操作,每台监测设备都有唯一ID标志;61007500为设备ID,表示某台监测设备; TKNEW为功能类型,表示创建新任务;FSCAN#startfreq=87,stopfreq=108, step=100#tasktype=1,starttime=20130728010123,totletime=100,creator=1,level=1,name=考试保障为任务信息,FSCAN表示该指令任务类型为频段扫描,startfreq=87,stopfreq=108,step=100表示起始频率、终止频率以及步长,tasktype=1, starttime=20130728010123,totletime=100,creator=1,level=1,name=考试保障表示任务执行相关参数,即任务类型、开始时间、执行时长、任务创建者ID、任务等级、任务名称。
指令的执行过程如图4所示,组件接收到任务指令后,各适配器通过“0002”识别出是任务指令,通过“61007500”识别出该任务操作的设备,通过“TKNEW”识别任务的类别,通过“level=1”判定任务的优先级,其余是任务的执行参数。
图4 考试保障监测任务指令的执行过程
无线电监测软件总线设计了总线消息队列和连接消息队列,其中,总线消息队列负责维护系统的全局消息,连接消息队列负责维护系统与设备的通信消息。只有当系统与设备之间需要进行长时间数据交互通信(长连接)时,软件总线才为其分配一个独立的连接消息队列。
总线消息队列与连接消息队列如图5所示。当满足一定条件时,总线消息队列会把消息分发到相应的连接消息队列中,如果同一个时间段内有多个长连接并发执行,它们之间也可以通过发送消息实现信息共享(如图中A和B之间的共享)。以执行例1中任务指令的考试保障为例,总线会根据任务执行参数生成触发条件,即当发现异常信号时,跳转至频点监测并寻求协助站点辅助监测(算法选择当前最优辅助设备经由监测系统调度该设备与之发生连接),总线消息队列将频段跳转频点、时间同步、任务时间终了等控制信息发到各个连接消息队列,因为是协助监测,各个连接消息队列可以分享彼此的分析数据。
图5 消息队列结构示意图
针对区域内有多个监测点(每个监测点至少有1台监测设备)的情况,无线电监测软件总线设计了任务指令的工作调度机制。该机制包括任务分发和任务调度2部分。任务指令由应用层到达每个监测设备的过程称为任务分发;每个监测设备按一定的方式执行各自任务队列的过程称为任务调度。
任务分发采用优化的负载调度算法。该算法涉及连接数(当前任务数)和经纬度坐标(最小距离),形式描述如下。
令区域内监测点T={T1,T2,…,Tm-1},每个监测地点的监测设备S={S1,S2,…,Sn-1},C(Si)和D(Si)分别表示接收机Si的当前连接数(任务数)和与监测地点的距离,W(C(Si))和W(D(Si))表示接收机Si相应特征的权值。任务分发的条件为min{C(Si)·W(C(Si))+D(Si)·W(D(Si))}(i=0,1,…,n-1)。
任务调度采用先来先服务和优先级结合的调度算法,高优先级先执行,同优先级按时间先后顺序获取时间片,分片并发交替执行。在无线电监测软件总线中,实时连接优先级高于离线任务的优先级,当有实时连接发生时,独占设备会暂时中断离线任务并等待连接。调度算法可以避免离线任务和实时连接之间的冲突。
由于设备对软件总线是“即插即用”的关系,所以在连接到软件总线的同时,软件总线会初始化当前设备的任务队列,并保持对任务队列的管理,以高优先级任务中断当前低优先级任务、同等级任务并发处理的原则,合理调度队列中的任务,并处理好与实时连接的兼容性。
在无线电智能监测网络系统中,调度机制可用于异常信号处理。当网络系统发现异常信号时,软件总线以发现信号的设备为中心向附近设备(以经纬度判断)发出协助请求,形成一个局部自组织监测网络系统,调度机制会自动处理区域内的设备选择、功能执行和数据处理。
随着无线电通信技术的快速发展和广泛应用,利用无线电设备进行考试作弊的现象也日趋严重[15]。无线电考试保障是对考试作弊信号频率进行实时监控和及时定位,为查处相关责任人提供技术支撑[16]。
无线电考试保障是一个复杂的监测任务,如图6所示。从构件调用的角度,软件总线需要通过适配器按一定的交互顺序复用FSCAN与IF_DF(或者IF_FQ)。从任务调度、站点协调的角度,由于每个设备的通信协议不同(如RMTP、SCPI等),设备和设备之间的沟通存在障碍,因此,软件总线需要通过消息机制和调度机制在触发条件成立时(一般是监测到异常信号),协调不同协议的多个设备参与协助监测、交汇定位,并整合不同监测设备采集的数据。
图6 无线电考试保障流程图
在图6中:(1)为频段扫描阶段,即任务开始时软件总线以消息方式通知执行任务的设备持续对指令要求的频段进行扫描,并调用构件库中自适应阈值算法、信号检测算法等通用构件对频段扫描数据进行分析,当结果中出现可疑或作弊信号时,系统自动执行流程图中(2)的内容 ;(2)为频点监测过程,频点监测通过相应的通用构件对当前信号监听、初步测向,并分析其调制方式,然后确认信号性质,如是干扰信号还是作弊信号;当信号性质被确认后,系统需对此信号进一步分析处理,即图中(3)所示过程,此时由软件总线选择区域内合适的多个不同协议的设备参与协助,从协助请求的发送到形成区域自组织网络,软件总线负责整个组织过程;通过交汇定位,确认作弊信号的发射源位置后组织实施图中(4)所示过程,干预压制,压制后需要继续对这个频点进行监测,以便确认压制效果。当所有作弊信号处理结束后,继续进行频段扫描,循环上述整个流程。
如例1中指令,客户端发送任务命令告知要进行的监测任务(监测设备61007500对87 MHz至108 MHz进行监测),软件总线解析接收到的指令,然后根据指定的设备(由设备的ID得到设备的其他信息,如协议类型、IP地址等)调用相应的适配器和指令要求的FSCAN功能构件,若发现有作弊信号,则进入到自组织过程,由软件总线选择区域内合适的辅助监测设备。辅助设备发生连接以后软件总线以消息的方式同步各个监测设备,多设备调用IF_DF功能构件相互配合协调完成数据分析和交汇定位。在监测过程中,任务队列根据任务的优先级自动执行队列中的任务。
图7为无线电考试保障在执行过程中适配器调用通用构件自适应阈值算法[17]得到的结果图。
图7 自适应阈值算法滤除信号背景噪声结果图
由于监测任务的目的和内容不同,在实际应用中,监测数据的处理方法也不同,在软件总线中体现为功能构件或构件组合也不同。为便于操作人员使用,在软件总线的框架内,需要自定义任务流程功能模块。无线电考试保障监测的任务流程、构件的组合方式是由用户自己定义的,即软件总线处理考试保障监测任务请求时,依据任务发布者自己定义的任务流程和构件调用关系,这样可以使总线具有更好的可扩展性和延伸性。软件总线在处理用户自定义的监测流程过程中,监控前一功能构件的输出和后一功能构件的输入的一致性,以确保构件和构件的衔接顺畅。自定义流程使无线电考试保障监测系统具有更强的适应性,用户使用方便并能达到更好的监测效果。
软件总线应用于无线电监测系统,能够解决实际应用中监测设备异构的问题,使无线电监测系统具有更强的开放性,推动无线电监测的自动化、网格化和智能化,为监测数据采集、监测数据挖掘以及各种保障监测提供强有力的支持。进一步完善无线电监测软件总线的功能,满足大区域监测、区域之间协同监测、智能监测的需要,同时拓展无线电监测软件总线的应用范围是今后需进一步研究的内容。
[1]颜建平,张焱,陈路路. 软总线技术发展与应用研究[J].无线电工程,2008,38(11):61-64.
[2]STARS. Asset Library Open Architecture Framework version 1.2 [R]. Informal Technology Report STARS-TC-04041, 1992.
[3]Fred A Maymir-Ducharme. The Product Line Business Model[EB/OL].[2013-09-16]. http://www.umcs.maine.edu/~ftp/wisr/wisr8/papers/maymir/maymir-updated.html.
[4]Dikel D, Kane D, Ornburn S, et al. Applying Software Product-line architecture[J]. Computer, 1997, 30(8):49-55.
[5]Mike Stark, Dave McComas. Developing a Product Line Approach for Flight Software[R]. NASA/Goddard Space Flight Center, 2000.
[6]严亚勤,吴文传,张伯明,等. 支持组件接口规范的能量管理系统软总线的初步研究与实现[J]. 电网技术,2004,28(20):11-16.
[7]邓辉舫,黄俊成. 基于消息队列软总线的系统集成与数据交换方案[J]. 华南理工大学学报:自然科学版,2008,36(5):1-5.
[8]谷双春,李苒. 软总线技术在无线电监测系统中的应用研究[J]. 无线电通信技术, 2005,31(6):48-50.
[9]唐鼎甲,武畅.无线电监测系统的组成与应用[J].电子信息对抗技术,2011, 26 (5):37-40.
[10]徐弘良.网格化无线电监测系统总体设计原理概述[J].中国无线电,2013(2):57-59.
[11]王光平. 软件总线研究[J]. 计算机工程与应用,2000(3):39-41.
[12]唐丽. 面向神光Ⅲ分布式控制的软件总线技术研究[D]. 北京:中国工程物理研究院, 2002.
[13]袁占亭,张秋余,张冬冬,等. 基于软件总线技术的软件开发[J]. 计算机工程,2005,31(1):105-107.
[14]陈波,李舟军,陈火旺. 构件模型研究综述[J]. 计算机工程与科学,2008,30(1):105-109.
[15]马方立.无线电干扰的监测分类与通用识别方法探讨[J]. 电波监测,2004(3):32-35.
[16]江海琴,伊良忠,马方立,等. 常见作弊信号的模糊C均值聚类识别[C]//CRAM·12论文集. 西安:电子工业出版社,2012:287-291.
[17]冯霞,龚晓峰,张利丹,等. 基于纹理特征的背景噪声提取的应用研究[J]. 电子学报, 2009,37(9):2093-2095.