梁晓琪陈建伟赵小寒黄 慧吴炜颖(、广西广播电视无线传播枢纽台;、广西广播电视技术中心)
M2W中波发射机控制协议解析与运用
梁晓琪1陈建伟1赵小寒2黄 慧1吴炜颖1
(1、广西广播电视无线传播枢纽台;2、广西广播电视技术中心)
[摘 要]介绍利用DF1协议,破解并应用发射机协议进行发射机之间互相倒换的技术,解决了基于DF1协议控制的幅相调制M2W发射机与数字循环调制DAM发射机之间互相控制的技术难题。
[关键词]DF1; CRC; AVR; 单片机; 通讯协议; 发射机
广西广播电视技术中心南宁分中心101台石埠中波机房是担负主要播出任务的机房之一,中波机房1224kHz播出频率共有两部发射机担负播出任务:一部是50kW数字循环调制发射机(以下简称DAM机),另外一部是100kW幅相调制发射机(以下简称M2W机),M2W机是哈尔滨广播公司引进世界上著名的广播电视发射机制造厂商法国THOMCAST公司生产的当今世界上最先进的M2W制式的发射机技术而研制开发的大功率中波广播发射机,它采用了VLSI(超大规模集成电路)和DSP(数字信号处理器)完成全过程控制和数字音频处理,其中IUC板是MMI(人机接口)和信号处理之间的接口,也是发射机主要的控制部分,由标准PLC(可编程逻辑控制)元件组成,自动化系统软件采用C#语言编写,M2W发射机IUC 和触摸屏通信,IUC 和计算机通信采用DF1协议。
50kW数字循环调制发射机运用了先进的直接数字频率合成(DDS)、数字调幅、循环调制、LCD触摸屏控制、音频处理器以及浮动载波等技术是集美国HARRS公司DX系列及法国THALES公司M2W系列发射机等技术于一体、由哈尔滨广播公司自行研制开发的新型数字调幅广播发射机。
在播出过程中M2W机如遇故障掉高压时可以通过真空天线倒换开关的互锁接点对装在DAM发射机内主、备倒换板的AT89C51单片机施加约3.3V的高脉冲电压,单片机随即对DAM机的主控单片机发出低脉冲电压,发射机开机,而M2W发射机采用协议控制,无法单纯的通过施加高低电平来控制开关机,因此DAM机出现问题时却不能对M2W机进行控制,只能人工倒天线到M2W机,再手动按触摸屏播出。由于控制室离机器较远,一旦机器出现故障,人工操作倒换时间过长,影响安全播出,并导致中波机房无法实现完全自动化,还需要有人值守,制约了大量的人力,破解M2W发射机协议成为解决101台乃至南宁分中心全面实现自动化最后一公里的关键,并且由于厂家原因,破解协议只能依靠技术中心自己解决。
经过论证,M2W中波发射机IUC实现DAM机和M2W机互倒的步骤如下:(1)DAM机通过单片机直接对M2W机发送控制字符串控制其开关机;(2)M2W机掉高压时通过天线真空倒换开关的互锁接点对DAM发射机进行开机控制。因此破解协议字符串是第一步,第二步是将字符串写入单片机中,通过串口对PLC进行相关控制。
2.1协议解析
M2W 发射机的模拟信号及控制信号,要通过发射机IUC预留的IUC_SER1 接口。IUC_SER1 可以实现和外部计算机进行通讯,控制数据及模拟量的采集可以从发射机控制底板X30 口IUC_SER1 获取,X30 口是一个RS422 定义接口。其接口定义如下表:
引脚 信号名称 描述1 GND 地2 TXD+ 发送数据+ 3 RTS+ 请求发送+ 4 RXD+ 接收数据+ 5 CTS+ 允许发送+ 6 TXD- 发送数据-7 RTS- 请求发送-8 RXD- 接收数据-9 CTS- 允许发送-
通过IUC_SER1 接口可以采集到发射机的频率、最大功率、发射机入射功率、发射机反射功率、合成器内电压和电流相位偏差、当前功率、级循环测试、数字信号处理测试、幅相测试、功率电平1、功率电平2、功率电平3、RF 级功率电源的直流电压、RF级拉出的直流电流、机箱内靠近风机测量冷却空气现时温度、发射机运行时间、显示做为有毛病而被通报的RF级数目、跳闸积累时间、跳闸到返回的次数、功率降低步长、功率增加时间、电源故障功率、最大故障级、最小功率等和发射机运行密切相关的数据。
从客户端程序(C#语言编译)中,解读出协议所需的串口通讯参数为:
COM2口传输比特率为9600 传输数据为8位 无校验 一位停止位
COM3口传输比特率为19200 传输数据为8位 偶校验 一位停止位,
对应的源代码如下:
M2W发射机使用的协议部分依据AB-罗斯维尔公司开发的DF1全双工协议(DF1协议广泛应用于PLC工业控制,常用于机场行李分拣、工厂流程控制)。由于发射机的IUC 又不是纯粹的PLC,只是使用了DF1 的控制器,协议在DF1的基础上根据发射机的功能需求进行了大量修改,因此不能完全按照DF1协议破解相关的控制字符串命令帧,如何才能正确破解和识别出发射机真正的协议成为难点。
仔细阅读了厂家留下的《DF1 Protocol Manual-M2W》(M2W协议手册)(英文版),由于《DF1 Protocol Manual-M2W》只对数据帧中的某一字符串(用于地址寻址及相关计算)进行了阐述,并未对整个协议进行完整的阐释,因此,下载了《DF1协议指令集》(英文版),翻译了全部将近300页的内容,并查阅了相关的资料和阅读了有关DF1协议的程序源代码,经过艰苦努力,根据程序源代码对照DF1协议,解读出M2W机使用的协议数据帧为:
控制帧:
DLE STX DST SRC CMD STS TNS FNC SELE—N0 DLE ETX CRC
回复帧:
DLE STX SRC DST CMD STS TNS FNC DATA DLE ETX CRC
现将协议详解如下:
DLE STX:控制字符 表示开始传送命令帧,其中:DLE取ASCII码十六进制值为10,STX的ASCII码为02
DST:目的地址,
SRC:源地址
CMD:命令码(决定具体执行何种命令)
STS: 表示命令传输的状态,在没有错误的情况下一般为00
TNS:命令传输次数计数器,主要是统计命令传送的次数,该字符决定了即使同一种命令也有不同的字符。
FNC:功能码(决定具体执行何种功能)
SELE—N0包括
1、Byte Size :传送的命令字节大小
2、File Number:命令文件名
3、Element Number:存储地址单元号,一般取值为FF
4、Sub_element Number:存储地址的第二级单元号,取值为FF
DLE ETX:控制字符 表示结束传送命令帧,其中:DLE取ASCII码十六进制值为10,STX的ASCII码为03
DATA:命令数据
CRC: CRC校验值
由协议可区分命令帧和回复帧:命令帧是执行指令的数据串,其CMD(即数据串的第五位)一般为0F,而回复帧是显示PLC当前的状态,其CMD一般为4F。所以我们在收测数据的时候可根据该位来判断该数据串的内容。
由此可测出PLC处理器与上位机应答过程:
PLC发送数据给上位机,对方是否发送回数据串10 06,如果发送回10 06、接着发下一条指令,如果没收到,发10 05,直到收到10 06 ,再发下一条指令。
2.2协议算法
随着IUC不断发出同样功能的数据串,FNC是不断增大的,也就是说每发出同样的一串数据串,命令传输次数计数器根据统计命令传送的次数不断的将该值按一定的步进数增加,数据串的最后两位也跟着变化,因此在实际传送中须发三次FNC步进值加1的指令IUC才会应答。
最后两个字符是CRC值,该值是DST SRC CMD STSTNS FNC SELE—N0加上DLE后,用CRC函数计算得出,所以FNC变化CRC值也跟着变化,CRC用于循环冗余校验,所谓循环冗余校验,就是利用除法及余数的原理来进行错误检测的.将接收到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错。在M2W发射机客户端程序中,最后两位字符转换为二进制共十六个比特分别存入CRC寄存器的低八位和高八位,组成十六位CRC值,对0X1(该值是CRC的多项式:X16 + X15 + X2 + X0的代码)进行异或,如果结果不等于零,表明接受的命令是正确的。否则,命令错误。
相关代码:
CRC寄存器对最后两位数据串处理过程:
对CRC数据的校验过程:
2.3利用协议进行发射机开关机测试
虽然理论上验证了开机数据串,但正确与否,仍需从IUC串口接收或发送数据以进一步验证,IUC板上的PLC(可编程逻辑控制器)芯片是摩托罗拉MC68302FC20C,,它是由摩托罗拉8位微处理器MC6800升级而来,该芯片有两个读写口,读写口1是通过光电隔离组件由232接口板与触摸屏相连,由于有光电隔离组件,很好的避免了浪涌电压对PLC芯片的损坏,读写口2通过在控制背板的两块通讯芯片DSC2631和DSC2632接到串口IUC-SER1,为全双工RS422接口。由于从触摸屏处接入串口导致触摸屏死屏,为谨慎起见,需用带光电隔离的接口转换器从连接机房上位机串口的电缆处收测,但未测得数据串,疑为串口芯片已烧毁,需更换控制背板,而后更换控制背板,测试继续进行,最后通过反复比对测试验证,得到:开机指令:10 06 10 02 01 02 0F 00 3F 08 AB 02 10 10 89 02 00 01 00 01 00 01 00 10 03 1A 24 关机指令:10 06 10 02 01 02 0F 00 A9 0A AB 02 10 10 89 00 00 01 00 01 00 01 00 10 03 16 E8 待机指令:10 06 10 02 01 02 0F 00 AB 06 AB 02 10 10 89 01 00 01 00 01 00 01 00 10 03 95 75
那么如何通过技术手段运用协议进行实现开关机的验证操作呢?方法是在发射机无播出任务并保证发射机安全工作的前提下,通过ATmega128单片机控制板对M2W发射机进行待机、上高压、掉高压及关机等控制指令的操作。
测试设备主要如下:
配有RS232串口的IBM笔记本一台
M2W发射机
ATmega128单片机控制板
RS232转RS422接口模块
RS232转RS232光电隔离模块
测试用单片机开发板及软件配置
(1) 基于ATmega128单片机控制板的特性如下:8 位ATmega128控制芯片,支持以支持100/10Base-T太网接口,CAN总线, 支持16032 LCD,支持RS232串口,另外配置4个按键,以及部分I/O接口。
(2) 程序流程图
图1 主程序流程图
程序流程包含两部分,主程序及中断子程序。在主程序中设置系统参数及串口的波特率、校验位,等待外部按键触发或下降沿中断的产生,流程图如图1所示。图2所示的中断子程序主要任务是当主机发生故障时能及时判断并发送开机指令。
除了模拟产生所需要的功能之外,结合实际现场测试开关机指令的正确性。现场连接形式如图3所示。用RS232 / RS422模块将单片机发送的RS232信号转成发射机需要的RS422信号。
①按键开关机:
由于发射机有待机、上高压、掉高压及关机等4种状态,所以设置4个按键进行操作。实践证明,按键程序和发送指令都是正确的。
②倒机指令:
当主机产生故障需要倒机时,发射机主控芯片会产生一个下降沿的跳变,为了能及时的产生响应,本部分采用的是中断查询方式,实践证明,中断程序和发送指令都是正确的。
图2 中断子程序流程图
图3 测试连接形式
经过测试,验证了单片机对M2W发射机简单的控制及主备机倒换的功能。
因为按键的硬件设计采用的是查询方式,所以在每次按键时都应该持续按键2秒以上,以保证查询结果的正确性,这在实际应用中不是非常方便。并且当时设计硬件控制板时没有把全部I/O引脚引出,所以中断引脚的连接不是非常方便。
经过试验验证了开关机数据帧,枢纽台研发组把此协议帧写入开关采集器,并通过采集器控制50kWDAM备机,实现了主备机的倒换。
通过多年的运行,两部发射机倒换效果良好,保证了安全播出。
通过对M2W及DAM发射机进行倒换,在全国的发射台是首创,具有极高的创新及推广价值(全国有不少M2W机),同时中波机房实现全面自动化,解放了大量的人力,保证了安全播出,为推行有人留守无人值班奠定了基础。
参考文献:
[1] DF1 Protocol Manual-M2W. 美国罗克威尔自动化公司
[2] Allen-Bradley on DF1. 美国罗克威尔自动化公司
[3] 熊世桓 ,袁熙 ,朱宇峰:基于CDMA / GPRS的DF1协议通讯驱动的开发.贵阳.贵州教育学院. 数学与计算机科学.2007.
[4] 杜思山:M2W 中波发射机自动化系统设计与实现 2013.