<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Modbus協(xié)議概念最詳細(xì)介紹

          共 2842字,需瀏覽 6分鐘

           ·

          2020-11-11 19:28


          一文認(rèn)識Modbus協(xié)議;


          • 1 什么是Modbus?

          • 2 主從模式

          • 3 協(xié)議的分類

            • 3.1 Modbus ASCII

            • 3.2 Modbus RTU

            • 3.3 Modbus TCP

            • 3.4 Modbus Plus

          • 4 libmodbus

          • 5 freemodbus

          • 6 總結(jié)


          1 什么是Modbus?

          ModbusModicon(施耐德)公司于1979年開發(fā)的串行通信協(xié)議。它最初設(shè)計用于公司的可編程邏輯控制器(PLC)。Modbus是一種開放式協(xié)議,支持使用RS232/RS485/RS422協(xié)議的串行設(shè)備,同時還支持調(diào)制解調(diào)器。它的簡單性以及制造商可以免費將其納入其產(chǎn)品的事實使其成為連接工業(yè)電子設(shè)備的最流行的方法。Modbus比其他通信協(xié)議使用的更廣泛的主要原因有以下幾點:

          • 公開發(fā)表并且無著作權(quán)要求;
          • 易于部署和維護(hù);
          • 對供應(yīng)商來說,修改移動本地的比特或字節(jié)沒有很多限制;

          Modbus通過設(shè)備之間的串行線進(jìn)行數(shù)據(jù)傳輸。最簡單的設(shè)置是使用一根串行電纜連接兩個設(shè)備(主設(shè)備和從設(shè)備)上的串行端口。數(shù)據(jù)以稱為比特10的序列發(fā)送。每個位都作為電壓發(fā)送。0被發(fā)送為正電壓,1被發(fā)送為負(fù)電壓。如下圖所示;

          在這里插入圖片描述

          2 主從模式

          Modbus解決了通過串行線路在電子設(shè)備之間發(fā)送信息的問題。該協(xié)議在遵循該協(xié)議的體系結(jié)構(gòu)中實現(xiàn)主/從模型。Modbus主站(Master)負(fù)責(zé)從其他設(shè)備(Slave)請求信息。標(biāo)準(zhǔn)Modbus網(wǎng)絡(luò)中有一個Modbus主站。具體如下圖所示;

          主設(shè)備向從設(shè)備請求信息,最多大約可達(dá)到240個 . 每個從設(shè)備都有自己唯一的從設(shè)備地址標(biāo)識Slave Address)。除了從從設(shè)備請求信息之外,主設(shè)備還可以寫入從設(shè)備的內(nèi)部寄存器

          3 協(xié)議的分類

          Modbus的應(yīng)用十分廣泛,特別是在工業(yè)控制領(lǐng)域,具體如下圖所示;

          我們可以看到最常用Modbus協(xié)議總共有以下四種:Modbus ASCIIModbus RTUModbus PlusModbus TCP

          具體如下圖所示;

          3.1 Modbus ASCII

          當(dāng)設(shè)備設(shè)置為使用ASCII美國信息交換標(biāo)準(zhǔn)代碼)模式在MODBUS串行線上進(jìn)行通信時,消息中的每個8位字節(jié)將作為兩個ASCII 4位字符發(fā)送。當(dāng)物理通信鏈路或設(shè)備的功能不允許符合RTU計時器管理要求時,使用此模式。所以此模式的效率不如RTU,因為每個字節(jié)需要兩個字符。示例:字節(jié)0x7D編碼為兩個字符:0x350x42(在ASCII表中為0x37 ='7',而0x44 ='D')。

          3.2 Modbus RTU

          Modbus RTU是一種緊湊的,采用二進(jìn)制表示數(shù)據(jù)的方式;因為使用二進(jìn)制編碼和CRC錯誤檢查的結(jié)合使得Modbus RTU適用于工業(yè)應(yīng)用,因為它比ASCII字符的替代方案更有效地傳輸。在Modbus RTU與ASCII之間進(jìn)行選擇時,如果考慮性能,則RTU是首選。

          3.3 Modbus TCP

          Modbus TCP 是在TCP/IP網(wǎng)絡(luò)上運行的Modbus的實現(xiàn),旨在允許Modbus ASCII / RTU協(xié)議在基于TCP / IP的網(wǎng)絡(luò)上傳輸。Modbus / TCP將Modbus消息嵌入TCP / IP幀內(nèi)。盡管實現(xiàn)起來非常簡單,但是與網(wǎng)絡(luò)相關(guān)的特性增加了一些挑戰(zhàn)。例如,由于Modbus主機(jī)期望并要求在一定時間范圍內(nèi)對其輪詢做出響應(yīng),因此必須考慮TCP / IP網(wǎng)絡(luò)的不確定性(和其他方面)。Modbus ASCII和Modbus TCP之間的主要區(qū)別在于,Modbus ASCII所需的LRC錯誤檢查由IP層執(zhí)行。

          對于以上TCP/RTU/ASCII的這三種通信協(xié)議在數(shù)據(jù)模型和功能調(diào)用上都是相同的,只有封裝方式是不同的。

          3.4 Modbus Plus

          Modbus有一個擴(kuò)展版本Modbus Plus(Modbus+或者M(jìn)B+),不過此協(xié)議是Modicon專有的,和Modbus不同。它需要一個專門的協(xié)處理器來處理類似HDLC的高速令牌旋轉(zhuǎn)。它使用1Mbit/s的雙絞線,并且每個節(jié)點都有轉(zhuǎn)換隔離設(shè)備,是一種采用轉(zhuǎn)換/邊緣觸發(fā)而不是電壓/水平觸發(fā)的設(shè)備。連接Modbus Plus到計算機(jī)需要特別的接口,通常是支持ISA(SA85),PCI或者PCMCIA總線的板卡。[^1]

          4 libmodbus

          libmodbus是一個多平臺的modbus開源庫,適用于Linux,Mac OS X,F(xiàn)reeBSD,QNX和Win32等操作系統(tǒng);可以根據(jù)Modbus協(xié)議發(fā)送和接收數(shù)據(jù)。支持RTU(串行)和TCP(以太網(wǎng))通信。官網(wǎng):libmodbus.orgGithub:github.com/stephane/libmodbus/

          5 freemodbus

          FreeModbus是嵌入式系統(tǒng)的Modbus ASCII / RTU和Modbus TCP實現(xiàn)。它提供了Modbus應(yīng)用協(xié)議v1.1a的實現(xiàn), ? 并支持Modbus over Serial Line Specification 1.0中定義的RTU / ASCII傳輸模式 ?。從版本0.7開始,F(xiàn)reeModbus也支持Modbus / TCP。0.9版為使用lwIP ?TCP / IP堆棧的嵌入式系統(tǒng)添加了第一個Modbus / TCP端口 ?。官網(wǎng):https://www.embedded-experts.atGithub:https://github.com/cwalter-at/freemodbus

          FreeModbus是一款開源的Modbus協(xié)議棧,但是只有從機(jī)開源,主機(jī)源碼是需要收費的。同時網(wǎng)上也沒有發(fā)現(xiàn)比較好的開源的Modbus主機(jī)協(xié)議棧,所以才開發(fā)這款支持主機(jī)模式的FreeModbus協(xié)議棧。本版FreeModbus版本號更改為V1.6,特性如下:

          • 新增加的主機(jī)源碼與原有從機(jī)的風(fēng)格及接口保持一致;
          • 支持主機(jī)與從機(jī)在同一協(xié)議棧運行;
          • 支持實時操作系統(tǒng)及裸機(jī)移植;
          • 為應(yīng)用提供多種請求模式,用戶可以選擇阻塞還是非阻塞模式,自定義超時時間等,方便應(yīng)用層靈活調(diào)用;
          • 支持所有常用的Modbus方法。

          Github:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32

          6 總結(jié)

          本文簡單介紹了modbus協(xié)議,以及modbus的種類以及相互之間的區(qū)別,目前沒有深入到各個協(xié)議的細(xì)節(jié),只做了一個概覽。筆者能力和水平有限,文中難免存在錯誤和紕漏,請大佬不吝賜教。

          推薦閱讀:
          ? ??專輯|Linux文章匯總
          ? ??專輯|程序人生
          ? ??專輯|C語言

          嵌入式Linux
          微信掃描二維碼,關(guān)注我的公眾號



          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  2024AV天堂 | 大香蕉啪啪啪 | 日韩三级影音先锋 | 精品视频天天在线免费 | 成人毛片女人18女人 |