梁曉琪陳建偉趙小寒黃 慧吳煒?lè)f(、廣西廣播電視無(wú)線傳播樞紐臺(tái);、廣西廣播電視技術(shù)中心)
?
M2W中波發(fā)射機(jī)控制協(xié)議解析與運(yùn)用
梁曉琪1陳建偉1趙小寒2黃 慧1吳煒?lè)f1
(1、廣西廣播電視無(wú)線傳播樞紐臺(tái);2、廣西廣播電視技術(shù)中心)
[摘 要]介紹利用DF1協(xié)議,破解并應(yīng)用發(fā)射機(jī)協(xié)議進(jìn)行發(fā)射機(jī)之間互相倒換的技術(shù),解決了基于DF1協(xié)議控制的幅相調(diào)制M2W發(fā)射機(jī)與數(shù)字循環(huán)調(diào)制DAM發(fā)射機(jī)之間互相控制的技術(shù)難題。
[關(guān)鍵詞]DF1; CRC; AVR; 單片機(jī); 通訊協(xié)議; 發(fā)射機(jī)
廣西廣播電視技術(shù)中心南寧分中心101臺(tái)石埠中波機(jī)房是擔(dān)負(fù)主要播出任務(wù)的機(jī)房之一,中波機(jī)房1224kHz播出頻率共有兩部發(fā)射機(jī)擔(dān)負(fù)播出任務(wù):一部是50kW數(shù)字循環(huán)調(diào)制發(fā)射機(jī)(以下簡(jiǎn)稱DAM機(jī)),另外一部是100kW幅相調(diào)制發(fā)射機(jī)(以下簡(jiǎn)稱M2W機(jī)),M2W機(jī)是哈爾濱廣播公司引進(jìn)世界上著名的廣播電視發(fā)射機(jī)制造廠商法國(guó)THOMCAST公司生產(chǎn)的當(dāng)今世界上最先進(jìn)的M2W制式的發(fā)射機(jī)技術(shù)而研制開發(fā)的大功率中波廣播發(fā)射機(jī),它采用了VLSI(超大規(guī)模集成電路)和DSP(數(shù)字信號(hào)處理器)完成全過(guò)程控制和數(shù)字音頻處理,其中IUC板是MMI(人機(jī)接口)和信號(hào)處理之間的接口,也是發(fā)射機(jī)主要的控制部分,由標(biāo)準(zhǔn)PLC(可編程邏輯控制)元件組成,自動(dòng)化系統(tǒng)軟件采用C#語(yǔ)言編寫,M2W發(fā)射機(jī)IUC 和觸摸屏通信,IUC 和計(jì)算機(jī)通信采用DF1協(xié)議。
50kW數(shù)字循環(huán)調(diào)制發(fā)射機(jī)運(yùn)用了先進(jìn)的直接數(shù)字頻率合成(DDS)、數(shù)字調(diào)幅、循環(huán)調(diào)制、LCD觸摸屏控制、音頻處理器以及浮動(dòng)載波等技術(shù)是集美國(guó)HARRS公司DX系列及法國(guó)THALES公司M2W系列發(fā)射機(jī)等技術(shù)于一體、由哈爾濱廣播公司自行研制開發(fā)的新型數(shù)字調(diào)幅廣播發(fā)射機(jī)。
在播出過(guò)程中M2W機(jī)如遇故障掉高壓時(shí)可以通過(guò)真空天線倒換開關(guān)的互鎖接點(diǎn)對(duì)裝在DAM發(fā)射機(jī)內(nèi)主、備倒換板的AT89C51單片機(jī)施加約3.3V的高脈沖電壓,單片機(jī)隨即對(duì)DAM機(jī)的主控單片機(jī)發(fā)出低脈沖電壓,發(fā)射機(jī)開機(jī),而M2W發(fā)射機(jī)采用協(xié)議控制,無(wú)法單純的通過(guò)施加高低電平來(lái)控制開關(guān)機(jī),因此DAM機(jī)出現(xiàn)問(wèn)題時(shí)卻不能對(duì)M2W機(jī)進(jìn)行控制,只能人工倒天線到M2W機(jī),再手動(dòng)按觸摸屏播出。由于控制室離機(jī)器較遠(yuǎn),一旦機(jī)器出現(xiàn)故障,人工操作倒換時(shí)間過(guò)長(zhǎng),影響安全播出,并導(dǎo)致中波機(jī)房無(wú)法實(shí)現(xiàn)完全自動(dòng)化,還需要有人值守,制約了大量的人力,破解M2W發(fā)射機(jī)協(xié)議成為解決101臺(tái)乃至南寧分中心全面實(shí)現(xiàn)自動(dòng)化最后一公里的關(guān)鍵,并且由于廠家原因,破解協(xié)議只能依靠技術(shù)中心自己解決。
經(jīng)過(guò)論證,M2W中波發(fā)射機(jī)IUC實(shí)現(xiàn)DAM機(jī)和M2W機(jī)互倒的步驟如下:(1)DAM機(jī)通過(guò)單片機(jī)直接對(duì)M2W機(jī)發(fā)送控制字符串控制其開關(guān)機(jī);(2)M2W機(jī)掉高壓時(shí)通過(guò)天線真空倒換開關(guān)的互鎖接點(diǎn)對(duì)DAM發(fā)射機(jī)進(jìn)行開機(jī)控制。因此破解協(xié)議字符串是第一步,第二步是將字符串寫入單片機(jī)中,通過(guò)串口對(duì)PLC進(jìn)行相關(guān)控制。
2.1協(xié)議解析
M2W 發(fā)射機(jī)的模擬信號(hào)及控制信號(hào),要通過(guò)發(fā)射機(jī)IUC預(yù)留的IUC_SER1 接口。IUC_SER1 可以實(shí)現(xiàn)和外部計(jì)算機(jī)進(jìn)行通訊,控制數(shù)據(jù)及模擬量的采集可以從發(fā)射機(jī)控制底板X30 口IUC_SER1 獲取,X30 口是一個(gè)RS422 定義接口。其接口定義如下表:
引腳 信號(hào)名稱 描述1 GND 地2 TXD+ 發(fā)送數(shù)據(jù)+ 3 RTS+ 請(qǐng)求發(fā)送+ 4 RXD+ 接收數(shù)據(jù)+ 5 CTS+ 允許發(fā)送+ 6 TXD- 發(fā)送數(shù)據(jù)-7 RTS- 請(qǐng)求發(fā)送-8 RXD- 接收數(shù)據(jù)-9 CTS- 允許發(fā)送-
通過(guò)IUC_SER1 接口可以采集到發(fā)射機(jī)的頻率、最大功率、發(fā)射機(jī)入射功率、發(fā)射機(jī)反射功率、合成器內(nèi)電壓和電流相位偏差、當(dāng)前功率、級(jí)循環(huán)測(cè)試、數(shù)字信號(hào)處理測(cè)試、幅相測(cè)試、功率電平1、功率電平2、功率電平3、RF 級(jí)功率電源的直流電壓、RF級(jí)拉出的直流電流、機(jī)箱內(nèi)靠近風(fēng)機(jī)測(cè)量冷卻空氣現(xiàn)時(shí)溫度、發(fā)射機(jī)運(yùn)行時(shí)間、顯示做為有毛病而被通報(bào)的RF級(jí)數(shù)目、跳閘積累時(shí)間、跳閘到返回的次數(shù)、功率降低步長(zhǎng)、功率增加時(shí)間、電源故障功率、最大故障級(jí)、最小功率等和發(fā)射機(jī)運(yùn)行密切相關(guān)的數(shù)據(jù)。
從客戶端程序(C#語(yǔ)言編譯)中,解讀出協(xié)議所需的串口通訊參數(shù)為:
COM2口傳輸比特率為9600 傳輸數(shù)據(jù)為8位 無(wú)校驗(yàn) 一位停止位
COM3口傳輸比特率為19200 傳輸數(shù)據(jù)為8位 偶校驗(yàn) 一位停止位,
對(duì)應(yīng)的源代碼如下:
M2W發(fā)射機(jī)使用的協(xié)議部分依據(jù)AB-羅斯維爾公司開發(fā)的DF1全雙工協(xié)議(DF1協(xié)議廣泛應(yīng)用于PLC工業(yè)控制,常用于機(jī)場(chǎng)行李分揀、工廠流程控制)。由于發(fā)射機(jī)的IUC 又不是純粹的PLC,只是使用了DF1 的控制器,協(xié)議在DF1的基礎(chǔ)上根據(jù)發(fā)射機(jī)的功能需求進(jìn)行了大量修改,因此不能完全按照DF1協(xié)議破解相關(guān)的控制字符串命令幀,如何才能正確破解和識(shí)別出發(fā)射機(jī)真正的協(xié)議成為難點(diǎn)。
仔細(xì)閱讀了廠家留下的《DF1 Protocol Manual-M2W》(M2W協(xié)議手冊(cè))(英文版),由于《DF1 Protocol Manual-M2W》只對(duì)數(shù)據(jù)幀中的某一字符串(用于地址尋址及相關(guān)計(jì)算)進(jìn)行了闡述,并未對(duì)整個(gè)協(xié)議進(jìn)行完整的闡釋,因此,下載了《DF1協(xié)議指令集》(英文版),翻譯了全部將近300頁(yè)的內(nèi)容,并查閱了相關(guān)的資料和閱讀了有關(guān)DF1協(xié)議的程序源代碼,經(jīng)過(guò)艱苦努力,根據(jù)程序源代碼對(duì)照DF1協(xié)議,解讀出M2W機(jī)使用的協(xié)議數(shù)據(jù)幀為:
控制幀:
DLE STX DST SRC CMD STS TNS FNC SELE—N0 DLE ETX CRC
回復(fù)幀:
DLE STX SRC DST CMD STS TNS FNC DATA DLE ETX CRC
現(xiàn)將協(xié)議詳解如下:
DLE STX:控制字符 表示開始傳送命令幀,其中:DLE取ASCII碼十六進(jìn)制值為10,STX的ASCII碼為02
DST:目的地址,
SRC:源地址
CMD:命令碼(決定具體執(zhí)行何種命令)
STS: 表示命令傳輸?shù)臓顟B(tài),在沒(méi)有錯(cuò)誤的情況下一般為00
TNS:命令傳輸次數(shù)計(jì)數(shù)器,主要是統(tǒng)計(jì)命令傳送的次數(shù),該字符決定了即使同一種命令也有不同的字符。
FNC:功能碼(決定具體執(zhí)行何種功能)
SELE—N0包括
1、Byte Size :傳送的命令字節(jié)大小
2、File Number:命令文件名
3、Element Number:存儲(chǔ)地址單元號(hào),一般取值為FF
4、Sub_element Number:存儲(chǔ)地址的第二級(jí)單元號(hào),取值為FF
DLE ETX:控制字符 表示結(jié)束傳送命令幀,其中:DLE取ASCII碼十六進(jìn)制值為10,STX的ASCII碼為03
DATA:命令數(shù)據(jù)
CRC: CRC校驗(yàn)值
由協(xié)議可區(qū)分命令幀和回復(fù)幀:命令幀是執(zhí)行指令的數(shù)據(jù)串,其CMD(即數(shù)據(jù)串的第五位)一般為0F,而回復(fù)幀是顯示PLC當(dāng)前的狀態(tài),其CMD一般為4F。所以我們?cè)谑諟y(cè)數(shù)據(jù)的時(shí)候可根據(jù)該位來(lái)判斷該數(shù)據(jù)串的內(nèi)容。
由此可測(cè)出PLC處理器與上位機(jī)應(yīng)答過(guò)程:
PLC發(fā)送數(shù)據(jù)給上位機(jī),對(duì)方是否發(fā)送回?cái)?shù)據(jù)串10 06,如果發(fā)送回10 06、接著發(fā)下一條指令,如果沒(méi)收到,發(fā)10 05,直到收到10 06 ,再發(fā)下一條指令。
2.2協(xié)議算法
隨著IUC不斷發(fā)出同樣功能的數(shù)據(jù)串,F(xiàn)NC是不斷增大的,也就是說(shuō)每發(fā)出同樣的一串?dāng)?shù)據(jù)串,命令傳輸次數(shù)計(jì)數(shù)器根據(jù)統(tǒng)計(jì)命令傳送的次數(shù)不斷的將該值按一定的步進(jìn)數(shù)增加,數(shù)據(jù)串的最后兩位也跟著變化,因此在實(shí)際傳送中須發(fā)三次FNC步進(jìn)值加1的指令I(lǐng)UC才會(huì)應(yīng)答。
最后兩個(gè)字符是CRC值,該值是DST SRC CMD STSTNS FNC SELE—N0加上DLE后,用CRC函數(shù)計(jì)算得出,所以FNC變化CRC值也跟著變化,CRC用于循環(huán)冗余校驗(yàn),所謂循環(huán)冗余校驗(yàn),就是利用除法及余數(shù)的原理來(lái)進(jìn)行錯(cuò)誤檢測(cè)的.將接收到的碼組進(jìn)行除法運(yùn)算,如果除盡,則說(shuō)明傳輸無(wú)誤;如果未除盡,則表明傳輸出現(xiàn)差錯(cuò)。在M2W發(fā)射機(jī)客戶端程序中,最后兩位字符轉(zhuǎn)換為二進(jìn)制共十六個(gè)比特分別存入CRC寄存器的低八位和高八位,組成十六位CRC值,對(duì)0X1(該值是CRC的多項(xiàng)式:X16 + X15 + X2 + X0的代碼)進(jìn)行異或,如果結(jié)果不等于零,表明接受的命令是正確的。否則,命令錯(cuò)誤。
相關(guān)代碼:
CRC寄存器對(duì)最后兩位數(shù)據(jù)串處理過(guò)程:
對(duì)CRC數(shù)據(jù)的校驗(yàn)過(guò)程:
2.3利用協(xié)議進(jìn)行發(fā)射機(jī)開關(guān)機(jī)測(cè)試
雖然理論上驗(yàn)證了開機(jī)數(shù)據(jù)串,但正確與否,仍需從IUC串口接收或發(fā)送數(shù)據(jù)以進(jìn)一步驗(yàn)證,IUC板上的PLC(可編程邏輯控制器)芯片是摩托羅拉MC68302FC20C,,它是由摩托羅拉8位微處理器MC6800升級(jí)而來(lái),該芯片有兩個(gè)讀寫口,讀寫口1是通過(guò)光電隔離組件由232接口板與觸摸屏相連,由于有光電隔離組件,很好的避免了浪涌電壓對(duì)PLC芯片的損壞,讀寫口2通過(guò)在控制背板的兩塊通訊芯片DSC2631和DSC2632接到串口IUC-SER1,為全雙工RS422接口。由于從觸摸屏處接入串口導(dǎo)致觸摸屏死屏,為謹(jǐn)慎起見(jiàn),需用帶光電隔離的接口轉(zhuǎn)換器從連接機(jī)房上位機(jī)串口的電纜處收測(cè),但未測(cè)得數(shù)據(jù)串,疑為串口芯片已燒毀,需更換控制背板,而后更換控制背板,測(cè)試?yán)^續(xù)進(jìn)行,最后通過(guò)反復(fù)比對(duì)測(cè)試驗(yàn)證,得到:開機(jī)指令: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 關(guān)機(jī)指令: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 待機(jī)指令: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
那么如何通過(guò)技術(shù)手段運(yùn)用協(xié)議進(jìn)行實(shí)現(xiàn)開關(guān)機(jī)的驗(yàn)證操作呢?方法是在發(fā)射機(jī)無(wú)播出任務(wù)并保證發(fā)射機(jī)安全工作的前提下,通過(guò)ATmega128單片機(jī)控制板對(duì)M2W發(fā)射機(jī)進(jìn)行待機(jī)、上高壓、掉高壓及關(guān)機(jī)等控制指令的操作。
測(cè)試設(shè)備主要如下:
配有RS232串口的IBM筆記本一臺(tái)
M2W發(fā)射機(jī)
ATmega128單片機(jī)控制板
RS232轉(zhuǎn)RS422接口模塊
RS232轉(zhuǎn)RS232光電隔離模塊
測(cè)試用單片機(jī)開發(fā)板及軟件配置
(1) 基于ATmega128單片機(jī)控制板的特性如下:8 位ATmega128控制芯片,支持以支持100/10Base-T太網(wǎng)接口,CAN總線, 支持16032 LCD,支持RS232串口,另外配置4個(gè)按鍵,以及部分I/O接口。
(2) 程序流程圖
圖1 主程序流程圖
程序流程包含兩部分,主程序及中斷子程序。在主程序中設(shè)置系統(tǒng)參數(shù)及串口的波特率、校驗(yàn)位,等待外部按鍵觸發(fā)或下降沿中斷的產(chǎn)生,流程圖如圖1所示。圖2所示的中斷子程序主要任務(wù)是當(dāng)主機(jī)發(fā)生故障時(shí)能及時(shí)判斷并發(fā)送開機(jī)指令。
除了模擬產(chǎn)生所需要的功能之外,結(jié)合實(shí)際現(xiàn)場(chǎng)測(cè)試開關(guān)機(jī)指令的正確性?,F(xiàn)場(chǎng)連接形式如圖3所示。用RS232 / RS422模塊將單片機(jī)發(fā)送的RS232信號(hào)轉(zhuǎn)成發(fā)射機(jī)需要的RS422信號(hào)。
①按鍵開關(guān)機(jī):
由于發(fā)射機(jī)有待機(jī)、上高壓、掉高壓及關(guān)機(jī)等4種狀態(tài),所以設(shè)置4個(gè)按鍵進(jìn)行操作。實(shí)踐證明,按鍵程序和發(fā)送指令都是正確的。
②倒機(jī)指令:
當(dāng)主機(jī)產(chǎn)生故障需要倒機(jī)時(shí),發(fā)射機(jī)主控芯片會(huì)產(chǎn)生一個(gè)下降沿的跳變,為了能及時(shí)的產(chǎn)生響應(yīng),本部分采用的是中斷查詢方式,實(shí)踐證明,中斷程序和發(fā)送指令都是正確的。
圖2 中斷子程序流程圖
圖3 測(cè)試連接形式
經(jīng)過(guò)測(cè)試,驗(yàn)證了單片機(jī)對(duì)M2W發(fā)射機(jī)簡(jiǎn)單的控制及主備機(jī)倒換的功能。
因?yàn)榘存I的硬件設(shè)計(jì)采用的是查詢方式,所以在每次按鍵時(shí)都應(yīng)該持續(xù)按鍵2秒以上,以保證查詢結(jié)果的正確性,這在實(shí)際應(yīng)用中不是非常方便。并且當(dāng)時(shí)設(shè)計(jì)硬件控制板時(shí)沒(méi)有把全部I/O引腳引出,所以中斷引腳的連接不是非常方便。
經(jīng)過(guò)試驗(yàn)驗(yàn)證了開關(guān)機(jī)數(shù)據(jù)幀,樞紐臺(tái)研發(fā)組把此協(xié)議幀寫入開關(guān)采集器,并通過(guò)采集器控制50kWDAM備機(jī),實(shí)現(xiàn)了主備機(jī)的倒換。
通過(guò)多年的運(yùn)行,兩部發(fā)射機(jī)倒換效果良好,保證了安全播出。
通過(guò)對(duì)M2W及DAM發(fā)射機(jī)進(jìn)行倒換,在全國(guó)的發(fā)射臺(tái)是首創(chuàng),具有極高的創(chuàng)新及推廣價(jià)值(全國(guó)有不少M(fèi)2W機(jī)),同時(shí)中波機(jī)房實(shí)現(xiàn)全面自動(dòng)化,解放了大量的人力,保證了安全播出,為推行有人留守?zé)o人值班奠定了基礎(chǔ)。
參考文獻(xiàn):
[1] DF1 Protocol Manual-M2W. 美國(guó)羅克威爾自動(dòng)化公司
[2] Allen-Bradley on DF1. 美國(guó)羅克威爾自動(dòng)化公司
[3] 熊世桓 ,袁熙 ,朱宇峰:基于CDMA / GPRS的DF1協(xié)議通訊驅(qū)動(dòng)的開發(fā).貴陽(yáng).貴州教育學(xué)院. 數(shù)學(xué)與計(jì)算機(jī)科學(xué).2007.
[4] 杜思山:M2W 中波發(fā)射機(jī)自動(dòng)化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 2013.