秦园春 李建军
(作者单位:安徽广播电视台淮北发射台)
基于IP网络的广播电视发射机监控系统研究与实践
秦园春 李建军
(作者单位:安徽广播电视台淮北发射台)
本文通过对第三方发射机远程监控系统的分析,详细介绍当前基于IP Client/Server结构的广播电视发射机远控系统的实现机理,给出了具体发射机的通信数据及数据结构。针对其通信数据及其结构的特点,设计了可用于广播电视发射机远控系统故障查处的分析测试软件。结合具体故障查处实例介绍了该分析测试软件的使用方法。
发射机通信数据;Client/Server结构;发射机测试器;虚拟发射机
安徽广播电视台淮北发射台现采用HX发射机远程监控平台的远程监控系统,将本台各发射机以IP通信方式连接到控制室,来实现对发射机的远程监控。目前,主要实现对发射机入射功率和反射功率的监测以及对各发射机的开、关机控制。该监控平台在一定程度上实现了对各发射机的远程监控,但也存在一些问题,如无法连接或连接异常、误报警、不能有效开关机等情况。出现这些情况有可能是发射机端通信接口或者是接口转换器件问题,也有可能是IP连接线路或者是交换机问题,还可能是监控端计算机问题或监控平台软件问题,如何确定问题所在,成为解决和处理问题的关键。针对上述情况,对HX发射机监控系统进行了深入研究并开发设计了专门的分析测试软件。通过该软件,可以对各发射机进行基于IP的单独手动监控及对各发射机系统进行模拟,所有通信数据全部显示出来,以便研究和分析。为解决和处理问题提供准确依据。
现在本台被监控的发射设备有8台电视发射机和12台调频广播发射机,大部分是吉兆公司的GME产品。另外,也有个别其他发射机厂家的产品。目前,由于国内广播电视系统尚未制定广播电视发射机通信接口协议的统一规范,所以各发射机通信接口及通信协议也存在很大差异。吉兆GME机器都是通过RS485转RS232,再由串口服务器向上提供IP通信服务,其他机器有的可以直接向上提供IP通信、有的则通过专门的采集系统向上提供IP通信服务。
根据上述情况,可以确定发射机远程监控系统是一个基于TCP/IP的Client/ Server结构的通信系统。就可以用int connect (int sockfd,struct sockaddr * serv_ addr,int addrlen)和int listen(int sockfd,int backlog)函数分别与发射机和监控计算机构成连接,截获其相关通信数据。
吉兆GME各发射机:
读取机器数据指令0x01,0x27,0x00,0x00,0x26。
开机指令 0x01,0x3c,0x00,0x00,0x3d。
关机指令 0x01,0x3e,0x00,0x00,0x3f。
读取成功都返回一个如下结构的数据。
Struct MachineData
{1 byte 0x01;
1 byte Year;
1 byte Month;
1 byte Day
1 byte Hour;
1 byte Minute;
1 byte Second;
2 byte Fwd
2 byte Refl
.
.
.
};
其中,GME1114、GME1114E、GME1014J及GME1F33B的Sizeof(MachineData)为1026;GME113D、GME 1153C的Sizeof(MachineData)为258;GME1053F的Sizeof(MachineData)为514。数据的第1个字节为0x01、第2~7个字节分别为发射机当时的年,月,日,时,分,秒的BCD码。GME1114、GME1114E、GME1014J 10 kW电视发射机(淮北二套、安徽卫视 主备、淮北一套)、GME113D 1 kW电视发射机(中央七套)、GME1053F 5 kW电视发射机(安徽影视主)、GME 1153C 5 kW电视发射机(淮北教育)的第8~9两个字节为发射机的入射功率、10~11两个字节为发射机的电压驻波比; GME1F33B 3 kW调频发射机的第633~634两个字节为发射机的入射功率、635~636两个字节为发射机的反射功率。其他型号发射机限于篇幅就不再列出。
该测试软件整体为Client/Server结构的通信系统,不依赖任何数据库。分开设计为2个部分:发射机测试器部分和虚拟发射机部分。其中,发射机测试器可以提供对各发射机的单独地手动开关机和数据读取操作;虚拟发射机部分可以向上位系统(HX发射机远程监控平台等所有可以监控发射机的系统统称为上位系统,包括本发射机测试器)提供可以人为修改的模拟发射机的有关数据。用Visual C++分别编译成两个可以独立运行的文件,便于测试使用。
限于篇幅,这里只给出主要程序结构图和描述性程序代码。
2.1发射机测试器部分
发射机测试器主要程序结构见图1。
图1 发射机测试器程序结构
为方便使用,将本台现有的被监控的发射机的IP地址和使用的端口也设计到发射机测试器软件中,由COMBOBOX控件供用户选择,见图2。
图2 COMBOBOX控件显示界面
由于从发射机返回的数据并不是标准的ASCII码,直接显示将是一堆乱码,所以需要进行十六进制的转换,以方便对数据的观察和分析。
其中:szBufferRecv为接收发射机数据缓冲区,szBuffer为转换后带特定格式的数据缓冲区,recvsize为接收数据的长度。
图3 虚拟发射机程序结构
图4 虚拟发射机Scroll Bar控件显示界面
除了对所有的返回数据以十六进制形式显示之外,还把入射功率、驻波比和反射功率单独解析出来以大家熟悉的十进制形式显示。从前文分析知道,发射机返回的数据结构存在很大差异,特别是反射指标,有的发射机是以反射功率形式返回的、有的则是以驻波比形式返回的。对于以驻波比形式返回的数据,需要用如下公式,将驻波比换算成反射功率。
Pr/Po = [(VSWR-1)/(VSWR+1)]^2
Po:入射功率 、Pr:反射射功率、VSWR:驻波比
用sprintf(szBuffer,"%.2f",P);
SetDlgItemText(hDlg,EDIT_ID,szBuffer aa);
实现带2位小数的十进制形式显示。其中,EDIT_ID为显示功率(入或反)的编辑框的ID。
2.2虚拟发射机部分
虚拟发射机部分主要程序结构见图3。
主要功能就是接受上位系统的相关指令,做出状态显示,并将符合该发射机数据结构规范的数据发送给上位系统。用它可以代替真实发射机对上位系统进行测试,如越限报警测试,就不需要将真实发射机的有关指标开到报警的程度。对于上位系统来说,它就是一台入射功率、反射功率等参数可以任意调整的发射机。由两个滚动条控件Horizontal Scroll Bar和Vertical Scroll Bar分别提供对入射功率和驻波比的调节,反射功率由Pr/Po = [(VSWR-1)/(VSWR+1)]^2计算得出,并显示出来。如图4所示。
创建数据是虚拟发射机设计的主要内容,要把每台发射机的特征数据、入射功率、反射功率等参数组织成一个完整的数据块,它必须严格遵守对应发射机的数据结构规范,否则,上位系统将无法识别。需要强调的是,发射机的数据结构规范是发射机固有的,HX监控平台要遵守这个规范、任何上位系统都必须遵守这个规范。
特征数据是发射机生产厂家定义的,在监控系统分析一节中,已经通过发射机与HX监控平台的通信截获到,也即是Struct MachineData中,前面若干位的数据,其中除吉兆发射机以外的各发射机都已取得了具体数据。吉兆发射机特征数据为0x01及后面年、月、日、时、分、秒的BCD码。这里使用GetSystemTime(&tm)获得计算机的系统时间,并转换为BCD码,来为其创建特征数据。
void int2bcd(int tmdata)
{char temp[2];
wsprintf(buff,"%02d",tmdata);
temp[0]=(buff[0]-0x30)<<4;
temp[1]=buff[1]-0x30;
buff[0]=temp[0]|temp[1];
buff[1]=0;
}
void int2bcd(int tmdata)为两位整数转BCD码的子程序。
最后用memcpy(MachineData+n,&P,sizeP)将入射功率、驻波比或反射功率填入相应位置(n为偏移值)。
图5 对比图
图6 淮北教育电视发射机数据
本分析测试软件,需要依托计算机运行。在用于对发射机进行测试时(使用发射机测试器)要将测试用计算机的IP设置在与被测发射机相同网段、在用作虚拟发射机时要将测试用计算机的IP设置为对应发射机的IP。
下面通过几个故障查处实例来说明该分析测试软件的使用方法。
3.1安徽综艺电视发射机无法实现远程开关机
自HX发射机远程监控平台投入使用以来,就不能对安徽综艺电视发射机实现远程开关机。由于监控系统可以正常显示发射机的功率参数,因此可以排除网络连通性问题和硬件接口问题。
拔下连接到发射机的网线,插在测试用笔记本电脑上,并将其IP设置为安徽综艺电视发射机的IP。运行虚拟发射机软件,将发射机选择为“DS安徽综艺192.168.1.205:1024”,按下界面上的“开始”按钮,可以看到从HX监控系统不断发来读数据指令“0x55,0xaa,0x00,0x07,0 x06,0x00,0x00,0x00,0x00,0x01,0x00”。调节界面上的“Fwd调节”滚动条和“VSWR调节”滚动条,HX监控系统监控界面上的安徽综艺的入射功率和反射功率也作相应变化。执行“关机”操作,同时观察虚拟发射机,没有出现任何变化的数据。同样方法,对安徽卫视测试,则可以收到对应的关机指令。如图5所示。再将入射功率和反射功率调成零,执行“开机”操作测试,一样是收不到开机指令。对安徽卫视测试就可以收的到。由此可以得出如下结论:HX监控系统对安徽广播电视台淮北发射台安徽综艺发射机的远程开关、机只是做了个界面而已,实质上没有发出任何指令,不可能实现远程开、关机。
处理方法(思路):要求HX公司在监控软件中加上该发射机的开、关机功能;联系厂家,获取到该机的开、关机指令,设计一专门线程注入到HX监控软件中实现远程开、关机。
3.2淮北教育电视发射机连接异常
HX监控系统服务器的“淮北教育电视”中出现“已连接”很快又断开的现象,导致不断报警。出现报警说明读到了功率信息,再由于断开后失去功率信息而造成的。基本上可以排除网络连通性问题和硬件接口问题。
按上面实例的方法设置好相应的IP,选择并连上虚拟发射机,一切正常。将测试用笔记本电脑的IP设置为192.168.1.100并连接到淮北教育电视发射机上,运行发射机测试器软件,将发射机选择为“DS淮北教育 192.168.1.207:4001”,按下界面上的“连接”按钮,可以正常连接。按下界面上的“读取数据”按钮,读取到该发射机的完整数据,如图6。这样就可以彻底排除网络连通性问题和硬件接口问题了,问题应该出在发射机的数据结构上。观察01后面数据,对应为67年2月13日13时39分15秒,是发射机的时间信息,对HX监控系统来说是特征数据。该发射机是2000年以后生产的,年份就应该是2067年。这显然是一个错误的数据。
处理方法:把发射机的TIME调整为当前正常日期和时间,连接HX监控系统,一切正常。
结论:HX监控系统对吉兆发射机的时间信息有判断,超出它认定的范围就认为是错误的特征数据。所以出现读取数据(包括功率信息,报警原因))发现不是有效的特征数据,断开再连接,如此反复的现象。
3.3淮北经济调频发射机无法连接
淮北经济调频发射机和HX监控系统无法连接。按实例1.1的方法设置好相应的IP,连上虚拟发射机,一切正常,说明问题出在发射机或硬件接口上。按实例1.2的方法连上发射机测试器,可以正常连接,但读不到数据,由于该发射机是吉兆机器,采用的是串口服务器向上提供IP通信的,可以构成正常的IP连接,说明串口服务器是正常的。那么问题只有RS485-RS232转换器和发射机本身了。
处理方法:更换RS485-RS232转换器,可以读取发射机完整数据。连接HX监控系统,一切正常。
结论:接口硬件RS485-RS232转换器损坏。
该分析测试软件完全可以在不影响发射机正常播出的情况下对监控系统进行测试,为监控系统的故障查处提供数据层面的依据。由于在设计当中对发射机的IP及其端口的选择最终归类于发射机的类型,所以,对于所有相同类型的发射机,改变一下相对应的IP及其端口也同样可以适用。
[1]张之超, 等. Windows程序设计[M].北京:人民邮电出版社,1999.
[2]蒋东兴,林鄂华.Windows Socket网络程序设计指南[M].北京:清华大学出版社,1995.
[3]此书编写组.新编Windows API参考大全[M].北京:电子工业出版社,2000.
[4]李建军.internet远程监控软件设计[J].微计算机信息,2003(3).
秦园春(1970-),男,工程师,从事广播电视技术及监控软件设计工作。