80C196KB與PC機之間的遠程通訊系統(tǒng)設(shè)計
調(diào)制解調(diào)器安裝好后,必須預(yù)先設(shè)置好調(diào)制解調(diào)器的初始狀態(tài),然后再開通。否則通訊將不會成功。用戶對Modem初始化狀態(tài)的設(shè)置可以保存在非易失性RAM中。
下面對表3所列的傳輸過程進行說明。
(1)在握手初期,兩端的DTE需對Modem進行復(fù)位操作。為此,它們先給本端的Modem發(fā)ATZ命令。若Modem能執(zhí)行重設(shè)操作,便會返回結(jié)果碼OK,若Modem尚未與電話線連接,便返回NO DIALTONE,表示沒有撥號音。
(2)兩端DTE給各自的Modem發(fā)ATF命令,調(diào)入Modem出廠缺省設(shè)置。
(3)主叫端DTE(196KB)向應(yīng)答端Modem發(fā)撥號命令A(yù)TDT xxxx(ATDT表示音頻撥號,xxxx為對端的電話號碼)。當對端Modem檢測到振鈴(RING)后,由PC機控制并回送應(yīng)答呼叫命令A(yù)TA。如果話路正常,則在一定的延時后,兩端Modem收到結(jié)果碼CONNECT 9600,并使Modem的CD指示燈亮,以表明數(shù)據(jù)傳輸鏈路成功建立。
(4)數(shù)據(jù)傳輸。
(5)數(shù)據(jù)通訊完成后,雙方Modem要拆鏈掛機。“+ + +”命令是由數(shù)據(jù)傳輸狀態(tài)轉(zhuǎn)為命令狀態(tài)的AT指令,它的前后必須有一段時間延時。當Modem狀態(tài)變?yōu)槊顮顟B(tài)時,可以用命令A(yù)TH來實現(xiàn)掛機。至此,兩臺Modem間的通訊任務(wù)就完成了。此時PC機內(nèi)已存放了主機傳來的數(shù)據(jù),將這些數(shù)據(jù)存入數(shù)據(jù)庫后可作進一步的處理。
5 數(shù)據(jù)傳輸?shù)牧髁靠刂坪蛡慑e糾錯
當兩端Modem正確可靠地建立起數(shù)據(jù)鏈路后就可以進行數(shù)據(jù)通訊了。在通過電話系統(tǒng)傳輸數(shù)據(jù)時,沒有一種簡單的方法能確保數(shù)據(jù)正確完整地到達對方。數(shù)據(jù)錯誤的發(fā)生可能有多種原因。由于串行通訊時數(shù)據(jù)是逐位發(fā)送的,因此即使極小的噪聲都有可能在多個位上造成嚴重錯誤,當波特率較高時出現(xiàn)錯誤更嚴重。在實際應(yīng)用,常采用XMODEM協(xié)議對數(shù)據(jù)進行打包處理以檢測傳輸過程中出現(xiàn)的錯誤,若檢測到錯誤信息,則要求重傳出現(xiàn)錯誤的數(shù)據(jù)信息。理論上講如果每個數(shù)據(jù)包都能正確地傳送,那么整個數(shù)據(jù)塊也將成功地傳送。XMODEM協(xié)議按照一套特定的準則控制著數(shù)據(jù)傳輸?shù)乃屑毠?jié),其中包括如何啟動傳輸、包的大小、包的內(nèi)容、正負應(yīng)答以及如何完成傳輸?shù)取?p>XMODEM協(xié)議雖然較為成熟和完美,全過于復(fù)雜。本系統(tǒng)借鑒XMODEM協(xié)議的設(shè)計思想,并針對現(xiàn)場監(jiān)控數(shù)據(jù)的特點,設(shè)計了一套簡潔的流控和偵錯協(xié)議。從本系統(tǒng)的實際運行情況來看,該協(xié)議可保證數(shù)據(jù)的可靠傳輸,并能在話路質(zhì)量較差時多次重發(fā)出錯的數(shù)據(jù)幀直到數(shù)據(jù)傳輸正確為止。
圖3為上位機通信子程序的流程圖,它主要利用VB6.0的通訊控件MSComm的ON COMM事件。
本系統(tǒng)在每次通信中,由80C196KB送給PC機的有效數(shù)據(jù)幀共4320幀,每幀113字節(jié)。其中有效字節(jié)112個,以3個FFH開頭,最后1個字節(jié)為異或結(jié)果,可用于傳輸后的異或校驗。在發(fā)送有效數(shù)據(jù)幀之前,下位機先發(fā)一個請求幀(仍為113字節(jié)),其幀結(jié)構(gòu)為112個F0H加一異或結(jié)果。上位機收到該幀請求信號后,將回送握手成功信號,并作好接收有效數(shù)據(jù)的準備。下位機收到上位機發(fā)回的握手成功信號后,便將有效數(shù)據(jù)幀逐幀發(fā)送。
上位機對每幀數(shù)據(jù)的均要作異或校驗。如有錯誤的則回送失敗信號,并要求下位機重發(fā);正確的則放入緩沖數(shù)組以備存庫,并回送成功信號。當有效數(shù)據(jù)幀發(fā)送完畢后,下位機將發(fā)一個結(jié)束幀,其幀結(jié)構(gòu)為112個FCH加一個異或結(jié)果。上位機收到該幀結(jié)束信號后,發(fā)出AT命令“+ + +ATH”以拆鏈掛機。至此,數(shù)據(jù)通信過程結(jié)束,之后,上位機將緩沖數(shù)組里數(shù)據(jù)存入數(shù)據(jù)庫,以便日后進行數(shù)據(jù)分析。
6 結(jié)束語
利用公用電話網(wǎng),80C196KB單片機系統(tǒng)可通過Modem與遠方監(jiān)控中心進行通訊。這種系統(tǒng)的軟硬件設(shè)計方案簡單可行,運行成本低,數(shù)據(jù)傳輸速率較高。本監(jiān)控系統(tǒng)已在現(xiàn)場投入使用,經(jīng)受了實際考驗??赏茝V應(yīng)用于各類遠程通訊系統(tǒng)。
評論