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