前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的modbus協議主題范文,僅供參考,歡迎閱讀并收藏。
關鍵詞:modbus 數據讀取 工業控制 網絡通信
中圖分類號:TP274.2 文獻標識碼:A 文章編號:1007-9416(2012)11-0049-02
Modbus是一種工業上開放的現場總線協議,是目前通用的工業標準之一。該協議能夠使得各個廠家之間的控制設備能夠相互通信和進行數據傳輸,在工業過程控制中具有廣泛地應用[1]。Modbus協議包含三種模式,即Modbus TCP、Modbus RTU和Modbus ASCII模式[2]。本文在研究Modbus TCP協議模式的基礎上,設計了一種基于TCP/IP的Modbus的數據讀取功能。通過該讀取功能,用戶可以在PC機上可以讀取PLC控制器上的數據。
1、Modbus TCP/IP協議數據幀的格式
由于Modbus TCP/IP協議運行于TCP/IP協議上,因此Modbus TCP/IP協議的數據幀被封裝于TCP/IP協議數據幀中的數據單元中,作為TCP/IP協議中的數據部分發送給各種控制設備;支持Modbus協議的控制設備收到Modbus請求之后,根據請求的內容將結果返回給客戶端。本文所設計基于Modbus TCP/IP的數據請求和響應幀格式如下圖所示。
事務元標識符:該標識符用于事務處理的配對,該域中的內容為用戶自行設定,如可以將每一幀的編號放在該域中。
協議標識符:該標識符用于系統內的多路復用,當使用的Modbus協議時,該值為0。
長度:該域中的數值表示后繼域內容的字節數,包括單元標識符和協議數據單元。
單元標識符:為了系統內路由,使用這個域。在服務器的響應幀內容中服務器必須使用相同的值返回該域的內容。
本文設計的讀寫功能所用到的Modbus功能碼的定義如下表所示。
表 Modbus功能碼
協議的數據單元包括功能碼和數據兩部分。本文以讀取2個寄存器的數據為例來說明該部分幀格式的設置。
功能碼:讀寫多個寄存器的功能碼為03,該域大小為1字節。
數據:數據部分包含讀起始地址和讀的數量。本文從起始地址開始連續讀取2個寄存器的內容,因此讀起始地址為0,該域大小為2字節;讀的數量為2,該域大小為2字節。
2、數據讀取功能的實現
本文在上一節設計的數據幀格式的基礎上,使用VC++ 2010實現了基于Modbus TCP/IP的數據讀取功能,并使用MODBUS Simulator作為Modbus的TCP服務器。
數據請求的主要代碼如下:
MODBUS Simulator的地址0000-0001寫入了67.5。如圖2-2所示。
在數據讀取客戶端中,首先點擊“連接服務器”按鈕,客戶端提示連接服務器成功后,點擊“啟動定時器”按鈕,則客戶端開始周期性地從Modbus服務器中讀取數據,并顯示在客戶端上。
3、結語
本文在研究Modbus TCP/IP協議的基礎上設計基于Modbus協議的數據讀取的數據幀格式,并使用VC++ 2010實現了該數據幀的數據讀取功能。通過該讀取功能,用戶可以在PC機上可以讀取PLC控制器上的數據。
參考文獻
關鍵詞:modbus;一致性測試;自動化;用例生成器
中圖分類號:tp393.09文獻標識碼:a
文章編號:1004-373x(2010)01-171-03
automation of modbus conformance testing
zhao jian
(northwest airtraffic management bureau,xi′an,710082,china)
abstract:the existing modbus protocol conformance testing method has following problem: there is not automatictesting method for it,and this brings negative impact on the effectiveness of test.in order to solve this problem,the architecture of automation method for modbus protocol conformance testing,the architecture includes test case generation and test result analyzer.the automatic conformance testing system based on the architecture is realized.in practice,the system found a number of hidden modbus conformance errors,this proves that the availability and effectiveness of the method.
keywords:modbus;conformance testing;automation;test case generation
0 引 言
modbus協議已經成為一種事實的工業標準,但modbus設備間的一致性、互操作性較差,是制約modbus發展的瓶頸。為了解決modbus協議的一致性和互操作性問題,國內外的研究機構展開了深入的研究并取得了一些成果。
在modbus-ida國際組織的支持下,進行modbus一致性測試的實驗室陸續建立。目前,在國外得到modbus-ida國際組織授權的modbus一致性測試實驗室僅有兩處:一處是位于美國密歇根大學的modbus tcp一致性測試實驗室;另一處為設在該課題所在機械工業儀器儀表綜合技術經濟研究所的modbus serial line/tcp一致性測試實驗室,它是獨立于產品制造商的第三方測試機構[1,2]。國外其他研究機構對modbus測試系統的研究處于發展階段,modbus測試系統被應用到火電廠、電力監控系統、控制系統安全認證中,但都未形成一致性和互操作測試標準和自動化方法[3-6]。
在國內對進行modbus一致性和互操作性測試研究的機構主要有:北京交通大學的研究人員開展了modbus串行鏈路協議一致性測試系統的研發工作[7,8];開普電器檢測研究院在modbus協議一致性測試方面有多年的經驗,已加入modbus-ida協會[9]。
總得來說,國外在modbus協議的一致性和互操作性測試的研究已經取得了一定的成果,并形成了一些測試系統,但國內用戶分享成果的代價較大,并且無法進行modbus設備的互操作性測試,并且尚未形成測試自動化方法;國內的研究已經起步并取得了一些初步研究成果,但在國內尚未形成測試標準和測試自動化方法。
為了克服目前研究中所存在的問題,本文主要研究modbus協議的一致性測試的自動化方法,測試的自動化方法主要包括測試用例的自動生成和測試結果的自動分析兩方面,限于篇幅對測試結果的自動分析方法不予展開論述,主要論述測試用例的自動生成方法。
1 一致性測試的基本原理
協議測試理論經過幾十年的發展,在許多方面都取得了很大的進展,其中最成熟的是協議一致性測試的理論,主要代表是iso制定的國際標準iso/iec-9646:協議一致性測試的方法和框架。圖1是一致性測試的基本示意圖。iut(implementation under test)是根據規范的具體實現,是一個內部不可見的實體;規范(speciflcation)以某種形式化語言或者自然語言描述,但不管怎樣的描述形式,其根本都是一個擴展自動機模型;測試儀(tester)根據規范為iut產生一組測試序列 (test sequence),然后觀察iut的外部行為是否符合規范的描述[7,8]。
圖1 一致性測試原理示意圖
目前的實際工程測試中,測試序列主要是由少數專家憑借經驗制定的。因為原始的規范通常都是自然語言描述的,不同的實現者在使用形式化語言建模的過程中,就可能產生了一個一致性問題:原始規范和形式化規范之間可能在語義上產生偏差。根據這樣衍生的形式化描述產生的測試序列不能作為判斷是否通過一致性測試的依據。
對于一致性測試的過程,大約需要分五個步驟來完成[8],圖2是一致性測試的過程。
圖2 一致性測試的過程
第一步,分析測試需求。也就是說,分析相應的標準或規范,從中找出一組測試標準,建立用于實現的一致性描述pics(protocol implement conformance statement)。每個pics應該盡可能的簡單并且僅僅集中在一個原子功能上,測試標準之間要做到不相抵觸。
第二步,在pics上增加一些用于測試實現的協議實現額外信息pixit(protocol implementation extra information statement),pics和pixit就組成用于測試實現的一致性信息citi(conformanee information for testing the implementation)。
第三步,基于citi,生成一組抽象的測試用例atc(abstract test case)的集合——抽象測試套件ats(abstract test suite)。
第四步,對各atc中的參數選擇合適的輸入值以及相應的“預測結果”,得到可執行的測試用例etc(executable test case)的集合——可執行的測試套件ets(executable test suite)。當然,生成的可執行測試套件是與所處的測試平臺是密切相關的。
第五步,對被測單元uut(unit under test)執行etc的時候,被測單元的測試過程將會產生一個“通過”或“失敗”的報告。報告“失敗”即未能通過測試則意味著與規范不一致。
2 一致性自動化測試方法
目前測試過程中的“生成ets”、“測試uut”等工作步驟中實現了簡單的測試系統,能夠對一些工作實現自動化,如根據手工輸入的modbus協議的從站號、功能號、地址等參數生成測試用例,能夠自動執行測試用例并生成簡要測試報告。但這些測試過程存在以下問題:測試用例的生成需要大量的人為干預;另外,測試結果只是簡要的測試報告,沒有更進一步的分析報告,以幫助用戶更容易地確定問題所在。
如圖2虛線框部分所示,“生成ets”、“測試uut”等工作步驟可以實現測試自動化。自動化后的體系結構如圖3所示。其中可視化用例設計器、測試用例生成器完成測試用例的自動生成工作;測試結果分析器完成測試結果的自動分析工作。限于篇幅對測試結果的自動分析方法不予展開論述,主要論述測試用例的自動生成方法。
圖3 一致性測試過程的自動化示意圖
通常在一致性測試過程中,測試用例的設計和生成是軟件測試的關鍵任務和難點,據統計,約有40%一致性測試開銷用于設計和生成測試用例上。長期以來,測試用例的設計和生成主要依靠手工完成,這意味著要求測試人員具有相當的經驗和較高的專業水平。因此,實際工程中的測試用例生成往往帶有很大的盲目性,主要依靠直覺經驗產生測試用例,這導致測試用例數量多,測試效果差,測試成本居高不下。另外,如何生成最能發現被測系統(或程序)存在問題的測試用例,如何能用最少的測試用例實現足夠大的覆蓋率,也是測試人員一直追求的目標。這些問題的解決方案就是測試用例的自動生成[10]。
2.1 測試用例的自動生成方法的體系結構
圖3中的測試用例自動生成器是測試用例自動生成工作的核心。其體系結構如圖4所示。
其中用例設計描述是描述用例特性的文本,根據所選擇的算法不同而描述方式也不同:如采用“基于形式規格說明的方法”則用z,vdm,obj,larch [11]等語言來描述,如采用“組合覆蓋方法”則用xml腳本來描述。
圖4 測試用例自動生成器的體系結構
算法適配器為各種算法提供接口,它向上為描述解析器提供算法支持服務,向下解釋各種算法,使得體系結構能夠兼容多種算法而增強體系結構的擴展性和適用范圍。
描述解析器基于算法適配器來分析用例設計描述,將描述統一轉換成用例生成器可識別的內部描述形式,然后傳遞給用例生成器。
用例生成器獲得來自描述解析器的內部描述,并根據描述自動生成可執行測試用例。可執行的測試用例支持多種形式存儲,如內存存儲、文件存儲、數據庫存儲等,具體的存儲格式隨用例執行器的需求而變。
2.2 測試用例的自動生成方法的實現
為了驗證體系結構的合理性和有效性,基于microsoft vc 6.0 sp6、modbus activex控件、“分類樹方法”、cte xl(classification tree editor extended logics)實現了modbus協議一致性測試的自動化系統。
其中cte xl是我們系統中的可視化用例設計器,它是一個語法控制的、可視化、圖形化的編輯器。幫助我們更加有效地使用分類樹方法進行測試用例的設計。
分類樹方法是黑盒測試中的一種部分測試方法,由grochtmann 和grinun 提出,后又由chen 和poon 改進[11],它是一種有效的功能測試方法。分類樹方法的基本思想是: 首先逐層劃分測試對象的輸入域,然后將劃分的獨立的類結合為無冗余的測試用例,這些測試用例覆蓋了整個輸入數據域。
算法適配器、描述解析器、用例生成器、分類樹方法均使用microsoft vc 6.0 sp6實現。
modbus activex控件用來執行用例并生成測試報告。該控件具有多線程、多任務、多優先級等特性,支持modbus serial line/tcp通信協議,支持rtu和ascii兩種通信模式,具有良好的性能。
系統實際使用時,首先用cte xl構建用例設計,也就是生成z語言描述的規格說明,然后描述解析器解析該規格說明并生成測試用例模板(系統內部格式),交由用例生成器生成可執行的測試用例,最后由modbus activex控件用來執行用例并生成測試報告。人工參與的部分只是在第一步,即用cte xl構建用例設計,其余部分均自動完成,大大降低測試人員的工作量,提高了測試工作的效率和客觀性。
該實現已經被應用到“山東石油化工廠裝車管理系統”中用來測試管理系統和油氣批量控制儀之間modbus通信,也被應用到“長慶單井計量信息系統”中用來測試信息系統和plc之間的modbus通信,限于篇幅測試過程不贅述,經過測試發現了一些隱藏的modbus一致性問題并且便于使用,提高了一致性測試有效性和客觀性,同時增強了產品的可靠性和可用性,也證明了本文所論述的一致性測試自動化方法的有效性和實用性。
3 結 語
在分析了現有modbus協議一致性測試中存在的問題后,本文提出了一致性測試的自動化方法,基于這個方法設計并實現了一致性測試系統,在實際應用中該系統發現一些隱藏的modbus一致性問題,提高了modbus一致性測試的有效性和客觀性,證明了該方法的有效性和實用性。目前該方法的實現基于分類樹方法,下一步將研究其他測試用例自動生成方法,使其進一步完善。
編輯整理
參考文獻
【關鍵詞】Modbus 協議;Honeywell pks;S7-300 PLC;串口通訊
隨著計算機、通信及自動控制等技術的發展,對企業自動化設備工作狀況進行遠程監測和控制,不僅可隨時了解設備工作狀態,設備出現異常時報警,便于及時發現,提高工作性能,在實際現場應用中,需要把不同廠家控制系統的數據進行共享互聯。某甲醇廠60萬噸/年甲醇項目的主控制系統采用了美國先進的控制系統Honeywell pks,而現場低壓煤漿泵、氮壓機、磨煤機的裝置系統的控制系統為各自獨立配置SIEMENS S7-300 PLC控制系統。為了有效的監控這些設備的運行參數,采用Modbus協議來實現控制系統與SIEMENS S7-300控制系統之間的串口通訊。
一、Modbus協議簡介
Modbus 協議是應用于電子控制器上的一種通用語言。通過此協議可使控制器相互之間、控制器經由網絡和其它設備之間進行通信。它已經成為一通用工業標準。可以把不同廠商生產的控制設備連成工業網絡,進行集中監控。Modbus協議是一種適用于工業控制領域的主從式串口通訊協議,它采用查詢通訊方式進行主從設備的信息傳輸,可尋址1-247個設備地址范圍。協議包括廣播查詢和單獨設備查詢兩種方式,二者區別就是廣播查詢不需要從設備回應信息。
標準的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗。控制器能直接或經由 Modem組網。
控制器通信使用主—從技術,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)根據主設備查詢提供的數據作出相應反應。典型的主設備:主機和可編程儀表。典型的從設備:可編程控制器。主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢的,則不作任何回應。Modbus協議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼所有要發送的數據、一錯誤檢測域。從設備回應消息也由Modbus協議構成,包括確認要行動的域、任何要返回的數據、和一錯誤檢測域。如果在消息接收過程中發生一錯誤,或從設備不能執行其命令,從設備將建立一錯誤消息并把它作為回應發送出去。
二、PKS 系統的通訊功能
PKS 系統是Honeywell公司推出得基于批處理、過程控制、 SCADA應用的開放的混合控制系統。它通過串行口(Serial)和第三方控制器或PLC通訊。它支持多種類型的控制器通訊,并可以靈活的采用多種連接方式。控制器帶網絡接口控制工程網權,可以直接接入到網絡上,如果控制器帶串口控制工程網權,可以通過modbus協議終端服務連接到網絡上來。一個modbus協議終端服務允許多個控制器同時連接到網路上來,并提供多種連接接口RS-232、RS-422、RS-485。利用Modbus 協議配置方式實現兗州煤業榆林能化甲醇廠60萬噸/年甲醇項目Honeywell PKS 控制系統與SIEMENS S7-300 PLC控制系統控制器之間的串口通訊。
1.硬件介紹
串行接口卡件(SIM)是安裝在PKS系統標準卡槽上的雙寬度I/O卡件,它的功能是實現通過現場端子板FTA連接串行接口卡件的現場設備與PKS控制器之間的通訊橋梁。串行接口卡件可以提供與單FTA 電源適配器連接的兩個FTA 通訊的兩個串口的雙向通訊接口控制工程網權,它不存儲和保持任何現場I/O設備的組態數據和實時數據,它只在與它相連的現場設備與控制器之間傳輸數據參數。
FTA采用插接卡件根據現場設備的需要選用指定的串行接口控制工程網權,共有兩種標準的FTA 產品。一種是MU-TSIMI2 Modbus型FTA提供點對點RTU EIA-232(RS-232)或EIA-422/485(RS-422、485)多點通訊接口。另一種是MU-TSIAI2 Allen-Bradley(A-B)型FTA提供一個EIA-232(RS-232)通訊接口用于DF1通訊協議的A-BPLC-2等現場設備。
某甲醇廠60萬噸/年甲醇項目采用了第一種FTA標準。一個SIM卡帶兩個FTA接線端子板(FTA A,FTA B),由單獨電源模塊供電,每個FTA 接線端子板通過屏蔽雙絞通訊線與第三方設備連接。各通訊設備以總線方式接入,當通訊距離超過100米或者干擾很強時兩端均加上120歐姆電阻,連接第三方通訊設備到FTA端子的最大接線長度不超過300米,如果超過300米采用信號信號中繼器或者放大器,每個FTA接線端子板最多可接的設備15個。
某甲醇廠60萬噸/年甲醇項目的低壓煤漿泵、磨煤機S7-300控制裝置離主控室Honeywell PKS控制裝置有600多米,采用了S7-300 的Modbus 485轉換成光信號,通過光纖送至PKS控制裝置控制室通訊柜內,然后通過光電轉換成Modbus 485 信號接入PKS 通訊網中,實現數據通訊。而合成壓縮機、丙烯壓縮機采用ITCC控制系統與Honeywell PKS控制裝置距離只有30米,直接采用Modbus 485屏蔽雙絞通訊線進行連接通訊,進行數據共享。
2.組態介紹:(以SINUMARRCH功能塊為例)
每個SIM卡有32個通道,其中0-15通道與連接在FTA A板上的第三方設備的進行通訊,而16-31通道與連接在FTA B板上的第三方設備進行通訊。當只有1個FTA板時,那么這塊FTA板必須配置成FTA A使用,即將FTA 接到Power Adapter的Channel A上,而且只能使用0-15通道。
Control Builder中SI通訊功能塊有三種:對于一個軟通道SINUMARR CH功能塊可以接收/發放最多16個32位浮點數或整型數。
組態畫面中:
Serial Link Device Address:為設備地址,即Modbus ID;
Starting Element lndex:為接收/發送數據的起始地址。此為第三方廠家提供的,是Modbus通訊寄存器首地址,1個寄存器地址存儲一個16位二進制數;
Number of Numeric Value:接收/發送數據的個數。
一個SINUMARR CH功能塊只能設置為一個數據類型,而且接收/發送數據的地址必須是連續的。Number of Numeric Value項中設置的值是從起始地址開始存儲數據的個數;如果第三方設備發送/接收數據的Modbus 存儲地址是放在不連續的幾個地址段上,那么就必須用多個SINUMARR CH功能塊來接收不同地址段的數據。
三、結束語
目前甲醇等煤化工項目裝置中,DCS、PLC等多個控制系統同時使用的情況很普遍,把多個控制系統融合為一個整體,能在中央控制室中的DCS中監視、控制。就涉及控制系統之間的通訊問題。而Modbus串行通訊技術有著實現簡便、系統集成費用低以及通訊距離遠(RS485/422)等特點,所以Modbus串行通訊技術的運用在DCS與PLC之間通訊將會保持廣泛的應用。
參考文獻
[1]Honeywell.Experion PKS Serial interface Module implementation Guide.EP-DCXI43,R210,2004,10:18-45.
【關鍵詞】火電廠 MODBUS通訊協議 應用
近年來,火電廠在建設過程中逐將較多先進的控制系統與儀表引入,如智能儀表、數據采集器以及PLC控制系統等。盡管這些先進系統引入下,對提升火電廠發電機組綜合性能可起到突出作用,但由于系統與儀表過多,要求借助DCS完成一系列控制與監視操作,而這些操作的實現關鍵在于DCS與所有系統間保持通訊,此時便可考慮以MODBUS通訊協議為依托,對通訊目標的實現將發揮重要作用。因此,本文對火電廠自動化改造中MODBUS通訊協議的應用研究,具有十分重要的意義。
1 MODBUS通訊協議的相關概述
關于MODBUS通訊協議,其可應用的方式集中表現在RTU與ASC II兩種方式上。其中前者強調所選用的二進制數據為8位字節,并通過CRC檢驗方式的應用,對二進制數據進行校驗,具有較快的通訊速度。而ASC II方式下,其利用的為ASC II碼,為7位字節,且在冗余校驗中采用的方式為LRC,通訊速率上相比RTU要低處許多。所以在通訊方式選擇中,可考慮引入RTU通訊方式。另外,MODBUS通訊協議應用下,通訊的雙方分別為的主機與從機,通訊指令字符串將由主機向從機進行發送,而從機會判斷其中是否有與地址不相同的指令,通過篩選后給出相應的回答。對于MODBUS通訊協議中的指令字符串,一般也可具體細化到功能碼、數據起始地址、數據量等方面。保證這些內容合理的情況下,便可引入CRC冗余校驗方式,若字符串校驗結果達到相應標準,可判斷字符串正確,而在結果不一致的情況下,將禁止數據被投入使用[1]。
2 MODBUS通訊下的數據寄存與通訊過程
2.1數據寄存
數據寄存是MODBUS通訊協議應用下需考慮的主要問題,通常需依托于寄存器地址,使通訊雙方數據保持對應。從其中寄存器地址類型看,集中表現為:第一,內部數字量線圈。該地址一般可通過1XXXX進行表示,對于邏輯運算結果,都可通過寄存器的利用實現,無需考慮到設備I/O通道問題。第二,外部輸入線圈。該部分寄存器地址通常可用2XXXX表示,其中寄存器的運用與具體I/O通道保持對應,數字量狀態可直接通過讀取寄存器狀態實現。第三,外部輸入模擬量。對于該寄存地址,可用3XXXX進行表示,其中的I/O通道也與寄存器保持對應,模擬量數值可通過寄存器數值被掌握。第四,內部模擬量。其可用4XXXX對寄存地址進行描述,寄存器在作用上表現為中間寄存器,數值運算結果都可被存放于寄存器中。
2.2通訊過程
MODBUS通訊協議實現中,所采用的主要以主從式通訊為主,其中的主機為一臺,而從機數量有多個。當從機對主機指令字符串接收后,會給予相應的應答,此時便意味整個通訊過程實現。例如,通訊時主機發出的指令中,要求由01從機將內部線圈狀態返回,以0001-0008作為返回地址。此時若線圈狀態正常,其將返回對應的字符串,且在功能碼、從機地址等各方面都與主機命令字符串一樣。這樣整個通訊過程便得以實現[2]。
3火電廠自動化改造中的MODBUS通訊協議應用
火電廠自動化改造是當前火電廠建設需考慮的主要問題。本文在研究中主要以WT300數據采集器作為實例,其本身具有免維護、通訊距離遠、通訊速率快且價格較低等優勢,在火電廠中應用極為廣泛。為使該采集器應用中,可與DCS系統保持通訊,使整個控制系統更為完整,便需將MODBUS通訊協議引入其中。具體應用中,首先需做好CA總線分析。CAN總線通訊協議本身在數據采集器中有所體現,可保持10km的通訊距離與1Mbps的通訊速率,并將雙絞線作為通訊介質。此時采集器裝設中,可考慮與工業現場設備相近位置,使信號采集更為便利,在此基礎上通過一根雙絞線的應用使網絡連接通暢,可滿足信號電纜節約的目標。
其次,需在WT300上做好設計。可考慮將一定數量的輸入通道設置于采集器中,由其負責完成數字量信號、電流、電壓、熱電阻與熱電偶采集過程,并在CAN總線應用下,使采集后的數據向MOD-CAN接口處傳送。需注意的是,在CAN網絡中,數據采集器在分布數量上有一定的限制,應做好控制工作。
最后,MOD-CAN接口部分。由于設計過程中需考慮到通訊接口問題,如CAN接口方面,其主要負責來自數據采集器中的數據,這就要求引入MODBUS通訊協議使DCS系統能夠對CAN緩存的數據讀取。而對于MOD-BUS接口,也負責向DCS系統中傳送數據,其中主機部分為DCS,從機為MOD-CAN接口。通過MODBUS通訊協議的引入,最終設計的機組在整體性能上都將得到提高,有利于改造目標的實現[3]。
4 結語
MODBUS通訊協議的引入為火電廠自動化改造提供堅實的技術支撐。實際應用該通訊協議中,應正確認識其基本內涵與實現的原理,明確MODBUS通訊協議應用下的通訊過程、數據寄存等問題,在此基礎上結合火電廠發電機組實際情況,利用MODBUS通訊協議,使所有采集器、控制系統能夠重新構成一個新的系統,以此提升系統綜合性能,且節約系統控制成本,對提高火電廠綜合效益將發揮重要作用。
參考文獻:
[1]翁獻進. RS232、RS422/RS485串行通訊標準及其在火力發電廠熱工自動化系統中的應用實踐[J].科技信息,2010,10:241-242.
關鍵詞:MODBUS;信捷PLC;VB
引言
目前石化公司引進的芳烴聯合裝置,其中的化工吸附分離過程是一個比較復雜的過程,一旦過程發生故障,會引起產品質量問題。為保證生產過程的安全穩定、必須實現生產過程的實時監控。本控制系統底層系統下位機采用信捷XD3 PLC,上位機采用工控機,上下位機通過MODBUS協議實現通信[1],在PC端能在用戶界面上采集數據、數據處理及控制信號的產生與傳輸。
1 控制裝置構成
化工吸附分離底層控制裝置中的下位機采用XD3-60RT-E,其任務是對化工吸附分離設備的進料出料進行控制,對過程進行監督,發生故障時上位機可以觀察到,并且及時的進行報警工作。上位機采用PC,利用VB開發的界面與PLC實時通信,對對化工吸附分離設備進行實時監控。XD3通過編程電纜與工業PC進行通信。
2 通信協議
PC與XD3 PLC的MODBUS通信,采用主從應答方式, PC為主機,PLC為從機[2]。PC根據化工過程中的需要向PLC發出讀寫命令,PLC在接收到PC的指令后,回應PC的指令。在PC中,必須根據MODBUS協議編寫通信程序。
2.1 RTU模式
通信格式采用MODBUS-RTU通信數據格式,當設備使用RTU模式在MODBUS串行鏈路通信,報文中每個8位字節含有兩個4 位十六進制字符。這種模式的主要優點是較高的數據密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每個報文必須以連續的字符流傳送。RTU模式幀檢驗域采用循環冗余校驗(CRC)[3]。
4 結束語
通過PC與XD3 PLC的MODBUS通信程序的設計方法,一臺PC可以和很多臺PLC進行通信,采集到不同PLC的數據,監控到不同PLC的運行情況。使用該方法可以降低控制設備的成本,在實際的應用中,該通信穩定可靠、經濟實用,可以很方便的對化工吸附分離進行監控和管理。
參考文獻
[1]汪正果.MODBUS協議在S7-200PLC與PC機通信中的應用[J].煤礦機械,2010.
[2]陳銘.基于MODBUS協議的設備和PLC實現通信的研究[J].湖南科技學院學報,2009.
[3]潘洪躍.基于MODBUS協議通信的設計與實現[J].計量技術,2002.
[4]信捷電氣股份有限公司.XD系列可編程控制器用戶手冊[指令篇](XD/XDM)[Z].信捷電氣股份有限公司,2013.
[5]范逸之,等.Visual Basic 與RS232串行通信控制[M].北京:清華大學出版社,2002.
關鍵詞: DeviceNet; ModBus; 嵌入式I/O模塊; LPC2129
中圖分類號: TN711?34 文獻標識碼: A 文章編號: 1004?373X(2013)11?0134?05
0 引 言
DeviceNet是一種基于CAN總線技術的符合全球工業標準的開放型現場總線通信網絡,它用于控制,配置和數據采集等方面。CAN總線具有布線簡單、典型的總線型結構、穩定可靠、實時、抗干擾能力強、傳輸距離遠、布線成本低等特點。由于具備了這些特點,DeviceNet總線被廣泛應用于工業自動化控制,它不僅可以接入更多,更復雜的設備,還可以為上層提供更多的信息和服務。在很多歐美國家,越來越多的系統方案設計采用DeviceNet來實現。
ModBus協議是應用于電子控制器上的一種通用語言,是全球第一個真正用于工業現場的總線協議,由于該協議的產生,使控制器之間、控制器經由網絡和其他設備之間實現相互通信。ModBus協議現在已經成為一種通用的工業標準,應用該協議技術可以使不同廠商生產的控制設備連成一個工業網絡,進行集中監控管理。此協議定義了一個控制器能認識使用的消息結構體,從而使用戶不需要關心它們使用哪種網絡進行通信。它描述了一個控制器請求訪問其他設備的過程,如何回應來自其他設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。
本文主要解決DeviceNet與ModBus之間的協議轉換問題。標準的ModBus口是使用RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗。控制器能直接或經由Modem組網。基于DeviceNet的嵌入式I/O模塊通過I/O口發送和接收數據,ModBus通過串口與嵌入式I/O模塊進行通信。通過此過程完成DeviceNet與ModBus之間的協議轉換問題。
1 嵌入式I/O模塊的設計與實現
DeviceNet是一種上層的應用層協議,其物理層和數據鏈路層采用CAN總線技術,ModBus協議只是用于數據鏈路層上的協議[1]。這兩種現場總線是異構的,因此要實現兩種協議之間的通信,必須要進行協議轉換。協議轉換的轉換過程是分層次進行的。首先把總線設備發送過來的設備逐層解包,得到需要的數據,然后再把數據按另一協議所需的方式打包,發送到相應的設備上。
DeviceNet與ModBus協議都采用主從通信模式,所以它們之間的通信只能是單向的,主站發送命令報文而從站被動接收命令報文。本設計中的嵌入式I/O模塊既是DeviceNet從站,又是ModBus的主站。通過該模塊可以實現DeviceNet主站的數據與ModBus從站的數據進行傳輸。
嵌入式I/O模塊的功能是把DeviceNet格式的報文轉換為ModBus的報文命令,再傳給底層的ModBus設備,設備在接收到ModBus命令之后,會向報文轉換模塊發送ModBus格式的響應報文,最后經協議轉換模塊將報文轉換為DeviceNet格式的報文傳輸給DeviceNet主站。本嵌入式I/O模塊既是DeviceNet的從站實現接收主站報文并做出響應的功能,同時又可以作為ModBus的主站向其他ModBus設備發送報文并接收響應報文。
本設計采用的處理器為LPC2129,硬件結構如圖1所示。它是NXP公司的32位工業級ARM7處理器,其內部集成了兩個CAN控制器,在一片處理器內首先將主站端的DeviceNet協議數據轉換成中間協議數據,之后轉換成ModBus可以識別的協議數據。
關鍵詞: STM32; Modbus RTU; Modbus TCP; 組態軟件
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2013)20?0102?05
0 引 言
隨著信息化進程的加快,工廠、企業及現代化樓宇都要求其現場設備接入信息網絡進行統一管理。現有工廠企業控制網絡中的設備大多只支持RS 232,RS 485串行鏈路形式的通訊。串行鏈路應用廣泛,但由于傳輸距離的限制,只能應用在小型局域控制網絡。要將現場設備接入信息網絡必須解決不同網絡通訊協議轉接問題。要構建大型信息控制網絡必須要采用分層次管理的形式,將一個局域網分為若干子局域網,子局域網內部采用串行鏈路方式進行連接,對子局域網配置一個信息中轉裝置,不同局域網信息通過轉換裝置最終連接到控制中心PC,利用網絡技術將控制中心信息到互聯網,實現控制網絡每個節點信息連入互聯網。
本文根據組建大型控制網絡方案,實現一種支持遠程訪問的智能溫濕度控制系統,系統可實現對分區域、分層多點溫濕度信息的采集,并通過每一處放置的風機設備對溫濕度情況進行實時控制,支持遠程用戶對控制系統的訪問,遠程用戶同步對整個控制系統進行監控。智能溫濕度控制系統由智能溫濕度控制模塊、嵌入式橋接網關及上位計算機組成,其中智能溫濕度控制模塊及嵌入式網關都是基于STM32平臺的嵌入式系統,支持Modbus RTU串行方式數據傳輸,嵌入式橋接網關支持Modbus RTU與Modbus TCP轉接功能,上位機利用組態軟件的組態功能與控制系統進行無縫連接。本系統的實現為工廠企業控制網路的智能化、網絡化、集中化提供了一種切實可行的技術路徑。
1 系統組網結構設計
智能溫濕度控制系統分為4層,分別從底層傳感層、網關層、上位機到最上層的互聯網層,分層原則按物理鏈路傳輸路徑劃分。傳感層由智能溫濕度控制模塊及其控制的溫濕度傳感器和繼電器組成,負責實時環境溫濕度信息采集及風機設備控制。網關層為連接傳感層與上位機的中轉層,實現鏈路協議轉換,它相對于智能溫濕度控制模塊作為Modbus主機節點,相對于PC是服務器端。上位機實現計算機監控軟件設計,實時監控環境溫濕度信息及風機狀態監控,并將監控軟件的實時畫面通過Web到遠程客戶端。互聯網層通過Web瀏覽器對監控系統畫面同步監控。系統結構如圖1所示。
每個嵌入式網關與其相連的智能溫濕度控制模塊分布在同一范圍內,組成一個子局域網,負責在局域網內的數據采集、風機設備控制。不同的子局域網之間不會產生干擾,有利于整個控制網絡的模塊化管理。在整個控制系統中,嵌入式橋接網關只起到協議橋接作用,并不對數據進行處理,所以上位機掛載智能模塊數量需要根據Modbus RTU模式規定有所限制,同時,掛載過多的子節點也會影響系統實時性。本文智能溫控系統使用5個嵌入式網關,每個網關搭載10個智能溫濕度控制模塊節點,保證了傳輸可靠性及實時性。
2 系統硬件系統設計
2.1 智能溫濕度控制模塊硬件結構設計
智能溫濕度控制模塊通過溫濕度傳感器的信息采集,將系統所需要的環境信息轉化為可識別的數字信號,針對這些數字信號的值及狀態來決定智能溫濕度控制模塊的繼電器動作,繼電器可控制風機、閥門等設備的狀態。智能溫濕度控制模塊的結構框圖如圖2所示。
在智能溫濕度控制模塊中,處理器采用ARM公司低功耗、高性價比32位Cotex?M3內核處理器STM32F103VET6,可搭載UCOS,Linux等嵌入式操作系統,F103是屬于“增強型”系列,最高工作頻率可達72 MHz,512 KB的FLASH存儲器,其豐富的時鐘系統為外設提供多種時鐘選擇,溫濕度控制模塊擴展外設包括溫濕度采集、繼電器驅動、RS 485接口模塊及其他電路。溫度采集模塊采用SHT10溫濕度傳感器,通訊采用I2C協議,即單片機I/O引腳模擬I2C總線協議方式與傳感器通訊。
利用STM32的I/O管腳通過控制三極管的開關來驅動繼電器模塊作為風機、閥門控制開關。溫濕度控制模塊除溫濕度模塊與繼電器模塊外,還包括BOOT電路、時鐘電路、電源電路及串行接口電路,保證系統正常運轉。
2.2 嵌入式網關硬件結構設計
嵌入式網關與智能溫濕度控制模塊類似,都是采用STM32處理器作為處理核心,外設要增加LCD模塊及網絡接口模塊,但不需要傳感器及繼電器控制模塊。其中,LCD模塊為用戶提供人機交換接口,LCD采用觸摸屏方式,提供比按鍵更加靈活的操作方式。LCD由STM32的FSMC接口、液晶驅動芯片及觸屏驅動芯片進行驅動。以太網模塊提供RJ45接口與計算機通訊,RJ45接口接到10 Mb/s的以太網是通過網絡變壓器HR911105+SPI接口的獨立以太網控制器ENC28J60完成。
3 系統軟件設計
3.1 智能溫濕度控制模塊程序設計
3.1.1 智能溫濕度控制程序流程
智能溫濕度控制模塊主要實現兩個功能:環境溫濕度監測和數據上傳。智能溫濕度控制模塊的程序設計是在STM32函數庫支撐下實現的,調用庫函數實現系統初始化及其外設接口的程序編寫。溫濕度控制模塊程序流程見圖4。
溫濕度數值及風機的狀態是在每一次While()主循環都會進行讀取,這種方式可以保證系統的實時性,在上位機發來讀取命令時可以直接將溫濕度及風機狀態取走,而不必等待溫濕度傳感器相對漫長的讀取過程。
風機的狀態由智能溫濕度控制模塊自身進行控制,當檢測其溫濕度數值超標時自動打開風機設備,當溫濕度達到要求標準時自動關閉。
在數據傳輸中ModbusInput()與ModbusOutput()實現Modbus協議的解碼與編碼。
3.1.2 基于Modbus RTU實現數據傳輸
Modbus是Modicon(現為施耐德電氣公司的一個品牌)開發的報文傳輸協議,Modbus通信協議在OSI模型中屬于數據鏈路層[1]。Modbus串行通訊有RTU和ASCII兩種模式,相對于ASCII模式,RTU模式表達相同的信息需要較少的位數,且在相同通訊速率下具有更大的數據流量[2],RTU模式的具體每個字節的格式[3]:編碼系統:8位二進制,16進制0~9,A~F;數據位:1起始位;8數據位,低位先送;奇/偶校驗時1位,無奇/偶校驗時0位;帶校驗時1位停止位,無校驗時2位停止位;錯誤校驗區:循環冗余校驗(CRC)。
Modbus協議定義了一個與基礎通信層無關的簡單協議數據單元(PDU)。特定總線或網絡上的Modbus協議映射能夠在應用數據單元(ADU)上引入一些附加域。圖5為Modbus RTU下的ADU格式。
ModbusInput()與ModbusOutput()函數實現數據包解析與打包工作,全部要遵循ADU的格式進行編寫。功能碼與數據組成了基本的PDU單元,Modbus支持15個功能碼,用戶可以根據實際需要進行刪減,設計中只應用到3個相應功能碼如表1所示。
表1 系統Modbus功能碼及地址對應關系
Modbus協議除了規定其數據幀格式外,還需要滿足其時序要求,在RTU模式下信息幀開始前必須有至少3.5個字符的靜止時間t3.5,發送完畢后也需要t3.5時間間隔,即兩個幀之間要有3.5個字符的靜止時間來保證一幀的信息已發送完成。
在一幀發送期間,如果出現1.5字符時間以上的間隔,則會認為該信息幀不完整,系統會刷新不完整的幀,并認為下一個接收為下一幀的器件地址,這個時間一般由串口的波特率來保證。
當系統波特率大于19 200 b/s時用1.75 ms代替3.5字符靜止時間,通過對定時器計數值及預分頻的設定達到定時時間=1.75 ms,程序如下:
TIM_TimeBaseStructure.TIM_Period =175;
//計數值:175 定時1.75 ms
TIM_TimeBaseStructure.TIM_Prescaler=720;
//預分頻,除數:720 100 kHz
3.2 嵌入式網關程序設計
3.2.1 網關程序實現流程
嵌入式網關相對于智能溫濕度控制模塊是Modbus的主機,相對于上位機PC是服務器端,所以嵌入式網關不但要支持兩種模式下的數據傳輸,還要解決協議轉換的任務,即Modbus RTU到Modbus TCP/IP之間的相互轉換。圖6為一次轉換流程圖。
3.2.2 Lwip在STM32上的移植
Modbus/TCP是運行在TCP/IP協議之上的協議,所以移植了一輕量級的TCP/IP協議棧:Lwip。Lwip是一開放源碼的TCP/IP協議棧,相較于現流行的Uip協議棧,更加適合在32位嵌入式平臺上應用。
在使用Lwip之前,需要對協議棧的相關文件進行修改,以便其可以支持STM32平臺,移植主要在以下幾個方面:
(1)數據類型的定義,這與移植的硬件平臺及編譯環境緊密相關。
(2)協議棧底層函數的修改,這里主要是底層的數據接收和發送,主要與使用的網卡芯片有關。
(3)需要編寫網卡的相關驅動,需要在數據收發過程中由Lwip協議棧進行調用。
要實現與上位機TCP通訊,還需要編寫相關的用戶應用程序,主要包括初始化及服務端程序的編寫,其中初始化程序負責初始化網絡硬件MAC地址、選定通訊方式等;服務端程序負責完成與上位機通訊,包括指定主機IP及監聽端口等任務。
3.2.3 Modbus RTU到Modbus TCP轉換
Modbus已實現應用TCP在通訊層進行通訊[4],即Modbus協議的網絡版:Modbus TCP,它的基本PDU單元與RTU模式相同,其數據幀的格式與RTU稍有不同。
字節0:事務處理標識符,通常設為0;
字節1:事務處理標識符,通常設為0;
字節2:協議標識符等于0;
字節3:協議標識符等于0;
字節4:長度字段(上半部分字節)等于0(所有的消息長度小于256);
字節5:長度字段(下半部分字節)等于后面字節的數量;
字節6:單元標識符;
字節7:MODBUS功能代碼;
字節8:寄存器數據。
其中Byte 0~Byte 4一般取0x00即可,Byte 5為Byte 6~Byte 8的字節數,Byte 6單元標識符及RTU模式下的設備地址,所以Byte 6~Byte 8與RTU模式下的ADU相同,去除了CRC校驗,TCP幀的校驗通過TCP/IP校驗實現。Modbus RTU轉為Modbus TCP只需將幀前加上請求響應列,去除末尾的CRC校驗字節。如RTU幀01 03 00 01 00 02 95 F8轉換為Modbus TCP數據包為00 00 00 00 00 06 01 03 00 01 02即可,然后通過lwip協議棧打包為tcp傳輸包在網絡鏈路進行傳輸通訊,響應幀采取同樣策略。其中Modbus TCP數據包管理是通過結構體pbuf實現的,其結構如下:
struct pbuf {
struct pbuf *next;
void *payload;
u16_t tot_len;
u16_t len;
u8_t
u8_t flags;
u16_t ref;
};
其中payload為指向Modbus TCP數據包的指針,len表示數據包的長度,通過改寫pbuf指針指向管理數據流向,將接收到數據包交給處理器處理,由嵌入式網關處理器實現鏈路協議的轉換。
3.3 上位機軟件
上位機PC是溫控系統人機交換核心:一方面利用上位機組態軟件對局域網絡設備進行現場監控,在工廠或企業的工作人員可以對溫濕度信息進行監控,同時自動調節風機設備的運轉。在系統沒有連入互聯網絡的情況下,在工業現場進行操作;另一方面PC作為外網訪問的服務器端,通過組態軟件的Web功能,使得遠端監控PC通過IE客戶端可以與Web服務端保持高度的數據同步,使得遠程用戶可以獲得組態王運行系統相同的控制畫面,通過網絡用戶可以與Web服務器上獲得工廠及企業現場相同的數據顯示、報表顯示、報警顯示、趨勢曲線顯示以及方便快捷的控制功能。
4 試驗與結果分析
取兩個溫濕度控制節點進行測試。圖7(a)為未加裝風機設備,不能自動調節節點溫濕度;圖7(b)為加裝風機,能自動調節的節點溫濕度。在連續72 h采樣過程中,系統運行穩定,并且加裝調節設備后可以獲得較好的調節效果,溫濕度曲線在規定值范圍內波動,可以獲得穩定的溫濕度環境,滿足現場對溫濕度環境控制的要求。
5 結 語
設計實現了一種支持遠程監控的智能溫濕度控制系統,具備溫濕度監控、自動調節及分布式多節點控制功能。利用STM32處理器設計了智能溫濕度控制模塊及嵌入式橋接網關,支持Modbus RTU協議傳輸及Modbus RTU與Modbus TCP之間的轉換功能。在嵌入式網關上實現了Lwip協議的移植,使其支持Modbus TCP協議的傳輸,并通過Modbus TCP與組態王軟件實現無縫連接。本系統可以解決大型分布式控制系統鏈路轉化問題,支持遠程訪問操作,實現了系統的集中化、智能化及網絡化管理。
參考文獻
[1] RAMIREZ LEYVA F H, CUELLAR J P A, BASILIO R G M, et al. Wireless system for electrical networks testing based on MODBUS protocol [C]// Proceedings of 14th International Conference on Electronics, Communications and Computers. Veracruz, Mexico: ICECC, 2004: 58?62.
[2] 李英奇,吳桂初. Modbus?Modbus TCP/IP的網關設計[J].微型機與應用,2013,32(10):48?50,53.
[3] Modicon Inc. Modicon modbus protocol reference guide [R]. USA: Modicon Inc., 1996.
[4] GOLDENBERG Niv, WOOL Avishai. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems [J]. International Journal of Critical Infrastructure Protection,2013, 6(2): 63?75.
關鍵詞:ModBus;通信;儀器儀表;應用
1ModBus及其特點
ModBus是由原Modicon公司(現Shneider公司)推出的一種開放式串行通信總線協議,由于得到眾多儀表廠家的支持,正在成為智能化儀器儀表的現實工業標準。目前,多數智能化儀器儀表已利用該協議向用戶提供通信接口。隨著儀表和通信技術的發展,ModBus總線技術也由標準型(StandardModBus)發展到增強型(ModBusPlus,即MB+)。Modbus總線不需要特別的物理接口,支持傳統的RS-232C、RS-422A、RS-485和Ethernet標準接口,在智能化儀器儀表中使用的典型物理接口是RS-485。ModBus總線具有以下特點:(1)標準、開放、免費:ModBus串行總線協議是一個標準和開放的總線協議,用戶可以免費、放心地使用,不用繳納許可證費用,也不會侵犯知識產權。(2)面向報文式結構,支持多種電氣接口:ModBus協議可以在各種通信介質上傳送,如雙絞線、光纜、無線射頻等。與其它很多現場總線相比較,ModBus的傳輸不需要專用的芯片和硬件,完全可以采用市售的標準器件實現,可以有效的降低產品成本,是智能化儀器儀表組網的首選總線形式。(3)ModBus的信息幀格式簡單、緊湊:標準ModBus采用多節點主從式通信方式,信息幀結構簡單緊湊,通俗易懂,用戶使用容易。(4)采用ModBus與PLC通信靈活方便:由于ModBus本身是PLC制造商Modicon公司推出的,協議本身具有PLC化的傾向,采用ModBus與PLC通信具有方便靈活的特點。
2ModBus信息傳輸方式
ModBus定義了兩種串行傳輸模式:RTU模式和ASCII模式。各互連的ModBus設備只有處于同一通信模式下才能進行互操作。RTU模式在支持ModBus的智能化儀器儀表和PLC等設備中得到了廣泛的應用,這里重點以RTU模式為主加以說明。
2.1ModBusRTU傳輸模式
ModBus以報文的形式傳輸信息。報文是網絡中交換與傳輸的數據單元,報文包含了將要發送的完整的數據信息,也是網絡傳輸的單位,傳輸過程中會不斷的封裝成分組、包、幀來傳輸,封裝的方式就是添加一些信息段,這些字段就是報文頭。
2.2ModBusASCII傳輸模式
當使用ASCII模式進行ModBus串行通信時,用兩個ASCII字符發送報文中的一個8位字節。這種通信方式一般只有在設備不支持ModBusRTU模式時才采用。
3ModBus差錯校驗方法標準
ModBus通信采用了字符校驗和幀校驗兩種數據校驗方法來保證串行通信的可靠性。字符校驗采用奇偶校驗方式,幀校驗采用CRC和LRC校驗方式,本文僅討論CRC校驗的實現方法。下面的程序段是根據CRC生成原理編寫的CRC生成函數,這里使用了全局變量crcr、crcrL和crcrH,其中crcr為16位的預裝載CRC寄存器,crcrL和crcrH分別為生成的CRC的低8位和高8位。程序中的commseg數組用于存放接收到的報文數據,其數組元素個數需要根據報文長度來確定,commseg[0]為數據字節數。0xa001是智能化儀器儀表ModBus通信中常用的固定預置碼。
4結語
ModBus網絡是工業通信系統,由可編程序控制器、計算機或其它智能化儀器儀表通過公用線路或局部專用線路連接而成,其系統結構既包括硬件、亦包括軟件。它可應用于各種數據采集和過程監控。在筆者研發的變壓器風冷智能變頻控制裝置中,采用ModBus協議成功地實現了PLC與變頻器、變壓器油面溫度表和凝露控制器之間可靠通信。
參考文獻:
[1]賈振國,許琳.智能化儀器儀表原理及應用[M].北京:中國水利水電出版社,2011.
[2]華镕.從Modbus到透明就緒[M].北京:機械工業出版社,2009.
關健詞:信號采集;現場控制;RTU;μC/OS_II;Modbus
中圖分類號:TP315 文獻標識碼:A 文章編號:2095-1302(2012)03-0054-05
Design of RTU based on ARM9
CHEN Zi-fu, SUN Wan-rong, DONG Ming-ming, YANG Bo, YANG Zi-feng, JIA Hai-long
(Institute of IOT and information Technology , Xidian University, Xi’an 710071, China)
Abstract: A newly universal design scheme of RTU is introduced, which is applied to signal acquisition and equipment control on industrial scene. It introduces the design of RTU which is based on ARM9 processor and with real-time operating system μC/OS_II inside. The Modbus communication protocol in data transmitting and hardware function modules are also described. The hardware function modules mainly consist of eight digital input, eight digital output, eight analog input, RS232 communication, RS485 communication and Ethernet interface modules, etc. The design of slave RTU is also mentioned, which has much advantages in the capacity of storage, computing, programming, developing and networking over the ordinary ones.
Keywords: signal acquisition; field control; RTU; μC/OS_II; Modbus
0 引 言
RTU(Remote Tenninal Unit)是一種遠端測控單元裝置,負責對現場信號、工業設備的監測和控制。與常用的可編程控制器PLC相比,RTU通常具有優良的通訊能力和更大的功能,使得RTU產品在SCADA系統中得到了大量的應用。RTU應用領域寬廣,包括電力系統、給水系統、石油、化工等諸多領域。基于ARM處理器設計的RTU,硬件上具有成本低、體積小、耗電省、處理能力強等優點,軟件上采用μC/OS_II操作系統,有許多優秀的應用程序可以利用。本文將介紹一種基于ARM9和μC/OS_II的RTU硬件、軟件設計方法[1]。
1 RTU系統設計
基于ARM9的新型RTU系統結構如圖1所示。該系統以S3C2440A為主控制器,主要包括數字量輸入模塊、數字量輸出模塊、模擬量輸入模塊、RS232通信模塊、RS485通信模塊、以太網通信模塊、存儲器模塊、E2PROM和測溫模塊等等。軟件采用μC/OS_II實時多任務操作系統,數據傳輸采用Modbus通信協議,設計了TCP\IP、RS232、RS485等多種通信方式。
圖1 RTU系統結構圖
為使該RTU適用于復雜苛刻的環境、滿足工業控制的指標和需求,在各個模塊與MCU之間加上適當的隔離保護器件,同時給各個模塊和MCU供電的部分電源模塊也要選取隔離型的DC-DC電源,還有在主電源端口和通信端口處加上適當的防雷保護電路和ESD保護電路,使得該RTU各個模塊之間基本上互不干擾,更能適用于惡劣的環境。
1.1 主控制器的選擇
RTU的處理芯片采用S3C2440A,S3C2440A的內核為ARM920T,并且片內集成了RS232、RS485、SPI、IIC、通用I/O口等設備接口,并具有低價格、低功耗、高性能等特點,能夠滿足多種通信協議,如Modbus等通信協議。
1.2 數字量輸入輸出模塊設計
該RTU具有8路數字量輸入和8路數字量輸出。單路數字量輸入和數字量輸出原理圖如圖2所示。數字量輸入的直流有效電壓為10~48 V,具有光耦隔離,隔離電壓的有效值為2 500 V。數字量輸出的直流有效電壓為10~36V,也具有光耦隔離,隔離電壓的有效值為2 500 V。
對于數字量輸入,可在輸入端加入適當的濾波電容、自恢復保險絲、壓敏電阻、整流二極管和電阻等元件組成的電路,然后和光耦隔離器PS2801串聯。值得注意的是,和光耦隔離器串聯的電阻R3、并聯的電阻R4選取要恰當,通過調整其電阻值,可以得到合適的輸入電壓閾值。數字量輸入電壓通過光耦隔離之后,轉換為合適的電壓信號至MCU。考慮到數字量輸入可為開關量輸入和脈沖信號輸入,應選用MCU的外部中斷功能引腳作為數字量輸入管腳,這樣MCU才能及時響應數字量輸入。
對于數字量輸出(電壓輸出),MCU通過光耦隔離器PS2801控制固態繼電器VN340ISP的輸出。數字量輸出可分為開關量輸出和脈沖輸出。對于開關量輸出,可以通過MCU的普通GPIO引腳來實現控制;對于脈沖輸出,可以使用MCU的PWM引腳來實現控制。
圖2 數字量輸入輸出電路原理圖
1.3 模擬量輸入模塊
當MCU內部集成的ADC不能滿足系統設計要求時,需要外加一個滿足系統設計要求的ADC,外部ADC采集的數據可以通過多種總線傳輸到MCU(如IIC、SPI等)。
該RTU具有8路模擬量輸入,模擬量輸入原理圖如圖3所示。模擬量輸入范圍為直流4~20 mA或0~5 V,采用TI公司的ADS7952(采樣頻率為1 MHz,12位分辨率,20 MHz的SPI串行接口),在模擬量輸入前端加入適當的調理電路(由濾波電容、自恢復保險絲、TVS管、精密電阻、高速運放、穩壓管等元件組成的電路),ADS7952的數據傳輸采用SPI總線傳輸,在ADC和MCU的SPI總線上加上一個磁耦隔離器ADuM1401,注意磁耦隔離器的數據轉換速率要大于SPI的傳輸波特率。
圖 3 模擬量輸入原理圖
1.4 通信模塊
新型RTU具有強大的通信組網能力,并且兼容多種通信方式,如TCP/IP、RS232、RS485通信等等。該RTU有1個RS232通信接口、1個RS485通信接口和1個以太網接口。其中,RS232通信接口還可以外接一個ZigBee模塊,實現無線數據傳輸。
MCU的UART端口通過磁耦隔離器ADuM1402分別與RS232收發器MAX3232E和RS485收發器SN65HVD-1176D相連。由于RS232/RS485通信均為有線通信,在惡劣的環境下,例如通信電纜受到雷擊干擾,收發器可能由于過壓而燒壞,甚至會影響MCU的正常工作,所以應該在收發器接線端子上加上合適的防雷保護電路。防雷保護電路可以分為三層保護:第一層用三個玻璃放電管組成一個三角形電路作為一級保護,可以把雷擊電壓降到數百伏;第二層用耐高壓的TVS管,可以把傳輸線上的電壓降到數十伏;第三層加上適當的電感或保險絲,用于進一步保護收發器。RS232/RS485通信模塊的結構原理圖如圖4所示。
圖 4 RS232/RS485通信模塊結構原理圖
MCU通過數據總線、地址總線、若干控制信號線與以太網控制器DM9000相連,以太網控制器的兩對差分信號線接到合適的網絡變壓器上,同時為了保護以太網控制器,在網絡變壓器跟RJ45網口之間加入一個合適的ESD保護電路,可以消除外部環境的影響。以太網通信模塊圖工作原理如圖5所示。
圖5 以太網通信模塊工作原理框圖
1.5 存儲器模塊和溫度測量模塊
存儲器包括SDRAM、Norflash和Nandflash。SDRAM用來臨時存放數據,確保程序能正常運行; Norflash用于存儲程序; Nandflash用于存儲數據,在RTU突然掉電或通信網絡故障的情況下,Nandflash能把重要的數據信息保存起來,待到RTU再次上電并且網絡通暢時,再把數據提取出來發送出去。
E2PROM可以用來存儲RTU的初始配置信息,包括RTU設備基本屬性、IP地址信息、網絡參數、串口參數、主從模式選擇和AD采樣配置等信息。RTU上電運行時,先從E2PROM中讀取配置信息,RTU初始化各個模塊之后才能正常工作。
測溫模塊可以用來測量RTU的工作溫度,并實時地或定時地向上傳輸其溫度值,實現溫度監控。
2 RTU軟件設計
該新型RTU內嵌μC/OS_II實時操作系統,數據傳輸協議采用Modbus協議。μC/OS_II 是一個完整的、可移植、可固化、可剪裁的占先式實時多任務內核,適用于工業控制中的實時監控[2]。Modbus協議包括ASCII、RTU、TCP。Modbus的ASCII、RTU協議規定了消息、數據的結構、命令和就答的方式,數據通信采用主-從方式[3]。Modbus協議需要對數據進行校驗,串行協議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗。 Modbus/TCP模式沒有額外規定校驗,因為TCP協議是一個面向連接的可靠協議。在本文中,作為主站的RTU,內嵌的實時操作系統μC/OS_II實現上層 Modbus/TCP協議與Modbus/RTU協議之間的通信(即上位機與計算機、上位機與下位機之間的通信)。而作為從站的RTU,內嵌的實時操作系統μC/OS_II實現Modbus/RTU協議通信(即上位機與下位機之間的通信),對所連接的被測設備進行控制信息的輸入輸出以及RTU采集和輸出模塊的控制。以下主要介紹作為從站的RTU軟件設計。
2.1 Modbus/RTU協議
Modbus串行鏈路協議是一個主-從協議。在同一時刻,只有一個主節點連接于總線,一個或多個子節點(最大編號為247)連接于同一個串行總線。Modbus通信總是由主節點發起。子節點在沒有收到來自主節點的請求時,從不會發送數據。子節點之間從不會互相通信。主節點在同一時刻只會發起一個Modbus事務處理。當設備使用RTU模式在Modbus串行鏈路通信時,報文中每個8位字節含有兩個4位十六進制字符[4]。這種模式的主要優點具有是較高的數據密度,而且在相同的波特率下比ASCII 模式有更高的吞吐率。每個報文必須以連續的字符流傳送。在RTU模式,報文幀由時長至少為3.5個字符時間的空閑間隔區分。如果兩個字符之間的空閑間隔大于1.5個字符時間,則報文幀被認為不完整應該被接收節點丟棄。RTU接收驅動程序的實現,由于1.5個字符時間(t1.5)和3.5個字符時間(t3.5)的定時,隱含著大量的對中斷的管理。在高通信速率下,這導致CPU負擔加重。因此,在通信速率等于或低于19 200 b/s時,這兩個定時必須嚴格遵守;對于波特率大于19 200 b/s的情形,應該使用2個定時的固定值:建議的字符間超時時間(t1.5)為750 µs,幀間的超時時間(t3.5)為1.750 ms[5]。
2.2 Modbus數據模型
在一系列不同平臺上,Modbus數據模式有不同的特性,基本平臺有離散輸入、線圈、輸入寄存器和保持寄存器。在該新型RTU系統中,事先要與主站RTU協商定義好一個離散輸入對應表、線圈對應表、輸入寄存器對應表、保持寄存器對應表。主站RTU和從站RTU根據對應表中的數據位執行相應的操作。主站RTU讀離散輸入即讀取從站RTU數字量輸入狀態;主站RTU寫線圈即控制從站RTU數字量輸出(繼電器輸出);從站RTU模擬量輸入(AD采集的數據)存儲于輸入寄存器中,供主站RTU讀取;主站RTU通過寫保持寄存器可以給從站RTU發送配置信息,從站RTU讀保持寄存器執行相應操作。用來存儲從站RTU的初始配置信息的E2PROM,就是通過讀取相應的保持寄存器中數據,寫入到E2PROM中,再對RTU重新配置。
2.3 Modbus從站
Modbus主站和Modbus從站是兩個獨立的模塊,主站為上位機(客戶機),而從站為下位機(服務機)。主站和從站都有相同的數據鏈路層,并且它們的幀報文數據結構都是相同的。Modbus從站服務任務是從站協議的核心組成部分,它的主要工作是處理Modbus主站點功能請求,返回主站請求的保持寄存器、輸入寄存器、線圈和離散量輸入等值,或接收并保存主站寫入的保持寄存器和線圈等值;另外,Modbus從站的應用程序也會讀取或寫入相關的寄存器。從站RTU程序流程:首先,初始化目標板、μC/OS_II、系統時基等等;接著,創建一個系統初始任務(優先級最高)和Modbus從站服務程序;再接著開始運行任務。基于μC/OS_II的從站RTU程序流程圖如圖6所示。
圖 6 從站RTU程序流程圖
2.4 系統初始任務Task0
從站RTU經過系統基本初始化之后,還需要進一步的配置才能正常工作,而這部分的工作就在系統初始任務Task0中實現。Task0主要完成的工作有:讀取E2PROM中的數據,獲取各種配置信息;根據配置信息初始化各種硬件驅動(如Modbus傳輸波特率、RS232/RS485通信選擇、外部中斷功能引腳選擇、SPI和IIC總線初始化等等);根據配置需求有選擇地創建模擬量輸入量任務Task2(AD采集任務)、數字量輸入任務Task3、數字量輸出任務Task4、讀保持寄存器配置任務Task5和測溫任務Task6;最后讓一個LED指示燈定時閃爍表示RTU工作正常;接著進行任務調度,切換到已創建的、優先級高的其它就緒任務中運行并且實時響應外部中斷(數字量輸入)。系統初始任務Task0程序流程圖如圖7所示。
圖 7 系統初始任務Task0程序流程圖
系統中的Task2主要完成AD采集任務Task2,本系統采用TI公司的ADS7952。ADS7952的AD采樣率是根據其SPI傳輸波特率來換算的,改變MCU(S3C2440A)的SPI底層驅動程序中的SPI分頻值就能實現不同AD采樣率的選擇。ADS7952可以根據E2PROM中的配置信息(采樣率、通道數、采樣點數)工作,也可以根據Task5中讀取保持寄存器對應表中的數據位來實時更新配置。
Task3執行數字量輸入任務,數字量輸入包括開關量輸入和脈沖信號量輸入,可以把這兩種功能的端口分開,也可以把這兩種功能復用合并。功能復用合并實現方法:數字量輸入口對應的MCU管腳先作為普通GPIO引腳,讀取其GPIO狀態寄存器獲取高低電平狀態(即開關狀態),把開關狀態寫入Modbus離散輸入寄存器中,接著把管腳功能從GPIO引腳切換到外部中斷引腳,用于隨時獲取脈沖信號的輸入,在外部中斷函數中可以實現計數并且把計數值寫入Modbus輸入寄存器中。該任務執行時間必須短,代碼必須簡練,不能在其中加入延時之類的函數,任務掛起的時間也不能太長,不然會導致脈沖信號輸入數據出現誤碼。
Task4主要完成數字量輸出任務。主站RTU可以通過寫線圈寄存器來控制從站RTU固態繼電器的輸出,也可以根據要求讓從站RTU定時中斷控制繼電器輸出PWM信號。同時主站RTU可以通過讀線圈寄存器來獲取從站RTU當前繼電器的電平輸出狀態。
Task5可執行讀保持寄存器配置任務。當Modbus保持寄存器中的數據發生變化時,根據保持寄存器對應表(與主站協商定義的一個從站配置表)對從站RTU進行相應配置,包括從站基本信息、AD采樣率、AD通道數、AD采樣點數、有線無線傳輸選擇、UART波特率等等,同時把新的配置信息寫入E2PROM中。配置代碼應該放在µC/OS-II臨界區中,臨界區中不響應中斷,這樣才能保證新配置的程序能正常地運行。
Task6執行測溫任務。當RTU工作環境溫度過高時,可能會影響RTU的正常工作,測溫任務可以實時或定時把從站RTU工作溫度值寫入Modbus輸入寄存器中,供主站RTU讀取。
3 結 語
本文主要介紹了一種基于ARM9的RTU設計實現方法,對RTU硬件系統中的各個模塊設計過程進行了詳細的介紹,包括數字量輸入模塊、數字量輸出模塊、模擬量輸入模塊、RS232通信模塊、RS485通信模塊、以太網通信模塊、存儲器模塊、E2PROM和測溫模塊等等,同時提出了基于此硬件系統的RTU從站軟件設計方法。RTU從站采用μC/OS_II實時操作系統,數據傳輸采用Modbus/RTU通信協議。該RTU可以應用于市政、能源、交通設施、環境、氣象、地質、農業等有遠程終端測控站點需求的行業 [6]。
參 考 文 獻
[1]鐘德生,付立思,劉晶星.基于ARM的分布式RTU系統的研制[J].自動化技術與應用,2008,27(1):127-128.
[2] 周軍,陳偉峰.基于ARM9和μC/OS_II的Modbus通信協議的實現[J]. 自動化儀表,2009,30(2):24-26.
[3]王書根,王振松,劉曉云.Modbus協議的RS485總線通訊機的設計及應用[J].自動化與儀表, 2011,26(5):25-28.
[4]周立功. ARM嵌入式系統軟件開發實例[M].北京:北京航空航天大學出版社,2006.