2.2 終端以太網通信方式的命令收發測試
測前需先確定DZ3載波阻抗測試終端的硬件無故障,程序修改完編譯無錯誤后即可載入芯片中開始具體的測試。測試方法是先使用網絡調試助手發指令給終端,若終端能辨識出接收的指令正確與否,同時正確回復所有接收正確的指令,則表示終端軟、硬件均無誤,可與主站連接正常工作。終端回復的數據包中數據格式多樣,有些為十六進制數據,有些則為BCD碼,還有些為WORD型數據。
主要測試的幾條常用指令如下:
?。?) ID號的上傳
主站開機,若選擇以太網通信方式,主站向終端發送“04 04 FF 00”命令,要求終端上傳ID號,終端中斷接收函數(void IntUart0Rx(void) interrupt 4,串口0接收中斷函數)接到04命令后,進入GPRS_RecString_Comp函數,對接收到的串比較,判斷接收到的串中與04命令匹配后,對相應的標志置位設置為1,表示終端連接上網絡了。又返回中斷接收函數。后進入USB_Poll()函數,若Comcode=0x04,用串口發送ID給主站。具體測試如下:
主站發:04 04 FF 00
終端回復:相應終端設備的ID號,如84 00 00 0C 0C 05 00 01 03 03 80 00。
終端回復的數據串表示接收數據的長度為12位(終端回復主站的命令的第3位與第4位表示報文長度,00 0C是十六進制數據,轉為十進制數值為12),該測試終端的ID號的流水號為: 000133。
若終端無回復,則需先檢查網絡調試助手與終端是否已建立連接,確定連接后,逐步調試程序,查看程序的串口接收函數中有無指令接收到,如此逐步查詢直至找到具體故障點。若終端回復的位數不對或是回復的數據有誤,則需先查看接收到的指令是否正確,若正確則進入相應指令的數據處理函數,辨別是終端數據處理不當還是數據包發送時發生了掉包故障,亦或是主站接收程序的故障。
?。?)狀態讀回
主站發要求讀回當前測試狀態的08命令給終端,終端接收到命令,進入USB_Poll() 函數,先解析命令,得知是08命令后(即Comcode=0x08),進入08命令的處理程序,數據處理后需上傳給主站的數據包使用串口發送給主站。測試如下:
主站發:08 04 F3 00
終端回復:終端設備的當前具體狀態,如88 00 00 12 05 02 A0 8C 20 11 07 07 17 16 34 19 55 00。
從接收數據串的第3位和第4位可知主站接收到的這串數據長度為18位(00 12十進制為18),05表示測試的組間時間間隔為5 min,02表示頻點時間間隔為2 min,當前測試頻點為110 kHz(A08C十進制為41 100,
41 100-40 000=1100,1 100/10=110),20 11 07 07 17 16 34 19則表示當前的時間狀態:2011年、周六、7月、17日、16時、34分、19秒。
其他所有指令的發送與接收都是在確定ID號上傳正確后才可進行,此時可確定串口的收發程序無誤,直接調測命令解析與數據處理部分的程序。
?。?) 阻抗實時測量
主站發03命令給終端,終端接收到命令,進入USB_Poll()函數,解析得知是03命令后(即Comcode=0x03),進入03命令的處理程序,在實時測量結束后,把測量所得的數據通過串口發送當前狀態給主站。阻抗實時測量的測試過程如下:
主站發:03 04 F8 00
終端回復:終端當前測量的頻率點、阻抗模值及相位等數據。如83 00 00 21 11 07 15 2B 5C 16 09 00 31 FF F8 52 6C 16 09 00 66 FF FD 79 7C 16 09 00 CC FF FD 91 00。
終端答復主站的這串數據的長度為33位(00 21十進制為33),11 07 15表示11年7月15日,2B 5C表示測試頻率點為110(2B 5C十進制為11 100, 11 100-10 000=1 100,1 100/10=110) ,16 09表示16時9分,阻抗模值為20.4(00 CC十進制為204,204/10=20.4),FF FD分別為相位高低位的計算參數,91為校驗位,00表示最后的結束符。終端實時測量的具體回復數據會依據當前主站設置測量的參數值而變化。
若終端回復的數據與主站設置的參數不一致,需要查看03命令的解析程序解析結果是否正確,若命令解析無誤則應逐步調試阻抗測量部分的程序,觀察幾條關鍵程序執行后得到的結果與理論值是否相近。
?。?) 讀終端上報數據
當測試人員想查看前一天的測試數據時,測試人員可登入主站管理軟件,用主站發02命令給終端,02命令可使終端把所有的測試數據上傳給主站。終端接收到命令,進入USB_Poll() 函數,解析得知是02命令后(即Comcode=0x02),進入02命令處理的那段程序,除中間的7次循環發送0這一點上存在區別(以太網通信方式不發而USB發)外,其他數據都由串口發送給主站。02命令的回復數據包含了前一天或是前幾天的測試數據(DZ3阻抗測試終端最多可記憶8天的測量數據),因此其回復的數據包長度是所有報文指令中最長的。具體測試結果如下:
主站發:02 04 F9 00
終端回復:終端內存儲的所有阻抗測量數據。如82 00 00 27 12 04 05 31 9C 00 01 09 00 00 CB FF FC 58 AC 00 01 09 00 02 0A FF FB 7F BC 00 01 09 00 05 ED FF FC F4 00,具體回復的數據依據終端測量所得的數據而定。
終端回復的82報文內容可分為三部分:數據頭、數據段及結束段。數據頭含命令類型、回復命令的狀態、數據包的長度及時間四點。如上面回復報文中的前幾位82 00 00 27 12 04 05表示終端回復的是82命令,00表示命令狀態正常,00 27說明數據包長度為39位,發送時間為12年4月5日。數據段由多個阻抗測試數據塊組成,解析數據塊可得知測試的頻率點、此頻率點下測試所得的數據長度、測試該點的時間、測得的阻抗模值及相位。例子中的第一個數據塊31 9C 00 01 09 00 00 CB FF FC即表示測試頻點為270 kHz(31 9C十進制為12 700,(12 700-10 000)/10=270),00 01是WORD型數據表示該數據塊的長度,09 00 說明測試時間在9點整,00 CB用于計算阻抗模值,FF FC則用于相位的計算。終端回復的數據包的最后兩位數據F4 00是結束段,F4為校驗位,00是結束符。
一臺終端用于測試的時間越長,內部存儲的數據會隨之增多(每臺終端最多可存儲8天的測量數據)。終端傳給主站的上報數據越多,主站接收數據包的過程中就有可能發生數據掉包或數據錯誤等故障,這時可用網絡調試助手發送02命令給終端,若網絡調試助手接收到終端回復的數據包完整,則表示故障點在主站的接收或解析數據包程序中,否則表示終端有故障。
評論