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