白小军,杨 军,喻 钧
(西安工业大学 计算机科学与工程学院,陕西 西安 710032)
随着广播电视事业的发展,广播电台对电视发射机的监控要求越来越高,从原有的本机自动化提高到台内的自动化监控,进而发展到远距离的发射台自动化监控。另一方面,网络技术的迅猛发展也引发了控制领域深刻的技术变革,网络化的远程控制以及基于Web的远程控制已成为技术发展的主流方向。开发基于Web的集中监控系统,可以有效提高管理效率,节约人力,真正实现“有人值班、无人值守”的管理目标[1-3]。
远程监控系统要解决的首要问题是管理主机和控制设备间的通信问题,即设备的运行状态如何传递给管理主机,管理者的控制命令如何发送给被控设备。传统的控制设备一般都通过串口(RS-232和RS-485)与上位机通信,这种方式通信距离很短,难以进行远程控制;借助新兴的设备服务器技术,可以方便地将串口设备接入网络,实现串口协议与网络协议之间的转换,从而为串口设备的网络化控制创造了条件。
在文献[4]中,描述了如何通过CGI方式,在设备服务器上编程实现基于Web的设备监控;在文献[5]中,描述了如何通过XML与XSL技术将监控系统的页面展示逻辑转移到客户端,有效减轻设备服务器的负荷。两篇文献都存在一个局限,即都是针对单台设备的监控,无法实现整个发射台甚至多个发射台的集中监控。
在控制系统中引入设备服务器后,可将一台控制设备当作一个网络设备来使用,设备服务器充当了被管设备代理的角色;这样,控制系统管理的问题就可以转化为网络管理的问题来解决。而在网络管理领域已有了一系列成熟的协议,SNMP(简单网络管理协议)成为不错的选择。
SNMP是网络管理领域中的一项标准协议,用于实现路由器等网络设备的信息采集和管理。SNMP采用“管理者—代理”的工作模式,如图1所示。管理者负责发出管理操作的指令,并接收来自代理的响应或事件通告。代理位于被管设备一侧,充当管理者和设备之间的中介,把来自管理者的命令或信息请求转换为本设备特有的指令以执行,然后返回设备的信息;另外,代理也可以将设备系统中发生的事件主动通知给管理者。
图1 SNMP的管理模型[5]
SNMP协议中的三大要素是管理信息结构(SMI)、管理信息库(MIB)和SNMP通信协议。SMI定义了SNMP框架中可用的管理信息的类型和语法,为描述被管对象以及如何交换管理信息奠定了基础;MIB以层次化的方式组织设备的管理信息,树中的每一个节点都代表着设备的某项运行状态数据,都有其唯一的标识号(OID),管理站就是通过OID来指定要访问的数据项;SNMP通信协议定义了管理者和代理之间通信的消息类型和消息格式,常用的5种消息类型是GetRequest,GetNextRequest,Get⁃Response,SetRequest,Trap[6-8]。
将SNMP引入设备监控领域,可以在设备服务器上编程实现SNMP代理的功能,管理者通过Get原语可以采集设备的运行数据,通过Set原语可以控制设备执行指定的动作,当设备发生重大告警时,代理可以通过Trap原语及时上报给管理者。这样,监控系统中的数据采集、命令控制等功能都得以实现。
基于SNMP协议的发射台集中监控系统总体结构如图2所示。
监控系统中的主要部件有:
1)被管设备。发射机控制器作为实际的被管设备,实现发射机内部各部件的运行控制。它通过串口与设备服务器通信,接收SNMP代理发送的控制命令,执行该命令,并返回设备的运行状态数据。
2)设备代理。设备服务器作为被管设备的代理。一方面通过串口与被管设备相连,采集设备的运行数据,并向设备发送控制命令;另一方面通过网口与集中监控服务器相连,实现SNMP的Get,Set,Trap等原语操作。在代理中,需要针对控制设备特有的管理信息项定制MIB,维护设备的状态信息。
3)集中监控服务器。作为集中监控系统的服务端,该服务器具有数据采集、客户响应以及设备控制三项核心职能:一是采用轮询的方式从代理处采集设备的运行状态数据,保存到数据库中,供前台程序使用;二是接收客户端发送的查询指令,动态构造设备的运行状态显示界面;三是接收客户端发送的控制命令,转换成SNMP Set指令发送给代理,控制设备执行指定的动作。
4)管理客户端。监控人员使用客户端连接到监控服务器,查询设备状态,并向设备发送控制命令。
5)手机客户端。在用户不方便上网的情况下,可以通过手机短信的方式,查询设备的运行状态,或向设备发送控制命令。
6)GSM调制器。作为手机短信收发设备,可以将设备的运行状态信息发送给手机客户端(例如当设备发生重大告警或故障时向管理手机发送告警短信),也可以接收手机客户端发送过来的查询或控制短信,并交给监控服务器做进一步的处理。
设备服务器作为被管设备的代理,在系统中起着至关重要的作用。在管理者一侧,它要维护设备特有的MIB信息,并实现SNMP的Get,Set及Trap等原语操作;在设备一侧,它要通过串口与设备通信,实现数据采集与命令控制。
本系统选择美国Lantronix公司生产的UDS1100设备服务器,它提供了简单、廉价的串口设备联网方案,内置精简的多任务操作系统,支持ARP,IP,TCP,UDP等常用的网络通信协议,可以透明地实现串口数据与网络数据之间的协议转换;同时,它还提供了CGI,SNMP等编程接口,可以方便地扩展功能。这里将使用其SNMP API,开发电视发射机设备的SNMP代理。
设备代理软件的总体结构如图3所示。
1)数据采集进程:设备代理上运行的主进程,控制系统以指定的时间间隔不断向控制器发送查询消息(调用命令处理组件的功能),获取设备的运行状态信息,并将这些信息保存到MIB中供SNMP组件访问。
2)SNMP组件:实现SNMP协议的各项原语操作。处理网管应用程序发来的Get和Set指令,返回设备的运行状态(访问MIB变量获得),或通过命令处理组件向设备发送控制命令;当设备有重大告警时,也通过该组件向管理者发送Trap。
3)命令处理组件:处理SNMP组件发出的Set指令,以及数据采集进程发出的Get指令;调用串口通信组件的功能,向设备控制器发送查询或控制命令,并接收设备的运行状态数据以更新MIB。
4)串口通信组件:封装了串口消息的构造和收发操作,使得命令处理组件可以很方便地通过串口向控制器发送消息,获取设备运行参数或控制设备动作。
代理系统设计时要注意两个方向的接口:在被控设备一侧,要明确控制器支持的消息接口,即串口命令及响应的数据包格式,针对每一条串口命令设计相应的命令处理组件,实现被控设备的数据采集以及命令控制;在网络管理一侧,要明确管理信息结构,合理设计私有MIB,并针对MIB变量设计SNMP组件,实现Get,Set及Trap等原语操作。
为方便串口消息的收发,串口通信组件中设计了两个核心的函数:
1)根据要发送的控制命令构造串口消息包,并保存到发送缓冲区,即:
2)发送串口消息并接收响应,即:
根据用户的监控要求,本系统需实现发射机配置信息、运行状态信息及PA运行数据、日志数据等基本信息查询功能,同时还要实现开/关机、重启、激励器切换等常用的控制功能。为此,设计如下的命令处理组件:
被控设备的管理信息维护在MIB中,这里需要针对发射机的运行状态和控制要求定制MIB,如图4所示。
其监控数据分类保存到txQry(运行状态信息)、txCfg(配置信息)、txSet(控制命令)、fpaTable(功放运行状态信息,表格结构)、txLogs(日志信息)几个节点下。通过SNMP Get或GetNext操作可获取MIB中保存的信息数据;若要控制设备执行某项动作,则通过SNMP Set原语,设置txSet节点下的某个变量的值,这样SNMP组件将自动调用命令处理组件的相关函数,完成指定的控制操作。
远程监控服务器的总体结构如图5所示。该系统具有3个核心进程,即数据采集进程、集中监控进程和短信监控进程。
1)数据采集进程。该进程随系统的启动而启动,并一直在后台运行,按一定的时间间隔定期采集各设备的运行数据并保存到数据库中备用。
2)集中监控进程。该进程在前台运行,接收并处理用户的请求。若是查询请求,则从数据库中检索设备的运行状态信息反馈给用户;若是命令请求,则转化为SET指令发送给设备代理。由于采用了基于Web的监控方案,该进程演变为Web服务器进程。
3)短信监控进程。该进程一直在后台运行,监听本机的串行端口(连接GSM调制器);当收到管理员发送的短信命令时,解析并执行该命令,将结果反馈给管理手机;当数据采集进程发现重大告警信息,或设备代理发来Trap消息时,该进程还要自动构造告警短信,并通过短信操作组件发送给管理手机。
服务器系统设计的难点在于数据采集部分,它要周期性地轮询所有代理以采集设备的运行数据;根据实时性要求,轮询间隔不应超过10 s。考虑到系统中监控的设备数量众多,每台设备的数据采集都会产生一定的延迟,若按顺序逐个采集,时延就会累积起来,根本不能满足实时性的要求。为解决这一问题,必须采用多线程采集。
数据采集模块的运作过程如图6所示。它由一个定时器(图中的Timer组件)触发运行,每当定时事件到来时,自动检索采集组件(Qry_Task)的实例并调用其execu⁃teTask()方法启动数据采集;在executeTask()方法中,首先要获得所有设备的列表(调用QryDAO的getTXList()方法),然后针对每个设备分别启动采集线程;Poll_Thread为线程类,它调用SNMP组件的功能以访问代理,并将采集到的数据保存到数据库中。
Web应用的用户界面一般在服务器端动态生成,然后将产生的HTML代码传递给客户端,由浏览器展示给用户。将这种工作模式应用到集中监控系统中存在两个问题:首先,监控界面的生成逻辑比较复杂,要根据设备的配置信息及运行状态动态构造并不断刷新,大大增加了服务器的处理负荷;其次,传统的Web界面一般都采用模板的方式构造,界面形式相对固定,而监控系统中往往同时并存多种不同型号的设备,其监测参数有所区别,进而监控界面也会有所区别,模板的方式很难适应。这样,如何动态构造监控界面就成为一项具有挑战性的工作。
使用XML与XSLT相结合的技术可以较好的解决这一难题。XML作为描述数据的语言,扩展性极强,允许用户自定义标记,从而可以简洁、自然地组织数据。XSLT可以对XML进行转换,改变其输出方式,一种常用的转换方法是将XML转换为HTML以便在浏览器中展示,这样可以将数据的表示与数据本身相分离,提供更大的处理灵活性。基于这样的思路,可以将监控数据与监控界面的生成逻辑分离开来,在服务器端获取监控数据,然后交给客户端构造用户界面。
Web监控界面的生成过程如图7所示。在服务器端,Web组件将设备的配置参数及实时运行数据包装到一个XML文档中,然后根据设备的型号选择一个合适的XSLT文档,作为样式表附加给XML。这两个文档会随响应一起发送给客户端,由浏览器中的XML处理程序进行转换,生成最终的HTML展示给用户。
这样处理的好处显而易见:首先,充分发挥了分布式计算的优势,有效降低了服务器的负荷;其次,将数据的表示与数据本身相分离会提供更好的扩展性,例如,若以后想引入WAP客户端,那么,Web组件中生成监控数据的代码将不用作任何改动,只需针对WAP界面设计新的XSL即可。
在控制系统中引入设备服务器,可以方便地将串口的控制设备接入网络;若在设备服务器上编程实现代理的功能,则可以使用网络管理领域的技术和方法来实现设备监控。本文针对某电视设备有限公司电视发射机远程集中监控系统的实际需求,将SNMP协议引入设备监控领域,设计了基于Web的发射台远程集中监控系统。本系统已在国内外很多家电视台中投入使用,稳定运行,验证了方案的有效性。
[1]吴升恒.广播电视发射中心综合监控与管理系统的设计与实现[D].厦门:厦门大学软件学院,2009.
[2]刘行兵,牟占生,孙斌.电视发射台远程监控系统的实现[J].电视技术,2008,32(11):70-71.
[3]周春来,赵成安,孙芳.基于嵌入式Web的发射机远程监控系统[J].控制工程,2008(9):605-609.
[4]白小军,罗钧旻.基于WEB的发射机远程控制系统设计[J].通信技术,2008(9):59-61.
[5]苏振涛,罗钧旻,白小军.基于设备服务器的电视发射机远程监控系统[J].计算机测量与控制,2009(10):1883-1886.
[6]岑贤道,安常青.网络管理协议及应用开发[M].北京:清华大学出版社,1999.
[7]CASE J,FEDOR M,SCHOFFSTALL M,et al.IETF RFC1157,A simple network management protocol(SNMP)[S].1990.
[8]王晓东,杨学海.SNMP在C/S模式远程监控管理系统设计中的应用[J].电讯技术,2010(1):87-91.