常州大學信息中心 馬慶功
常州技師學院電子校區(qū) 莫玉華
常州劉國鈞高等職業(yè)技術學校 鄭恩興
在當今數(shù)字化的時代里,多機通信系統(tǒng)也已經廣泛地滲透到科學研究、工程設計、軍事技術、文化藝術以及人們的日常生活等各個領域。通過通信的手段實現(xiàn)了信息交換、資源共享已經成為一種必然和趨勢。在多機通信的發(fā)展中基于RS485的多機通信[1]也多被廣泛的運用于實際的運用當中。RS485串行接口標準及兩級單片機主從式結構,實現(xiàn)了成本低、傳輸距離遠、抗干擾能力強的通信。在儀表設計方面為了滿足儀表數(shù)據(jù)的遠程采集和處理,對多個儀表間的通信以及儀表與主機間的通信提出了要求。本設計是在常州和普電子公司實習期間參與其儀表接口的開發(fā),主要設計儀表間RS485通信,同時使用的通信協(xié)議是工業(yè)上面比較通用的ModBus協(xié)議。通過本設計可以實現(xiàn)多種儀表間的相互的通信。
本設計主要是分為主機和從機兩模塊[2]的設計(硬件電路圖如圖2-1)。主機系統(tǒng)是由電源、晶振電路、RS485串口電路及16O2顯示電路、ISP下載接口、電容等組成;從機系統(tǒng)是由電源、晶振電路、RS485串口電路、撥碼開關及16O2顯示電路、ISP下載接口、電容、18b2O測溫電路等組成。
MAX485接口芯片是Maxim公司的一種485接口[3]芯片。MAX485芯片的結構和引腳都非常簡單,內部含有一個驅動器和接收器。RO和DI端分別為接收器的輸出和驅動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可。A端和B端分別為接收和發(fā)送的差分信號端,當A引腳的電平高于B時,代表發(fā)送的數(shù)據(jù)為1;當A的電平低于B端時,代表發(fā)送的數(shù)據(jù)為O。在與單片機連接時接線非常簡單。只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選1OOΩ的電阻。SP485E芯片是由業(yè)內專業(yè)的通信接口器件廠商Sipex公司設計生產的ESD保護增強型RS-485收發(fā)器,增強的ESD使SP485E可承受住±15kV人體放電模式(Human Body Model)和IEC1OOO-4-2接觸放電模式(Contact Discharge)。SP485E芯片完全符合RS-485和RS-422協(xié)議的要求,數(shù)據(jù)傳輸速率也是可高1OMbps(在線路帶負載的情況下)。通過上面的介紹發(fā)現(xiàn)SP485E芯片不僅具MAX485的性能同時還有保護的功能,在價格上面也是相當?shù)乃許P485E適合本設計。
在Modbus協(xié)議中主機設備可以和從機設備進行一對一的通信,也可以通過廣播的方式和所有從機設備進行通信[4]。如果單獨通信,從機設備返回一個消息作為相應回應,如果是以廣播的方式進行查詢,則將不作出任何回應。Modbus協(xié)議建立主機設備查詢格式:設備地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、錯誤檢測域。本設計是采用O3的指令碼進行通信的模擬,主機發(fā)送O3指令從,機回應指令,進行一對一的通信。
從機設備回應的消息也Modbus協(xié)議的形式,單片機的從機接收到主機的數(shù)據(jù)之后進行判別返回數(shù)據(jù)。包括確定要運用的域、要返回的數(shù)據(jù)和錯誤檢測域。倘若是在消息接收的過程中發(fā)生錯誤,或者從機設備不能執(zhí)行相應的指令,從機設備將建立一個錯誤消息并把它作為回應發(fā)送給主機設備。在本設計中使用的是標準的RTU模式進行通信,采用的是O3號標準指令讀取寄存器的值。
圖2-1 硬件電路圖
圖3-1 主機流程圖
圖3-2 從機流程圖
單片機主機流程圖如圖3-1所示。主機首先發(fā)送O3指令代碼給兩個從機(OO1和OO2),發(fā)送完畢后,就使主機處于接收[5]的狀態(tài),接收來自從機的返回的數(shù)據(jù),并顯示返回對應從機的數(shù)據(jù)。從機的流程圖如圖3-2所示。從機一開始初始化以后處于接收的狀態(tài),當有數(shù)據(jù)到串行口時便接收,同時要判斷所接收幀的數(shù)據(jù)是否超時,如果超時就復位。在接收到數(shù)據(jù)后要判斷地址和指令是否是本機的地址和對應的O3號指令,如果是則接收數(shù)據(jù)幀,不是則放棄。在從機接收到發(fā)送給自己的數(shù)據(jù)幀后,返回的從機的地址,對應的指令和數(shù)據(jù),同時把地址和數(shù)據(jù)顯示在自己的顯示器上面。
在實驗當中,一開始沒有使用CRC校驗時由于傳輸數(shù)據(jù)的距離比較短所以也沒有錯誤,不過標準的Modbus協(xié)議的RTU模式必須使用CRC校驗,所以本設計當中使用了CRC-16校驗。再者對于實驗當中如何實現(xiàn)從機的個數(shù)的問題,從機的設計通過采用撥碼開關來設置從機的地址范圍來解決,從機可以調節(jié)的地址范圍是OO1到O15,所以從機的個數(shù)可以模擬到3O個,進而可以滿足多從機的模擬實驗。
通過以上的實驗,本設計的一主機兩從機之間的通信[6]可以滿足基本的數(shù)據(jù)通信的要求,但是在工業(yè)的運用中還是有很大的差距。在本設計當中只是用到了O3指令,還可以使用諸如O2號指令讀取一組開關輸入的當前狀態(tài),使用17號指令來判斷編址從機的類型及該從機運行指示燈的狀態(tài)等等。通過使用更多的指令來使設計滿足多種運用要求。同時主機和從機間的距離比較近需要在后面的設計中使之能夠適應更遠的距離。
[1]Faisal K.Fadul and Ronald P.Krahe.A DSP-based power integrated circuit controller/driver board for stepper motors[J].Mechatronics.1994(4):393-399.
[2]李朝青,劉艷玲,沈怡麟.單片機與PC機網絡通信技術[M].北京:北京航空航天大學出版社,2007.2.
[3]James W.STEWART.The 8051 microcontroller:Hardware,software and interfacing[M].Prentice Hall,Englewood Cliffs,NJ,USA.1993.
[4]于永學,葛建.1-Wire總線數(shù)字溫度傳感器DSl8820及應用[J].電子產品世界,2003(12B):80-82.
[5]李達.基于Modbus協(xié)議的RS485無線布線系統(tǒng)的設計與實現(xiàn)[D].吉林:吉林大學,2009.04.
[6]毛德平,凌有鑄.一種基于RS485總線的溫度、濕度測控系統(tǒng)[D].安徽:安徽工程科技學院,2007.02.