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