歡迎您光臨本站 登入註冊首頁

概述

   現場匯流排技術是當今自動化領域發展的熱點之一。它是一種以智能感測、控制、計算機、數據通信為主要內容的綜合技術。用於現場儀器儀錶與控制系統和控制室之間的一種全分散、全……

    現場匯流排技術是當今自動化領域發展的熱點之一。它是一種以智能感測、控制、計算機、數據通信為主要內容的綜合技術。用於現場儀器儀錶與控制系統和控制室之間的一種全分散、全數字化、智能、雙向、多點、多站的通信網路。在工業控制領域的應用非常廣泛。CAN匯流排即控制器區域網,具有高位速率、高抗電磁干擾性、低成本、極高的匯流排利用率。可根據報文的ID決定接收或屏蔽該報文。網路上最多可達110個節點。可靠的錯誤處理機制。最大傳輸距離達到10km。最快傳輸速率可達1Mps。CAN匯流排作為一種技術先進、可靠性高、靈活性好、功能完善且成本合理的遠程網路控制方式在工業控制領域中的應用非常廣泛。但就目前的市場的情況,大多數的現場智能儀器儀錶、電機啟動保護裝置、電量測量裝置、各種變送器和變頻器通常採用了Modbus串列介面通信協議。採用該協議可使不同的廠商生產的控制設備可以互連成工業網路,實現集中監控。由於Modbus協議實現了OSI參考模型中應用層的定義。通常作為儀錶設備層網路通信。而Modbus協議與CAN匯流排協議是互不兼容的。為此。筆者開發了一種Modbus協議與CAN匯流排協議的轉換器,實現了採用Modbus通信協議的設備接入到CAN現場匯流排網路中。此轉換器可應用在通信速度要求不高的系統中。具有設備簡單.通用性強。易於集成和監控的特點。

1 Modbus協議簡介
    Modbus通信協議由Modicon公司開發的。是一種應用在PLC或其他工業控制器上的一種通用語言。通過此協議,各控制器之間可以實現串列通信。Modbus通信協議定義了一個控制器能識別使用的消息結構,描述了主控制器訪問從站設備的過程。規定從站怎樣做出應答響應。以及檢查和報告傳輸錯誤等。Modbus協議的通信方式為主從方式。主站首先向從站設備發送通信請求指令,從節點根據請求指令中的功能碼向主站發回回答數據。網路中的每個從站設備都必須分配給一個唯一的地址,最多可達31個從站設備。通過多達24種匯流排命令實現主控制器與從站設備之間的信息交換。從站設備只執行發給自己的指令。對於其它從站地址開頭的報文不作應答。這種一問一答的通信模式,大大提高了通信的正確率。具有操作簡單、高效、通信可靠等優點。由於Modbus協議已成為一個國際通信標準,得到了國際上大多數工控產品生產廠家的支持,該通信協議已廣泛應用於機械、水利、電力、環保等行業設備中。

1.1 傳輸物理層
    Modbus標準的物理層可以採用RS232串列通信方式.它定義了連接器的引腳、電纜、信號位、傳輸波特率、奇偶校驗等內容。在長距離通信中通常採用RS485網路。通信介質採用屏蔽雙絞線,通信距離可達1000m。傳輸線上的信息交換是半雙工的,即同時只能有一台設備允許發送信息,主站在發送下一條指令之前要等待從站設備回應,從而避免了線路的衝突。

1.2 傳輸模式
    Modbus通信有兩種模式:ASCII模式和RTU模式。在ASCII傳輸模式中,消息中的每個8位位元組都作為兩個ASCII字元發送。這兩部分各含4位,然後轉換成十六進位等量值。用以構成報文的ASCII字元。ASCII模式使用的字元雖是RTU模式的兩倍,但ASCII數據的解碼和處理更為容易一些,用ASCII模式,字元之間可產生長達1s的間隔,以適應速度較快的機器。對於通信數據量小而且實時性要求不高的場合.通常採用ASCII模式。在RTU模式中,每個8位位元組包含兩個4位的十六進位字元,在通信過程中,報文字元以連續數據流的形式傳送,對於數據通訊量較大且實時性要求高的場合,通常採用Modbus RTU模式。在一個Modbus通信系統中只能選擇一種模式,不允許兩種模式混合使用。主站一次可向一個或所有從站發送通信請求(或指令),主設備通過消息幀的地址域來選通從設備。消息幀的格式為:起始標誌+從站地址+功能碼+數據域(據起始地址、數據量、數據內容1+校驗碼+結束標誌。從站應答的信息內容和順序與主站信息幀基本相同,從站應答的數據域內容依據功能碼進行響應。
 
圖1 系統的總體結構
1-3 錯誤校驗方法
    Modbus通信的兩種模式的錯誤校驗方法不同,在ASCII模式中採用LRC(縱向冗餘檢測)校驗,具體的方法是將消息域中的地址域、功能碼、數據域的所有8位的位元組數據連續累加.不考慮進位。得到2位元組的LRC碼。在RTU模式中採用CRC(循環冗餘檢測)校驗。具體的方法是將信息域中地址域、功能碼、數據域的所有位元組按規定的方式進行位移並進行XOR(異或)計算,得到2位元組的CRC碼。校驗碼在信息幀作為一連續的流進行傳輸。從站在收到該信息幀時按同樣的方式進行計算.並將結果同收到雙位元組校驗碼比較,如果一致就認為通信正確,否則認為通信有誤,從站將發送錯誤應答。

2 方案設計
    系統的總體設計方案如圖2所示。由於大多數組態軟體不支持CAN匯流排,因此組態軟體和CAN匯流排數據交換通常採用DDE方式和OPC方式。筆者採用ZLGCAN介面卡和ZOPC SERVER,以OPC方式實現組態軟體與CAN匯流排的數據交換。連接在計算機網路中的其它客戶端應用程序也可以通過OPC介面訪問現場的數據,很方便地實現數據的遠程監控。在整個控制系統中,CAN現場匯流排作為上層監控網路,上位機通過CAN介面卡與CAN匯流排上的各個節點連接.Modbus匯流排作為應用設備層網路.用於連接Modbus儀錶設備、支持Modbus協議的變頻器等,通過CAN轉換器實現Modbus匯流排到CAN現場匯流排的轉換。從而實現上位機監控軟體對Modbus匯流排網路的各設備進行配置和數據監控。此系統具有開發成本低、應用靈活、易於管理等特點。
 
圖2 轉換器的硬體結構原理圖
2.1 轉換器硬體總體設計
    在整個CAN監控網路系統中,該轉換器作為一個CAN從站節點,另外一側,該轉換器通過RS485網路與Modbus從站設備連接,組成Modbus匯流排網路。負責向Modbus從站設備發送的Modbus通信報文並等待接收響應報文。圖3為CAN匯流排協議與Modbus協議的轉換器硬體結構原理圖.主要包括CAN匯流排介面設計和Modbus介面設計。
 
圖3 CAN與Modbus轉換原理
2.2 CAN匯流排介面設計
    CAN匯流排控制器種類很多,筆者採用PHILIPS公司的CAN控制器晶元SJA1000。SJA1000既支持CAN2.0A協議,也支持CAN2.0B協議,BasicCAN工作於CAN2.0A協議,PeliCAN工作於CAN2.0B協議。考慮到系統的應用節點不多,筆者採用了Basic CAN工作模式。CAN匯流排的驅動器採用PCF82C250,它是協議控制器和物理傳輸線路之間的介面晶元,此器件對匯流排上的數據提供差動發送能力,對CAN控制器提供差動接收能力。具有抗瞬間干擾、降低射頻干擾、熱保護、短路保護能力。為提高系統的抗干擾性能和安全性能。採用高速光電耦合器6N137隔離控制器和收發器。微控制器採用AT89S52,具有內部看門狗定時器,可有效保證程序穩定運行,內部具有8K的Flash Rom,支持ISP在線編程,可方便的對轉換器進行軟體升級。通過撥碼開關可設定CAN匯流排的節點號和通信波特率。

2.3 Modbus介面電路
    在污水處理控制系統中採用的Modbus設備主要有濁度檢測儀錶、溶氧量檢測儀錶、DUT-1000系列模塊和變頻器。變頻器採用台達的專門用於風機變頻的VFD055F型號。這些Modbus設備都具有Rs485通信介面。因此,Modbus通信物理層採用RS485匯流排網路。Rs485串列匯流排標準介面的收發信號是由2條信號線的差分傳輸實現的,有效地避免干擾。由於現場的Modbus設備是半雙工通信方式,因此微控制器的串列介面選用MAX485晶元, 通信波特率設為9600BPS。每台設備設定唯一的節點地址,實現對不同設備的控制。採用了高速光電耦合器6N137隔離微控制器與Modbus匯流排,提高系統的安全性和抗干擾能力。

3 軟體設計
    轉換器需要完成對報文的接收、協議轉換和發送,實現不同通信協議的網路之間的互連。轉換器的軟體設計主要包括CAN匯流排通信軟體、串口通信軟體和協議轉換過程。其中關鍵問題是轉換原理的實現。

3.1 Modbus協議分析
    在Modbus通信協議的兩種報文模式中。ASCII模式的報文以冒號“:”開始,以兩個回車換行符結束。中間的信息為Modbus協議的內容,網路上的Modbus設備不斷檢測“:”字元,當有一個冒號接收到時,每個設備都解碼地址域來判斷是否發給自己的。報文中字元間的發送時間間隔最長不能超過1s,否則接收設備認為是傳輸錯誤。在以ASCII模式傳輸過程中。軟體編程相對比較簡單。RTU模式的報文則以傳遞一段空閑時間開始,以一段空閑時間結束。在RTU模式編程下需要注意的是:在完整的一幀消息開始傳輸時.必須和上一幀消息之間至少有3.5個字元時間的間隔.這樣接收方才能將該幀作為一個新的消息幀接收。另外,一幀消息中傳輸的每個字元之間不能超過1.5個字元時間的間隔,否則該幀將被視為無效幀,但接收方將繼續等待和判斷下一次3.5個字元的時間間隔之後出現的新一幀消息並進行相應的處理。在RTU模式下,1個字元時間T和用戶設定的波特率有關,計算公式如下:
T=Ilxl/bate,其中bata為用戶設定的波特率。通過單片機中的定時器可實現對時間的設定和判斷。在軟體編程的時候一般取4T的時間標誌為報文的開始,並以同樣4T的時間標誌來表示報文的結束,一個新報文可在此時間間隔后開始,這樣RTU模式可實現數據連續傳輸,傳輸速度比ASCII模式要快。筆者在污水處理控制系統中用的Modbus從站設備均支持Modbus RTU模式。因此軟體編程採用了RTU模式的Modbus通信協議,它的命令幀報文格式如表1。
表1 RTU報文格式
起始標識碼        地址域 功能域 數據域 校驗域    結束標識碼
T1+T2+T3+T4     8位        8位     NX8位   16位      TI+T2+T3+T4
    應答幀數據的格式和命令幀格式定義相同.其各部分的功能定義如下:
(1)地址域
    地址域為被查詢的從節點的地址.其有效地址範圍是0-247,0表示以廣播形式通信;
(2)功能域
    8位功能域的有效數據範圍是1-255,用於說明從節點要完成的功能。例如01代表讀取輸出狀態,02代表讀取輸入狀態,03代表讀寄存器數據;06代表設置單個寄存器,用於設置從設備的某個運行參數。其他功能域的具體的定義參看Modbus協議說明。當從站設備做出回答響應時,使用功能代碼指示是正常響應還是異常響應,對於正常響應,從設備響應相應的功能代碼.對於異常響應,從設備返回正常功能代碼的最高位置1的代碼;
(3)數據域
    數據域包括本數據域中的位元組數量、寄存器首地址或具體的數據。根據不同的功能碼,數據域的數據結構也不同。正常響應時,數據域包含主設備的請求的數據。異常響應時,數據域中包含了錯誤代碼,主站設備根據錯誤代碼作相應的處理;
(4)校驗域
    Modbus通信協議的R1U模式採用CRC循環冗餘校驗。用於存放校驗結果的兩個位元組數據。

3.2 協議轉換原理
    筆者設計的轉換器只實現了Modbus協議中定義的部分功能。支持使用命令位元組01H、02H、03H、04H、05H、06H、0FH、10H功能代碼。其轉換原理是:在CAN轉換器中微控制器的RAM 中建立CAN數據區和Modbus數據區,CAN通信數據分為輸入和輸出數據。CAN主站與轉換器的通信數據都存儲在這個數據區中,通過CAN匯流排與CAN主站進行數據通信,Modbus通信數據也分為輸入和輸出數據,寫入(如05H、06H、0FH、10H 功能)Modbus從站的數據為Modbus輸出數據,與CAN的輸出數據對應。從Modbus從站讀回(如01H、02H、03H、04H 功能)的數據為Modbus輸入數據,與CAN的輸入數據對應。由於CAN匯流排協議中只定義OSI參考模型中的物理層和數據鏈路層.沒有定義應用層協議.即沒有定義數據幀中數據的應用功能.而Modbus協議實現了應用層的定義。因此,轉換器要按Modbus協議中的報文數據的含義對CAN匯流排報文數據場中的各數據定義功能,該轉換器從CAN主站接收到命令報文數據存放在CAN輸出數據區中。由於CAN匯流排傳輸的數據長度最大為8個位元組,對於Modbus協議需要傳輸的數據長度大於8個位元組時,CAN匯流排採用分次傳輸,在CAN匯流排報文中數據區的第一個位元組定義一個索引位元組,用於標記該報文是第幾次報文,0代表Modbus協議命令位元組一次傳輸完畢.1代表Modbus協議命令位元組需要兩次傳輸完畢。轉換器在接收數據時.首先要檢測該索引位元組,然後,再根據索引位元組讀取數據存入CAN輸出數據區中。在微控一次從CAN主站接收完整的Modbus報文後,進行CAN和Modbus輸出數據區的數據交換。同時計算該幀報文CRC校驗碼.然後寫入到Modbus輸出數據區。在Modbus輸出數據區內是一個完整的、標準的Modbus R1U模式的報文內容。
    在完成一次CAN和Modbus輸出數據區的數據交換后,微控制器順序從Modbus輸出數據區取出Modbus報文.並將報文數據通過微控制器的串口發送到指定的Modbus從設備中。然後微控制器等待接收Modbus從站設備的回答報文。需要注意的是從站設備回答時間不得超過500ms。若無回答,則需要從新發送.連續三次都沒接收到回答報文,則認為從設備出現通信故障。將通信故障代碼寫入到Modbus輸入數據區。如果有回答報文,則當接收完畢回答報文後.要對回答報文進行CRC校驗,如果CRC校驗錯誤或Modbus從設備返回了錯誤回答報文,將錯誤標誌數據和錯誤回答報文寫入到Modbus輸入數據區。如果CRC校驗正確且回答報文正確.說明對Modbus從設備操作成功,如果是“讀(01H、02H、03H、04H )”功能.則將成功標誌數據和回答報文中數據域內容寫入到Modbus輸入數據區。如果是“寫(05H、06H、0FH、10H)”功能,則只將成功標誌數據寫入到Modbus輸入數據區。在微控制器完成一次Modbus通信后,要對Modbus與CAN輸入數據區數據進行一次數據交換。轉換器將CAN輸入數據區的數據發回到CAN主站。CAN主站要對錯誤信息進行相應的處理。這樣就完成了CAN協議到Modbus協議的轉換。如圖4所示轉換器的軟體基本流程圖。系統初始化包括CAN匯流排初始化和串口通信初始化。接收數據採用查詢方式。
 

4 結束語
    Modbus通信協議是一個國際通用的工業標準,採用Modbus協議的設備憑藉其獨特的技術、良好的兼容性以及卓越的產品質量,在工業控制領域應用非常廣泛。結合先進的CAN現場匯流排技術.本轉換器已應用在污水處理監控系統中.實現了對Modbus檢測儀錶、DUT-1000系列模塊和台達VFD055F型號變頻器的控制。實際應用表明,系統具有性價比高、運行可靠、擴展性好、使用靈活等特點。本文所闡述的應用方法也可為其它的工控領域提供參考。


[admin via 研發互助社區 ] 基於Modbus協議的CAN匯流排轉換器設計已經有2998次圍觀

http://cocdig.com/docs/show-post-44773.html