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

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

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

1、Modbus是什么

基本上,Modbus 是一種用于設備之間通信的應用層協(xié)議主要用于交換自動化領域的典型數據。

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

Master

主站 對應 ----> 客戶端

Slave

從站 對應----->服務端

2、Modbus協(xié)議解析

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

請求 PDU,包括:

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

響應 PDU,包括:

  1. 請求對應的功能碼(Function Code,1字節(jié))
  2. 和響應特定數據(響應數據,可變字節(jié)數)

異常響應 PDU,包括:

  1. 請求對應的功能碼+0x80(128),(錯誤碼,1字節(jié))
  2. 以及指定異常的代碼(異常代碼,1 字節(jié))

2.1、Modbus功能

每個功能都分配了一個特定的功能代碼。它們的范圍是 1-127(十進制),因為129(即 1+128)- 255(即 127+128)代表錯誤代碼的范圍。

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

Public

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

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

User-Defined

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

保留

這些目前被一些公司用于遺留產品,不能公開使用

函數的文檔包括:

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

2.2、Modbus數據模型

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

離散輸入

·類型

一位

·使用權

只讀

·視覺的

離散輸出(線圈)

·類型

一位

·使用權

讀寫

·視覺的

輸入寄存器

·類型

16 位字

·使用權

只讀

·視覺的

 

保持寄存器(Register)

·類型

16 位字

·使用權

讀寫

·視覺的

3、Modbus實現(xiàn)

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

Modbus 以異步串行網絡通信的實現(xiàn)形式開始了它的生命。應用層協(xié)議直接在串行接口和串行通信標準之上運行。最常見的(通過電線)是:

RS232 (EIA232) :

參見RS232 @ 維基百科

RS422:

請參閱EIA422 @ 維基百科

RS485:

參見EIA 485 @ 維基百科**

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

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

圖 4 顯示了可能的網絡設置。

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

筆記

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

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

1、ASCII碼

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

2、RTU

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

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

警告

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

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

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

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

可能的網絡設置不受規(guī)范的約束;可以建立多主系統(tǒng)或實現(xiàn)雙向通信(即同時有主從節(jié)點)。但是,用戶應該清楚地意識到主/從模式的偏差會產生影響。

IP 特定報頭(在規(guī)范中稱為 MBAP)長 7 個字節(jié),由以下字段組成:

  1. 用于交易配對的調用標識(2 個字節(jié));以前稱為交易標識符
  2. Modbus的協(xié)議標識符(2個字節(jié)),是0用于Modbus默認; 為將來的擴展保留
  3. 報文長度(2個字節(jié)),所有后面字節(jié)的字節(jié)計數
  4. 用于標識位于非 TCP/IP 網絡上的遠程單元的單元標識符(1 個字節(jié))

4、總結

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

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

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

相關文章

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

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

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

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

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

    java 字符串截取的實例詳解

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

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

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

    vscode 配置java環(huán)境并調試運行的詳細過程

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

    Java Classloader機制用法代碼解析

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

    java簡單實現(xiàn)自定義日歷

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

    SpringBoot整合Netty心跳機制過程詳解

    這篇文章主要介紹了SpringBoot整合Netty心跳機制過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 簡單了解Java編程中對異常處理的運用

    簡單了解Java編程中對異常處理的運用

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

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

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

最新評論

惠安县| 聂荣县| 乌兰浩特市| 临江市| 凤凰县| 安顺市| 新晃| 永新县| 麻栗坡县| 饶阳县| 抚州市| 新蔡县| 淳安县| 于都县| 清新县| 淮安市| 临颍县| 万安县| 永修县| 奉新县| 北川| 互助| 唐海县| 桐梓县| 枣阳市| 高清| 南充市| 邵东县| 延津县| 黎城县| 宣汉县| 枞阳县| 明星| 宁国市| 康乐县| 双牌县| 峨山| 和平县| 交口县| 湖北省| 罗城|