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

















評論