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