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