最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

帶你輕松了解Modbus協(xié)議

 更新時(shí)間:2021年11月03日 11:30:22   作者:被遺忘的涼白開  
這篇文章主要給大家介紹了關(guān)于Modbus協(xié)議的相關(guān)資料,此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的,需要的朋友可以參考下

1、Modbus是什么

基本上,Modbus 是一種用于設(shè)備之間通信的應(yīng)用層協(xié)議主要用于交換自動(dòng)化領(lǐng)域的典型數(shù)據(jù)。

在這個(gè)級(jí)別上,Modbus 是一種無(wú)狀態(tài)的客戶端-服務(wù)器協(xié)議(例如,很像 HTTP),基于事務(wù),它由請(qǐng)求(由客戶端發(fā)出)和響應(yīng)(由服務(wù)器發(fā)出)組成。在通常應(yīng)用該協(xié)議的領(lǐng)域中,存在一個(gè)概念,即使用共享信號(hào)電纜的網(wǎng)絡(luò)上控制較低級(jí)別通信行為的可能模式之一:主從。為了防止混淆,以下有向關(guān)系根據(jù)客戶端-服務(wù)器范式描述了主從:

Master

主站 對(duì)應(yīng) ----> 客戶端

Slave

從站 對(duì)應(yīng)----->服務(wù)端

2、Modbus協(xié)議解析

無(wú)狀態(tài)通信基于一個(gè)簡(jiǎn)單的包,稱為協(xié)議數(shù)據(jù)單元 (PDU)。協(xié)議規(guī)范定義了三種類型的 PDU:

請(qǐng)求 PDU,包括:

  1. 指定功能的代碼(功能代碼,1 字節(jié))
  2. 和功能特定數(shù)據(jù)(功能數(shù)據(jù),可變字節(jié)數(shù))

響應(yīng) PDU,包括:

  1. 請(qǐng)求對(duì)應(yīng)的功能碼(Function Code,1字節(jié))
  2. 和響應(yīng)特定數(shù)據(jù)(響應(yīng)數(shù)據(jù),可變字節(jié)數(shù))

異常響應(yīng) PDU,包括:

  1. 請(qǐng)求對(duì)應(yīng)的功能碼+0x80(128),(錯(cuò)誤碼,1字節(jié))
  2. 以及指定異常的代碼(異常代碼,1 字節(jié))

2.1、Modbus功能

每個(gè)功能都分配了一個(gè)特定的功能代碼。它們的范圍是 1-127(十進(jìn)制),因?yàn)?29(即 1+128)- 255(即 127+128)代表錯(cuò)誤代碼的范圍。

功能碼是協(xié)議的一部分,功能碼就分為以下三類,一個(gè)是協(xié)議里規(guī)定好的功能,用戶也可以自定義功能

Public

保證是唯一的,并指定公開記錄的明確定義的功能。這些由社區(qū)驗(yàn)證并且存在一致性測(cè)試。

  • 讀離散輸入
  • 讀寫線圈
  • 讀輸入寄存器
  • 讀寫保持寄存器

User-Defined

可用于用戶定義的函數(shù),因此它們的代碼可能不是唯一的。該規(guī)范為用戶定義的函數(shù)定義了代碼范圍 65-72 和 100-110。

保留

這些目前被一些公司用于遺留產(chǎn)品,不能公開使用

函數(shù)的文檔包括:

  1. 函數(shù)的描述(即它的用途)、它的參數(shù)和返回值(包括可能的異常)。
  2. 分配的功能代碼
  3. 請(qǐng)求 PDU
  4. 響應(yīng) PDU
  5. 異常響應(yīng)PDU

2.2、Modbus數(shù)據(jù)模型

Modbus的功能就是基于這些數(shù)據(jù)模型實(shí)現(xiàn)的

離散輸入

·類型

一位

·使用權(quán)

只讀

·視覺(jué)的

離散輸出(線圈)

·類型

一位

·使用權(quán)

讀寫

·視覺(jué)的

輸入寄存器

·類型

16 位字

·使用權(quán)

只讀

·視覺(jué)的

 

保持寄存器(Register)

·類型

16 位字

·使用權(quán)

讀寫

·視覺(jué)的

3、Modbus實(shí)現(xiàn)

3.1、串行Modbus實(shí)現(xiàn)

Modbus 以異步串行網(wǎng)絡(luò)通信的實(shí)現(xiàn)形式開始了它的生命。應(yīng)用層協(xié)議直接在串行接口和串行通信標(biāo)準(zhǔn)之上運(yùn)行。最常見的(通過(guò)電線)是:

RS232 (EIA232) :

參見RS232 @ 維基百科

RS422:

請(qǐng)參閱EIA422 @ 維基百科

RS485:

參見EIA 485 @ 維基百科**

RS232用于短距離點(diǎn)對(duì)點(diǎn)通信,EIA422同樣適用,它是RS232在工業(yè)環(huán)境下的雙向擴(kuò)展,也支持更遠(yuǎn)的距離。

EIA485 可用于多點(diǎn)通信(即多個(gè)設(shè)備連接到同一條信號(hào)電纜),采用主從模式(一個(gè)主站和 n 個(gè)固定地址從站)。

圖 4 顯示了可能的網(wǎng)絡(luò)設(shè)置。

為了啟用此設(shè)置的實(shí)際通信,該實(shí)現(xiàn)使用附加字段擴(kuò)展了 PDU,更好的說(shuō)法是,它將 PDU 包裝到一個(gè)帶有標(biāo)頭和錯(cuò)誤校驗(yàn)和的包中(參見圖 5)。結(jié)果包由協(xié)議規(guī)范定義為應(yīng)用程序數(shù)據(jù)單元 (ADU),其最大包大小為 256 字節(jié)。 

筆記

256 字節(jié)的最大包大小限制適用于所有現(xiàn)有的 Modbus 協(xié)議實(shí)現(xiàn)(傳統(tǒng))!

頭部由地址字段(1 個(gè)字節(jié))組成,尾部是整個(gè)包的錯(cuò)誤校驗(yàn)和,包括地址字段(即頭部)。為了傳輸,Modbus 消息(即 ADU)被放入一個(gè)具有已知開始和結(jié)束點(diǎn)的幀中,從而允許檢測(cè)消息的開始和結(jié)束,從而檢測(cè)部分消息。存在兩種傳輸模式,它們的編碼、成幀和校驗(yàn)和有所不同:

1、ASCII碼

幀被編碼為每個(gè)字節(jié)兩個(gè) ASCII 字符,代表字節(jié)的十六進(jìn)制表示法(即字符 0-9、A-F)。錯(cuò)誤校驗(yàn)和由縱向冗余校驗(yàn)(LRC;1 字節(jié))表示,消息以冒號(hào)(':',0x3A)開頭,以回車符-換行符(“CRLF”,0x0D0A)結(jié)束。字符之間可能會(huì)出現(xiàn) 1 秒的停頓。

2、RTU

幀以二進(jìn)制傳輸以實(shí)現(xiàn)更高的密度。錯(cuò)誤校驗(yàn)和由循環(huán)冗余校驗(yàn)(16 位 CRC;2 字節(jié))表示,消息以至少 3.5 個(gè)字符時(shí)間的靜默間隔開始和結(jié)束。這最容易實(shí)現(xiàn)為網(wǎng)絡(luò)上正在使用的波特率的字符時(shí)間的倍數(shù)。兩個(gè)字節(jié)之間可能發(fā)生的最大暫停為 1.5 個(gè)字符時(shí)間。

jamod 旨在支持兩種傳輸模式,使用基于 javax.comm API 的實(shí)現(xiàn)。

警告

RTU 實(shí)現(xiàn)僅支持 Master 端。它按照最大努力原則工作,這意味著它可能無(wú)法在低延遲實(shí)時(shí)環(huán)境中以可靠的方式工作。

確實(shí)可以實(shí)現(xiàn)基于其他串行堆棧實(shí)現(xiàn)(即 Java Comm API 實(shí)現(xiàn)的替代品)的串行傳輸,例如SerialPort ( www.sc-systems.com/products/se… ) . 根據(jù)產(chǎn)品信息,它支持大約20個(gè)平臺(tái),并已成功用于在Java中實(shí)現(xiàn)兩種串行傳輸模式(僅限Master,參見Field Talk/Java,F(xiàn)ocus Engineering的商業(yè)Master協(xié)議包)。

3.2、基于 IP 的 Modbus 實(shí)現(xiàn)

基于 TCP/IP 的 Modbus 協(xié)議實(shí)現(xiàn) (Modbus/TCP) 最近已作為 RFC 草案提交給 IETF。它使用 TCP/IP 堆棧進(jìn)行通信(注冊(cè)端口為 502)并使用 IP 特定報(bào)頭擴(kuò)展 PDU(參見圖 6)。

可能的網(wǎng)絡(luò)設(shè)置不受規(guī)范的約束;可以建立多主系統(tǒng)或?qū)崿F(xiàn)雙向通信(即同時(shí)有主從節(jié)點(diǎn))。但是,用戶應(yīng)該清楚地意識(shí)到主/從模式的偏差會(huì)產(chǎn)生影響。

IP 特定報(bào)頭(在規(guī)范中稱為 MBAP)長(zhǎng) 7 個(gè)字節(jié),由以下字段組成:

  1. 用于交易配對(duì)的調(diào)用標(biāo)識(shí)(2 個(gè)字節(jié));以前稱為交易標(biāo)識(shí)符
  2. Modbus的協(xié)議標(biāo)識(shí)符(2個(gè)字節(jié)),是0用于Modbus默認(rèn); 為將來(lái)的擴(kuò)展保留
  3. 報(bào)文長(zhǎng)度(2個(gè)字節(jié)),所有后面字節(jié)的字節(jié)計(jì)數(shù)
  4. 用于標(biāo)識(shí)位于非 TCP/IP 網(wǎng)絡(luò)上的遠(yuǎn)程單元的單元標(biāo)識(shí)符(1 個(gè)字節(jié))

4、總結(jié)

本文翻譯自Modbus Java版官方文檔

jamod官方文檔http://jamod.sourceforge.net/kb/protocol.html

到此這篇關(guān)于帶你輕松了解Modbus協(xié)議的文章就介紹到這了,更多相關(guān)了解Modbus協(xié)議內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?C++算法題解leetcode801使序列遞增的最小交換次數(shù)

    Java?C++算法題解leetcode801使序列遞增的最小交換次數(shù)

    這篇文章主要為大家介紹了Java?C++題解leetcode801使序列遞增的最小交換次數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • spring boot整合scurity做簡(jiǎn)單的登錄校驗(yàn)的實(shí)現(xiàn)

    spring boot整合scurity做簡(jiǎn)單的登錄校驗(yàn)的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot整合scurity做簡(jiǎn)單的登錄校驗(yàn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • java 字符串截取的實(shí)例詳解

    java 字符串截取的實(shí)例詳解

    這篇文章主要介紹了java 字符串截取的實(shí)例詳解的相關(guān)資料,這里提供了實(shí)例代碼幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 圖片疊加效果Java代碼實(shí)現(xiàn)

    圖片疊加效果Java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了圖片疊加效果Java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • vscode 配置java環(huán)境并調(diào)試運(yùn)行的詳細(xì)過(guò)程

    vscode 配置java環(huán)境并調(diào)試運(yùn)行的詳細(xì)過(guò)程

    這篇文章主要介紹了vscode 配置java環(huán)境并調(diào)試運(yùn)行的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Java Classloader機(jī)制用法代碼解析

    Java Classloader機(jī)制用法代碼解析

    這篇文章主要介紹了Java Classloader機(jī)制用法代碼解析,涉及JDK默認(rèn)ClassLoader,雙親委托模型,自定義ClassLoader等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java簡(jiǎn)單實(shí)現(xiàn)自定義日歷

    java簡(jiǎn)單實(shí)現(xiàn)自定義日歷

    這篇文章主要為大家詳細(xì)介紹了java簡(jiǎn)單實(shí)現(xiàn)自定義日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • SpringBoot整合Netty心跳機(jī)制過(guò)程詳解

    SpringBoot整合Netty心跳機(jī)制過(guò)程詳解

    這篇文章主要介紹了SpringBoot整合Netty心跳機(jī)制過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 簡(jiǎn)單了解Java編程中對(duì)異常處理的運(yùn)用

    簡(jiǎn)單了解Java編程中對(duì)異常處理的運(yùn)用

    這篇文章主要簡(jiǎn)單介紹了Java編程中對(duì)異常處理的運(yùn)用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Java?Spring?事件監(jiān)聽詳情解析

    Java?Spring?事件監(jiān)聽詳情解析

    這篇文章主要介紹了Java?Spring?事件監(jiān)聽詳情解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07

最新評(píng)論

印江| 保定市| 武清区| 清涧县| 仁寿县| 宁晋县| 万荣县| 陆丰市| 海门市| 图木舒克市| 靖边县| 元谋县| 宁阳县| 华池县| 收藏| 同德县| 开平市| 肥城市| 海林市| 云林县| 上杭县| 松江区| 泽州县| 涿鹿县| 河池市| 上饶县| 易门县| 龙江县| 临武县| 克拉玛依市| 花垣县| 上饶市| 罗山县| 雷山县| 岫岩| 长宁区| 绥宁县| 灵川县| 无极县| 乌兰察布市| 乌鲁木齐县|