盧亞普 陳強 張世福
大慶鉆探工程公司測井公司 大慶 163412
RS485總線調試設備的接口設計
盧亞普 陳強 張世福
大慶鉆探工程公司測井公司 大慶 163412
介紹了RS485總線調試設備的實現原理,論述了三種總線接口及通信軟件的實現方法,完成了對石油測井儀器工作狀態的顯示。
USB;RS232;RS-485;API;奇偶校驗
USB;RS232;RS-485 ;Parity Check
現代石油測井儀器研究和生產過程中,經常要對數據進行采集分析。RS485總線調試設備的設計目的,就是采集儀器信息、顯示儀器工作狀態,滿足生產調試需求。此設備與井下儀器采用RS485總線進行通信;與計算機通訊采用U S B和RS232雙接口的設計。
USB是一個外部總線標準,用于規范電腦與外部設備的連接和通訊。USB接口支持設備的即插即用和熱插拔功能。USB總線屬一種輪訊方式的總線,主機控制端口初始化所有的數據傳輸。在每次傳送開始時,主機控制器發送一個描述傳輸運作的種類、方向,USB設備地址和終端號的USB數據包。數據傳輸方向不是從主機到設備就是從設備到主機。
RS232個人計算機上的通訊接口之一,由電子工業協會所制定的異步傳輸標準接口。異步通信用一幀來表示一個字符,其內容如下:一個起始位,僅接著是若干個數據位,最后一個停止位。異步通信的好處是通信設備簡單、便宜,但傳輸效率較低(因為開始位和停止位的開銷所占比例較大)。
RS-485是工業界使用最為廣泛的雙向、平衡傳輸標準接口,支持多點連接,允許創建多達32個節點的網絡;具有傳輸距離遠(最大傳輸距離1200m),傳輸速率快(1200 m時為100kb/s),抗干擾能力強,布線簡單等優點。
2.1 USB接口硬件電路構成
U S B接口芯片采用C H系列的CH372芯片,該芯片是一個USB 總線的通用設備接口芯片,是CH371 的升級產品,是CH375芯片的功能簡化版。 在本地端,CH372 具有8位數據總線和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機 /DSP/MCU/MPU 等控制器的系統總線上;全速USB 設備接口,兼容USB V2.0,即插即用,外圍元器件只需要晶體和電容。提供一對主端點和一對輔助端點,支持控制傳輸、批量傳輸、中斷傳輸。該設備采用8951作為控制器,其接口原理如圖1所示:

圖1 USB接口電路圖
2.2 232接口硬件電路構成
51 單片機通過I/O口與PC 機RS232串口實現通信的硬件接口電路如圖2示。5 1單片機的輸入、輸出均采用T T L電平;而PC機采用的串行通信標準為RS-232。RS-232規定了自己的電氣標準,由于它是在TTL電路之前研制的,所以它的電平不是+5V和地,而是采用負邏輯,即:
邏輯“0”:+5V~+15V
邏輯“1”:-5V~-15V
因此,RS-232C不能和TTL電平直接相連,使用時必須進行電平轉換,否則將使TTL電路燒壞。MAX232芯片就是MAXIM公司專門為PC機RS-232標準串口設計的電平轉換電路。該芯片與TTL/COMS電平兼容,片內有2個發送器,2個接收器,且使用+5V單電源供電,使用十分方便。圖中 89C51 的 P1.2模擬發送端,P1.3 模擬接收端。

圖2 232接口電路圖

圖3 485接口電路圖
2.3 485 接口硬件電路構成
如圖3,單片機的標準串行口的RX 、TX通過光電隔離電路連接MAX485芯片的RO 、DI引腳,控制芯片R/D同樣經光電隔離電路去控制MAX485芯片的DE和RE引腳。由單片機輸出的R/D信號通過光電隔離器件控制MAX485芯片的發送器、接收器使能;R/D信號為“1”,則M A X 4 8 5芯片的D E和R E引腳為“1”,接收器有效,接收器禁止,此時單片機可以向RS485總線發送數據字節;R/D信號為“0”,則M A X 4 8 5芯片的D E和R E引腳為“0”,接收器禁止,接收器有效,此時單片機可以接收來自RS485總線的數據字節。
在進行數據通信時,必須解決好兩個方面的問題:一是可靠性、二是速度。而這兩方面的問題,可靠性是第一位的,速度只能是在可靠的基礎上的速度??煽靠焖俎D輸的實現需要上下位機軟,件以及通信協議等各個環節的可靠和其間的相互配合。在設計PC— MCU通信協議時,說明一點:本系統的實際通信中PC機永遠是主控者,單片機只是被動接收者。
3.1 PC— MCU通信程序設計
對于不同的PC— MCU應用程序,雖然界面不同,但是如果采用串口與主機之間的通信,對串口的處理方式大致相似,無非就是通過串口收發數據,對于通過串口接收到的數據,交給上層軟件處理顯示,對于上層要發給串口的數據,進行轉發。在Win32下,可以使用兩種編程方式實現串口通信,其一是調用的Windows的API函數,可以清楚地掌握串口通信的機制,熟悉各種配置和自由靈活采用不同的流控進行串口通信;其二是使用ActiveX控件,提供了一系列標準通信命令的使用接口,利用它可以建立與串口的連接,并可以通過串口連接到其他通信設備(如調制解調器),發出命令,交換數據以及監視和響應串行連接中發生的事件和錯誤。后者的主要特點是簡單易學 ,但前者的功能更為強大,控制手段更為靈活。所以本應用程序采用在Win32 環境下調用 API 函數來實現與位于下層的設備驅動程序進行數據通信。具體實現通訊過程如下:
3.1.1 打開串口
Win32系統把文件的概念進行了擴展。無論是文件、通信設備、命名管道、郵件槽、磁盤、還是控制臺,都是用API函數CreateFile來打開或創建的。該函數的原型為:


3.1.2 配置串口
主要有一個結構體來配置,DCB結構體。DCB結構包含了諸如波特率、數據位數、奇偶校驗和停止位數等信息。在查詢或配置串口的屬性時,都要用DCB結構來作為緩沖區。一般用CreateFile打開串口后,可以調用GetCommState函數來獲取串口的初始配置。要修改串口的配置,應該先修改D C B 結構,然后再調用SetCommState函數設置串口。
3.1.3 讀寫串口
初始化工作完成以后,便可以根據通信協議使用ReadFile和WriteFil兩個函數,讀寫各種握手信息和數據信息等。ReadFile函數只要在串口輸入緩沖區中讀入指定數量的字符,就算完成操作。而WriteFile函數不但要把指定數量的字符拷入到輸出緩沖區,而且要等這些字符從串行口送出去后才算完成操作。如果通信事件一直沒有發生,系統將不會繼續執行。在實際程序設計中,我們可以設置一時限,超過此時限通信事件未到則執行相應錯誤處理。此函數的聲明形式如下:

3.1.4 關閉串口
利用API函數關閉串口非常簡單,只需使用CreateFile函數返回的句柄作為參數調用CloseHandle即可:

3.2 通信程序的可靠性措施
只有通信協議是可靠的,才能保證數據傳輸的可靠性。主要通過以下兩種措施確保通信傳輸的準確無誤:
3.2.1 數據傳輸方式 用一幀來表示一個字符,其內容為:一個起始位,僅接著是若干個數據位,最后一個停止位。數據發送和接收均將起始位和停止位作為開始和結束的標志,這樣就可以降低數據傳輸的誤碼率。

圖4 一幀數據格式
3.2.2 檢錯校驗方式 在串口數據通信中,常用的檢錯校驗方法有兩種:
冗余校驗碼(CRC),基本思想是利用線性編碼理論,在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的監督碼(既CRC碼)r位,并附在信息后邊,構成一個新的二進制碼序列數共(k+ r)位,最后發送出去。在接收端,則根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。是一種高效的差錯控制方法,實現相對復雜。
奇偶校驗,通常用在數據通信中來保證數據的有效性。根據被傳輸的一組二進制代碼的數位中“1”的個數是奇數或偶數來進行校驗。采用奇數的稱為奇校驗,反之,稱為偶校驗。采用何種校驗是事先規定好的。通常專門設置一個奇偶校驗位,用它使這組代碼中“1”的個數為奇數或偶數。若用奇校驗,則當接收端收到這組代碼時,校驗“1”的個數是否為奇數,從而確定傳輸代碼的正確性。校驗處理過程簡單,應用廣泛,一般異步傳輸模式選用偶校驗。
通信程序采用異步傳輸模式進行數據傳輸,格式如下:
通過以上兩種措施的應用,數據傳輸出錯的可能性就會極大的降低,確保傳輸的數據是可靠、準確的。
經過電路軟、硬件調試和部件組裝,RS485總線調試設備實現了單片機與PC機之間的數據通訊,完成了對井下儀器數據的采集分析,適應了生產調試的需求,實踐證明有較強的實用價值。
[1]李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社.2001
[2]李朝青.PC機與單片機數據通信技術[M].北京:北京航空航天大學出版社.2003
[3]冉林倉.Windows API編程[M].北京:清華大學出版社.2005
[4]朱友芹.新編WIN32 API 參考大全[M].北京:現代出版社.2000
[5]大慶測井公司.PCM9801-R1數傳協議.2006(資料)
In the paper ,the principle and implementation of the RS485 bus debugging system is introduced, discussed the three bus interface and the realization method of communication software, has completed to the well logging instrument active status demonstration.
10.3969/j.issn.1001-8972.2011.1.019
盧亞普,黑龍江省大慶市讓胡路區銀浪測井公司研究所。