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