• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向RS-485控制網(wǎng)絡的Modbus協(xié)議擴展及應用

      2013-09-10 08:33:44胡文翔郭偉瑋吳銀鋒
      自動化儀表 2013年4期
      關(guān)鍵詞:鏈表通信協(xié)議寄存器

      胡文翔 蔡 政 郭偉瑋 吳銀鋒

      (北京航空航天大學儀器科學與光電工程學院,北京 100191)

      0 引言

      Modbus協(xié)議是Modicon公司研發(fā)的一種完全開放且免費的通信協(xié)議,它支持多種電氣接口,且?guī)袷胶唵尉o湊,目前已經(jīng)在工業(yè)領(lǐng)域得到了廣泛應用。通過Modbus,不同廠商生產(chǎn)的設(shè)備可連成網(wǎng)絡進行集中監(jiān)控[1-4]。Modbus定義了常用公共功能碼,同時為協(xié)議擴展預留了地址空間。Gianluca Cena等人擴展了Modbus地址域,使Modbus由支持255個從節(jié)點增加到65 535個。聶文惠等人提出了aModbus,在數(shù)據(jù)域增加物理地址信息,并應用于分布式控制。趙學軍擴展了Modbus支持字節(jié)操作,并將其應用于RS-485總線測控模塊[5-7]。

      本文在分析Modbus標準協(xié)議及總結(jié)前人對Modbus擴展的基礎(chǔ)上,發(fā)現(xiàn)Modbus仍存在以下兩點不足:①通信安全性低,操作權(quán)限沒有區(qū)分;②當訪問離散地址寄存器時需進行多次通信,通信效率較低。針對以上兩點不足,分別對協(xié)議進行了“身份認證”與“讀離散寄存器”功能擴展,并將擴展協(xié)議成功應用于基于RS-485的某太陽能發(fā)電控制網(wǎng)絡。

      1 Modbus通信協(xié)議

      Modbus通信協(xié)議定義了與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(protocol data unit,PDU)和由特定總線或網(wǎng)絡引入的一些附加域的應用數(shù)據(jù)單元(application data unit,ADU)[8-9]。Modbus 串行鏈路ADU通用幀格式由地址域、功能碼、數(shù)據(jù)域和差錯校驗四部分組成。其中,“地址域”為設(shè)備ID地址和數(shù)據(jù)的邏輯地址,“功能碼”區(qū)別通信功能,“數(shù)據(jù)域”存放通信的數(shù)據(jù)內(nèi)容,“差錯校驗”檢驗接收到的報文的完整性。

      Modbus通信協(xié)議是一種主/從協(xié)議,當主站發(fā)出通信請求時,從站根據(jù)接收到的ADU報文,對主站的請求作出判斷并響應,當出現(xiàn)差錯時從站響應相應的差錯碼和異常碼。Modbus定義了一些常用的公共功能碼,同時也保留了0x41~0x48和0x64~0x6E范圍內(nèi)的數(shù)據(jù),供用戶定義功能碼[8-9]。

      2 Modbus通信協(xié)議擴展

      本文針對Modbus協(xié)議通信安全性差和對離散地址寄存器操作效率低這兩點不足,擴展了0x41、0x42和0x43功能碼,其中0x41和0x42功能碼供“身份認證”使用、0x43功能碼供“讀離散寄存器”使用。

      2.1 身份認證

      Modbus通信協(xié)議的通信過程是完全開放的,主站可以對從站線圈和保持寄存器進行任意修改。為防止Modbus從站本地數(shù)據(jù)內(nèi)容遭到不當或惡意修改,提高通信安全性,對主站用戶操作權(quán)限設(shè)定一定的限制,使不同用戶擁有不同的操作權(quán)限。協(xié)議中擴展了身份認證機制,主站需要登錄獲得相應的權(quán)限才能對從站進行相應權(quán)限的操作。

      身份認證包括0x41、0x42兩個功能碼,用戶通過功能碼0x41登錄,通過功能碼0x42修改密碼。身份認證(0x41、0x42)PDU幀格式如表1所示。

      表1 身份認證PDU幀格式Tab.1 ID authentication PDU frame format

      登錄時主站向從站發(fā)送一個登錄請求幀,從站接收到登錄請求幀后,對用戶進行身份認證,為用戶分配相應的權(quán)限值,并啟動一個計時器。在規(guī)定的時間內(nèi),用戶擁有從站分配的權(quán)限級別,可以對相應的變量進行操作。當計時器超時,用戶具有的權(quán)限值失效,從站給用戶分配默認的權(quán)限值。用戶重新登錄后,可以再次獲得相應的權(quán)限。當?shù)蜋?quán)限用戶進行高權(quán)限操作時,從站響應一個權(quán)限不足的報文,提示主站用戶操作權(quán)限不足。

      2.2 讀離散寄存器

      Modbus標準通信協(xié)議比較適合對地址連續(xù)的寄存器進行處理。當寄存器地址不連續(xù)時,需要通過多次通信分別進行處理,效率較低。為提高通信效率,本文擴展了“讀離散寄存器”功能碼。該功能碼從一個從站設(shè)備中強制連續(xù)地讀多個寄存器,即使所請求的寄存器地址段在該從站設(shè)備中不連續(xù)。

      2.2.1 PDU 幀格式

      讀離散寄存器(0x43)PDU幀格式如表2所示。響應PDU包括了一個參數(shù)報告表和讀到的寄存器的值。參數(shù)報告表標志了所請求的寄存器地址是否存在于從站設(shè)備。若從站設(shè)備存在請求的寄存器,則參數(shù)報告表中相應的位為1,否則為0。參數(shù)報告表采用大端編碼,高字節(jié)在前、低字節(jié)在后,最低位對應第一個寄存器。從站設(shè)備將不存在的寄存器剔除后返回實際讀到的寄存器的值。Modbus RTU 幀最大長度為 256 B[10-11],因此,從站響應讀離散寄存器ADU字節(jié)數(shù)=地址(1 B)+功能碼(1 B)+參數(shù)報告表(15 B)+寄存器數(shù)據(jù)(118×2 B)+CRC(2 B)=255 B。該功能碼最多可連續(xù)讀118個地址的寄存器。

      表2 讀離散寄存器PDU幀格式Tab.2 Read discrete registers PDU frame format

      2.2.2 通信效率分析

      以讀118個地址的寄存器操作為例,對比分析Modbus定義的公共功能碼“讀保持寄存器(0x03)”與“讀離散寄存器(0x43)”。設(shè)該118個地址在從站設(shè)備中存在N個寄存器,由M個離散地址段組成。

      當使用讀保持寄存器(0x03)操作時,通信分別需要M次主站請求與M次從站應答,通信共需字節(jié)數(shù)=M次×8 B(請求ADU)+N×2 B(所有寄存器)+M次×5 B(響應ADU除去寄存器)=(13×M+2×N)B。

      當使用讀離散寄存器(0x43)時,通信分別需要1次主站請求與1次從站應答,通信共需字節(jié)數(shù)=8 B(請求ADU)+20 B(ADU響應除去寄存器)+N×2(所有寄存器)=(2×N+28)B。兩種通信方式所需通信字節(jié)個數(shù)差值為(13×M-38)B。

      當讀118個地址寄存器時,讀保持寄存器(0x03)與讀離散寄存器(0x43)通信對比如表3所示。

      表3 讀保持寄存器與讀離散寄存器通信對比Tab.3 Comparison of communication for read holding and discrete register

      當使用讀保持寄存器(0x03)時,離散次數(shù)決定主從通信次數(shù);而當使用讀離散寄存器(0x43)時,僅需1次主從通信。當118個地址完全連續(xù)時(即離散次數(shù)為0時),讀保持寄存器(0x03)比讀離散寄存器(0x43)通信少15 B;當離散次數(shù)為1時,雖然讀保持寄存器(0x03)比讀離散寄存器(0x43)通信少2 B,但需2次主從通信,因此對于實際通信效率,讀離散寄存器(0x43)較高;當離散次數(shù)大于1,地址越離散時,讀保持寄存器(0x03)所需主從通信次數(shù)越多,且所需通信字節(jié)數(shù)越多。因此,讀離散寄存器(0x43)效率更高。

      Modbus PDU中0~65 535個尋址地址的分配至關(guān)重要。通常為保證通信效率,在分配地址時應盡量連續(xù)。使用讀離散寄存器(0x43)功能碼,可以在地址分配上增加不連續(xù)的“空”地址情況,為后續(xù)擴展增加的地址預留空間,同時在通信時也可以讀該“空”地址寄存器。當升級產(chǎn)品補充“空”地址寄存器時,“空”地址的寄存器內(nèi)容在不修改通信請求的情況下,也可以被主站讀取。另外當存在不連續(xù)地址時,使用讀離散寄存器可以極大地減少通信次數(shù)與通信的等待時間。

      由以上分析可知,讀離散寄存器功能碼既提高了對離散地址寄存器讀操作的效率,同時也為工程的維護與升級提供了便利。

      3 擴展協(xié)議的應用

      將Modbus應用于RS-485總線控制網(wǎng)絡,通常按照EIA/TIA485標準實現(xiàn)電氣接口,每臺設(shè)備連接到干線電纜上,形成菊花鏈式的拓撲結(jié)構(gòu)[10-11]??刂凭W(wǎng)絡監(jiān)控設(shè)備往往作為主站采集、記錄并控制各從站設(shè)備。為保證監(jiān)控數(shù)據(jù)的實時性,監(jiān)控設(shè)備與各節(jié)點設(shè)備間需一直處于數(shù)據(jù)更新的通信狀態(tài),而控制網(wǎng)絡通信存在通信繁雜、通信阻塞、通信搶占等問題。因此,為保證通信效率與可靠性,提高通信的靈活性,將通信管理融入Modbus應用。

      3.1 通信鏈表

      將每一次通信請求封裝成一個通信節(jié)點,根據(jù)通信先后順序建立通信鏈表,如圖1所示。

      圖1 Modbus通信鏈表Fig.1 Modbus communication link

      當有搶占通信請求時,搶占通信節(jié)點插入通信鏈表并立即通信;當鏈表中存在搶占通信請求時,新的搶占通信請求加在最后一個搶占通信請求后。為保證通信的成功率,每個通信請求可嘗試多次請求通信,通信成功或嘗試次數(shù)用完后進行下一通信請求。遍歷完整個通信鏈表后,主站根據(jù)當前子節(jié)點連接狀態(tài),重新建立通信鏈表。

      在軟件實現(xiàn)上,Modbus提供了鏈表建立與修改的各函數(shù),方便應用過程中靈活地對通信請求進行調(diào)整。

      3.2 控制網(wǎng)絡主站通信過程

      上電時,控制網(wǎng)絡監(jiān)控設(shè)備(主站)通過讀設(shè)備識別碼(0x2B),發(fā)出從地址1 ~247 的通信請求[10-11],并根據(jù)從設(shè)備響應,判斷掛載在RS-485總線上的設(shè)備并記錄;同時根據(jù)掛載的設(shè)備建立通信請求鏈表,開始遍歷通信鏈表。當某設(shè)備某一通信請求嘗試多次后無應答時,認為該設(shè)備脫離RS-485總線。當遍歷完通信鏈表后,根據(jù)當前連接的設(shè)備重新建立通信鏈表。當有設(shè)備接入變化時,也可通過手動觸發(fā)中斷,重新判斷子節(jié)點設(shè)備并建立通信鏈表。主站通信過程如圖2所示。

      圖2 主站通信過程Fig.2 Master station communication process

      當用戶操作監(jiān)控設(shè)備時,用戶操作請求作為搶占通信請求,通過中斷添加到通信鏈表。用戶通過登錄(0x41)獲得操作權(quán)限(默認權(quán)限為只讀),登錄成功后,可獲得修改參數(shù)的操作權(quán)限,從而對從站設(shè)備進行操作控制。

      4 結(jié)束語

      針對Modbus標準協(xié)議在通信安全性和通信效率方面存在的不足,本文擴展了“身份認證”和“讀離散寄存器”功能,擴展功能彌補了Modbus標準協(xié)議在安全方面的不足并提高了通信效率。將擴展協(xié)議應用于基于RS-485總線的某太陽能發(fā)電控制網(wǎng)絡,應用結(jié)果表明,所開發(fā)的控制網(wǎng)絡通信安全可靠、效率高,具有一定的推廣應用價值。

      [1]王佳承,費敏銳,王海寬.基于Modbus的多現(xiàn)場總線集成測控系統(tǒng)設(shè)計[J].自動化儀表,2009,30(6):20 -25.

      [2]封亞斌.采用串口通信技術(shù)實現(xiàn)Modbus數(shù)據(jù)通信[J].自動化儀表,2004,25(10):56 -58.

      [3]華镕.從Modbus到透明就緒—施耐德電氣工業(yè)網(wǎng)絡的協(xié)議、設(shè)計、安裝和應用[M].北京:機械工業(yè)出版社,2009:5-8.

      [4]李偉.基于Modbus協(xié)議的工控節(jié)點設(shè)計與實現(xiàn)[J].計算機工程,2010,36(16):226 -231.

      [5] Cena G,Cereia M,Bertolotti I C,et al.A Modbus extension for inexpensive distributed embedded systems[C]//IEEE International Workshop on Factory Communication Systems(WFCS)2010,Torino,2010:251-260.

      [6]聶文惠,鞠時光,王英粟,等.利用優(yōu)化的MODBUS協(xié)議實現(xiàn)分布式控制[J].微計算機信息,2010,26(4):44 -46.

      [7]趙學軍.RS485總線測控模塊的MODBUS擴展協(xié)議設(shè)計[J].自動化與儀表,2007,22(2):37 -40.

      [8]國家質(zhì)量監(jiān)督檢驗檢疫總局.GB/T 19582.1-2008基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡規(guī)范第1部分:Modbus應用協(xié)議[S].北京:中國標準出版社,2008.

      [9] Modbusorg.Modbus application protocol v1.1b[EB/OL].[2012 -03 -15].http://www.modbus.org/doc/Modbus_Application_Protocol_V1_1b.pdf.

      [10]國家質(zhì)量監(jiān)督檢驗檢疫總局.GB/T 19582.2-2008基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡規(guī)范第2部分:Modbus協(xié)議在串行鏈路上的實現(xiàn)指南[S].北京:中國標準出版社,2008.

      [11]Modbus org.Modbus overserial line specification and implementation guide V1.02[EB/OL].[2012 - 03 - 15].http://www.modbus.org/docs/Modbus_over_serial_lin-e_V1_02.pdf.

      猜你喜歡
      鏈表通信協(xié)議寄存器
      Lite寄存器模型的設(shè)計與實現(xiàn)
      計算機應用(2020年5期)2020-06-07 07:06:44
      基于二進制鏈表的粗糙集屬性約簡
      跟麥咭學編程
      基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
      基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計與研究
      基于NS-3的PLC多頻通信協(xié)議仿真平臺設(shè)計與實現(xiàn)
      電測與儀表(2016年2期)2016-04-12 00:24:52
      鏈表方式集中器抄表的設(shè)計
      電測與儀表(2014年1期)2014-04-04 12:00:22
      RSSP-I、RSSP-Ⅱ及SAHARA三種安全通信協(xié)議實現(xiàn)技術(shù)簡介
      武山县| 彰化市| 新疆| 桂东县| 兴隆县| 新疆| 获嘉县| 台安县| 札达县| 南涧| 永清县| 海原县| 嫩江县| 全椒县| 汨罗市| 太白县| 洱源县| 吉水县| 久治县| 宁津县| 广平县| 松溪县| 册亨县| 讷河市| 梅河口市| 呼图壁县| 海门市| 雷州市| 怀来县| 察雅县| 紫云| 太和县| 罗甸县| 六安市| 珲春市| 祥云县| 左云县| 马山县| 德化县| 理塘县| 海阳市|