工控網首頁
>

應用設計

>

串行通訊協議的研究及應用

串行通訊協議的研究及應用

2004/2/9 13:44:00
1 引言   串行接口一般包括RS232/422/485,其技術簡單成熟,性能可靠,價格低廉,所要求的軟硬件環境或條件都很低,廣泛應用于計算機及相關領域,遍及調制解調器、串行打印機、各種監控模塊、PLC、攝像頭云臺、數控機床、單片機及相關智能設備,甚至路由器也不例外(通過串口設置參數)。在計算機監控系統中,主控機一般采用工控機,通過串口與監控模塊相連,監控模塊再連接相應的傳感器和執行器,如此形成一個簡單的雙層結構的計算機監控系統。這種結構主要用于單獨的中小型企業或部門,如果屬于綜合型企業或部門,如電力系統監控,高速公路監控和收費系統,則可以此為基礎結構進行擴充,用集線器將眾多雙層監控系統連接起來,再用交換機將若干集線器連接起來,統一接上路由器,從而跟Internet互聯(當然,軟件結構也得作調整),如此即可形成一個龐大的計算機監控網絡。由此可見,盡管現代計算機的新接口層出不窮,各種網絡也日新月異,其規模也越來越大,但是,其基礎結構卻有不少是串行通訊系統,串行通訊也成了其中的核心技術。 2 串行通訊難點及協議   串行通訊是半雙工形式,通過串口發送數據相對簡單,在時間上可以隨意控制,如果使用微軟提供的通訊控件MsComm32.OCX,只要直接給Output屬性賦值即可;使用Turbo C 2.0語言或匯編語言,也只要在一個循環之內向串口的數據端口寫數據即可。但是,接收數據則比較麻煩,因為中斷接收時,數據常常不均勻流暢,其中存在空白間隔,給數據處理帶來困難。大部分監控模塊都有串口初始化函數、數據發送和接收函數,如果直接使用數據接收函數來接收數據,則由于以上問題,常常接收到殘缺的數據,使工作無法完成,盡管邏輯上沒有任何錯誤。在具體實現上,應該在接收到第一批數據時,開始等待T時間片,將第一批數據與隨后的第二批數據相加,如此繼續循環,直到新的T時間片結束而無數據到達,再跳出循環。至于T時間片大小的選取,應該根據具體的模塊或設備來調整,直到性能可靠為止,此時的時間片即為所需要的T。數據接收算法見圖1所示。
  為方便行文,將與計算機(主控機)串口相連的模塊或系統統稱為智能設備(有時包括工控機本身)。串行通訊的協議一般可分為兩類,即讀和寫。讀協議為讀取智能設備的數據,寫協議為設置智能設備參數或發送控制命令,讀協議要求有響應,寫協議可以沒有響應。讀寫協議描述見圖2所示(關于響應協議略)。常見的校驗碼有異或、累加和、CRC等。
3 通用軟件設計   目標為設計一個通用串行通訊軟件,使運行該軟件的計算機(在圖示中用帶陰影的文本框表示)作為主控機可以自動地測試智能設備,也可作為智能設備用來自動地測試主控機上的監控軟件,至于臨時發送數據以代替主控機或智能設備,則是其基本功能。為了提高通用性,軟件主界面盡量簡潔,用兩個單行文本框顯示當前接收或發送的數據,其一為16進制形式(如“41”),其二為字符形式(如“A”),用一個多行文本框顯示歷史數據,包括接收和發送的數據、串口信號線的變化以及發生的時間(精確到毫秒),其它按鈕用來打開和關閉串口、發送數據、設置串口參數及系統參數等。用Access 2000數據庫記錄數據,其中包括智能設備表、協議標志表、歷史通訊數據記錄表等,與協議表相關的表必須包含主控機協議及智能設備協議兩個字段。采用VB6.0環境來完成此軟件,所用的主要控件包括數據控件、MsComm32.OCX、Timer等。為了靈活工作,模擬各種智能設備,需要設計一“協議生成器”,對于圖2所示的“讀協議”,協議生成器的功能為:首先選擇智能設備(由此確定協議標志),設置地址范圍(即動態數據),則軟件在此范圍內自動生成地址,然后計算校驗碼,有的智能設備還需要追加協議結束標志,如調制解調器的AT命令就需要以回車符結束方才有效。協議生成器構造如圖3所示。
  主控機與智能設備方式。充當主控機時,可以定時向智能設備發送讀協議。充當智能設備時,用來響應主控機,其響應協議有兩種生成方式,靜態和動態。靜態方式時,接收到主控機的協議,查找協議表,如果能匹配主控機協議,則將該條記錄的智能設備協議發出(先讓該軟件以主控機方式工作,與實際的智能設備相連,從而記錄下智能設備的響應協議,可參考下文的“截取通訊協議”部分);在動態方式下,找到匹配的主控機協議時,響應協議利用協議生成器動態生成。   自動與手動是針對主控機而言。自動方式需要設置定時器,定時向智能設備發送讀協議;對于手動方式,則是通過發送按鈕來發送數據,從而等待智能設備的響應并顯示之。 軟件的總流程為:設置串口參數,選擇智能設備,設置協議生成方式及動態數據范圍,設置主控機或智能設備工作方式,如果是主控機,還需要設置定時器,以及是否記錄智能設備響應的協議;如果是智能設備,應選擇靜態響應或動態響應方式。主程序流程圖見圖4所示。
4 軟件的應用 4.1 發送手機短消息   手機短消息協議如圖5所示。將軟件設置成主控機手動狀態,選擇手機設備,如果想發送“OK!”,只要在單行字符文本框中直接輸入“OK!”,并點擊“發送”按鈕,則軟件自動填充其它數據,并計算BCS校驗碼,然后將數據發出。此協議是手機短消息協議之一,所采用的模塊來自西門子公司。
4.2 通過Modem進行遠程測試   將軟件設置成主控機手動狀態,選擇Modem設備,在單行字符文本框中輸入電話號碼(如025-1234567),點擊發送按鈕,則軟件自動發送AT命令“ATDT025-1234567;”+回車符,完成與遠程設備的連接,然后即可根據需要采用主控機或智能設備方式,自動或手動方式進行測試(AT命令中的“;”表示撥通對方后保持連接狀態)。對Modem進行合適的設置,可以使其自動摘機。 4.3 模擬主控機用來測試智能設備的數據性能   在計算機監控系統中,需要選擇或自行設計一些特殊的智能設備,但是,其數據性能如何?這可以通過模擬主控機來測試,將其設置成主控機自動工作方式,協議也采用動態生成方式,對智能設備響應的協議進行分析(包括協議標志及校驗碼),如果有錯誤,則記錄發生時間、主控機協議與智能設備的響應協議。測試原理見圖6所示,其中協議庫中為動態生成的主控機協議,錯誤記錄即為主控機協議與對應的智能設備響應的錯誤協議,虛線箭頭表示協議來源(下同),實際通過主控機進行記錄??偟臏y試報告內容見表1所示,單位為發送或接收的次數。詳細的測試分析可以借助錯誤記錄進行。
4.4 模擬智能設備測試主控機軟件性能   將軟件設置成智能設備動態響應狀態,充當智能設備角色,自動應答主控機的查詢命令。如圖7所示,當收到主控機協議并在協議庫中找到匹配的協議時,動態生成智能設備的協議進行響應。這種功能可用來配合開發或調試主控機程序,特別地,當智能設備比較昂貴數量較少,或體積龐大不便運輸時,采用此方式可以并行異地開發和調試針對智能設備的監控程序,既節省成本,也可極大地提高工作效率。作為一種特例,可用一臺PC機進行模擬開發和調試,智能設備掛在COM2口,開發或調試的軟件掛于COM1口,COM1和COM2對接。單機仿真開發模型見圖8所示。
4.5 截取通訊協議   現假設某公司生產一智能設備,與該設備配套的測試軟件運行于測試機上?,F欲截取測試機與智能設備之間的通訊協議,作者的軟件運行于偵聽機上(如圖9所示)。在這里,偵聽機充當二傳手的作用,首先通過COM1口截取測試機發來的協議,存入協議庫,隨后通過COM2口將原協議發往智能設備。偵聽機通過COM2口收到智能設備的響應后,將協議存入協議庫(與相應的測試機協議位于同一條記錄),隨后通過COM1口將原協議發往測試機。如此即可將測試機與智能設備之間的通訊協議全部截取并保存。
4.6 通訊協議的破譯與應用   通訊協議一般包括功能碼、地址碼、有效數據、校驗碼和結束標志(可選),常用的校驗碼有異或、累加和、CRC等。通訊協議截取后,依次分析校驗碼、功能碼、地址碼和數據。可以模擬主控機觀察智能設備的動作響應和信號燈變化,也可以模擬智能設備觀察主控機軟件界面的變化。如果協議沒有加密,則只要直接分析協議即可;如果協議已經加密,可以利用密碼學中的方法去分析解密,然后再分析協議本身。有的通訊協議在數據加密的同時,還配合信號線的變化。由于軟件主界面的多行文本框顯示并記錄著串口的收發數據及信號線變化的歷史狀態,包括發生時間,這給協議分析提供了重要的原始資料。   協議破譯成功后,即可自行開發軟件對智能設備進行監控。在文獻1中,作者遇到從德國進口的大型柴油發電機組(以下簡稱油機),可利用提供的串口對其進行監控。但是,卻沒有該油機的合適版本的通訊協議,只有廠家配套免費提供的簡單的油機測試軟件(運行于主控機上)。一般情況下,都是通過人工對油機啟動或停機。在項目改造中,需要對油機進行監控,如果編寫項目任務書,請廠家設計監控軟件,無疑周期較長,價格較貴。作者通過此協議截取和破譯方法,成功地破譯其通訊協議,并設計出監控軟件。 5 結論   該研究<
投訴建議

提交

查看更多評論
其他資訊

查看更多

PLC一體機之EK溫度修正使用技巧

S7-300CPU存儲器介紹及存儲卡使用

0.05級超高精度互感器

DC-DC轉換器(電源模塊)應用指南——外接濾波電容選配

施羅德最小流量閥的應用范圍及優點