有人物聯網官方網站
有人物聯網官方網站
聯網的事情找有人!
聯網的事情找有人!

一文看懂Modbus:Modbus是干什么的?它是如何工作的

2019-06-28

分享到:
{}

  Modbus是一種開放協議,這意味著制造商無需支付版稅就可以免費使用它。它已成為工業中的標準通信協議,并且現在是連接工業電子設備的最常用方法。它被許多行業的許多制造商廣泛使用.Modbus通常用于將來自儀表和控制設備的信號傳輸回主控制器或數據采集系統,例如測量溫度和濕度并將結果傳送到計算機的系統。Modbus通常用于將監控計算機與遠程終端單元(RTU)連接在監控和數據采集(SCADA)系統中。

  Modbus通過設備之間的串行線路傳輸。最簡單的設置是連接兩個設備(主設備和從設備)上的串行端口的單根串行電纜。

  數據以一系列1和0的形式發送,稱為位。每個位都作為電壓發送。零作為正電壓發送,而一個作為負電壓發送。這些位很快發送。典型的傳輸速度為9600波特(每秒位數)。

  什么是十六進制?

  在解決問題時,查看傳輸的實際原始數據會很有幫助。長串的1和0很難讀取,因此這些位組合在一起并以十六進制顯示。每個4比特的塊由從0 到F 的16個字符之一表示。

  每個8位塊(稱為字節)由00 到FF 的256個字符對中的一個表示。

  數據如何存儲在標準Modbus中?

  信息存儲在四個不同的表中的從設備中。兩個表存儲/關閉離散值(線圈)和兩個存儲數值(寄存器)。每個線圈和寄存器都有一個只讀表和讀寫表。每個表有9999個值。每個線圈或觸點為1位,并分配一個介于0000 和270E 之間的數據地址。每個寄存器為1字= 16位= 2字節,并且數據地址在0000 和270E 之間。

  線圈/寄存器編號可以被認為是位置名稱,因為它們不會出現在實際消息中。數據地址用于消息中。例如,第一個保持寄存器,編號40001,具有數據地址0000 。這兩個值之間的差異是偏移量。每個表都有不同的偏移量。1,10001,30001和40001。

  什么是奴隸身份證?

  網絡中的每個從站都分配有1到247的唯一單元地址。當主站請求數據時,它發送的第一個字節是從站地址。這樣,每個從設備在第一個字節之后知道是否忽略該消息。

  什么是功能代碼?

  主機發送的第二個字節是功能代碼。此數字告訴從站要訪問哪個表以及是從表中讀取還是寫入表。

  什么是CRC?

  CRC代表循環冗余校驗。它是在每個modbus消息的末尾添加兩個字節以進行錯誤檢測。消息中的每個字節用于計算CRC。接收設備還計算CRC并將其與來自發送設備的CRC進行比較。如果錯誤地接收到消息中的一位,則CRC將不同并且將導致錯誤。。

  什么是數據類型?

  對于示例FC03 表明,寄存器40108包含AE41 ,其轉換為16位1010 1110 0100 0001 大!但是這是什么意思?嗯,這可能意味著一些事情。寄存器40108可以定義為這些16位數據類型中的任何一種:

  甲16位無符號整數(0到65535之間的整數)寄存器40108包含AE41 = 44609(十六進制到十進制的轉換)

  甲16位帶符號整數(-32768到32767之間的整數)AE41 = -20,927 (十六進制到一個包裝,如果其超過32767然后減去65536十進制的轉換)

  甲兩種字符的ASCII字符串(2鍵入的字母)AE41 =?甲

  甲開/關值的離散(在此工作方式相同的16位整數0或1的值的十六進制數據將是0000 或0001 )注冊40108也可與結合

  40109形成任何這些32位數據的類型:

  甲32位無符號整數(0和4294967295之間的數字)40108,40109 = AE41 5652 = 2923517522

  一個32位有符號整數(-2,147,483,648和2,147,483,647之間的數字)AE41 5652 = -1,371,449,774

  甲32位雙精度IEEE浮點數。這是一個數學公式,允許任何實數(帶小數點的數字)用32位表示,精度約為7位數。AE41 5652 = -4.395978 E-11 這是一個電子表格IEEE浮點計算器,用于輸入4個字節或2個字。要下載副本,請右鍵單擊并選擇目標另存為...

  甲四個字符的ASCII字符串(4鍵入的字母)AE41 5652 =?AVR 更多寄存器可以被組合以形成更長的ASCII字符串。每個寄存器用于存儲兩個ASCII字符(兩個字節)。

  什么是字節和字排序?

  Modbus規范沒有準確定義數據如何存儲在寄存器中。因此,一些制造商在他們的設備中實現了modbus,首先存儲和傳輸高字節,然后是低字節。(41 之前的AE )。或者,其他人首先存儲和發送低位字節(AE 之前的41 )。類似地,當寄存器組合起來表示32位數據類型時,某些器件將高16位(高字)存儲在第一個寄存器中,剩余的低字存儲在第二個寄存器中(AE41 在5652 之前),而其他器件則相反(5652 之前)AE41 )只要接收設備知道期望它的方式,發送字節或字的順序無關緊要。例如,如果要將數字29,235,175,522作為32位無符號整數發送,則可以按這四種方式中的任何一種進行排列。

  AE41 5652 高字節第一高字首先

  5652 AE41 高字節第一低字首先

  首先是41AE 5256 低字節第一個高字

  5256 41AE 低字節第一個低字首先

  什么是Modbus地圖?

  modbus映射只是一個單獨的從設備列表,它定義了- 數據是什么(例如壓力或溫度讀數)

  • 存儲數據的位置(哪些表和數據地址)
  • 數據的存儲方式(數據類型,字節和字排序)

  某些設備使用由制造商定義的固定映射構建。而其他設備允許操作員配置或編程自定義地圖以滿足他們的需要。

  Modbus ASCII和Modbus RTU有什么區別?

  Modbus RTU和Modbus ASCII使用相同的協議。唯一的區別是通過線路傳輸的字節用RTU表示為二進制,用Modbus RTU表示為可讀ASCII。關于RTU的重要注意事項是RTU消息沒有Start_of_text指示。通信中的接收方 使用“靜默”時間以確定新消息的開始。ASCII確實有一個文本開頭標記。二進制消息比ASCII短,因此理論上傳輸/接收速度更快。您可能很高興在HMI / SCADA中看到大約100 ms的更新速率,并且可以選擇任一通信。

  總結:

  • 使用RTU是可能的
  • 如果RTU在WinNT上出現超時問題或者使用300 bps或撥號調制解調器等慢速通信媒體時使用ASCII,大多數用于Modbus的OPC服務器都支持ASCII和RTU通信。

  什么是擴展寄存器地址?

  由于模擬輸出保持寄存器的范圍是40001到49999,因此意味著寄存器不能超過9999個。雖然這對于大多數應用程序來說通常已經足夠了,但有些情況下會有更多的寄存器。寄存器40001至49999對應于數據地址0000 至270E 。如果我們利用剩余的數據地址270F 到FFFF ,可以使用超過六倍的寄存器,總共65536個。這對應于40001到105536的寄存器編號。許多modbus軟件驅動程序(用于主PC)都是用40001到49999編寫的限制,不能訪問從設備中的擴展寄存器。許多從設備不支持使用擴展寄存器的映射。但另一方面,一些從設備確實支持這些寄存器,一些Master軟件可以訪問它,特別是在編寫自定義軟件時。

  字節從站尋址如何工作?

  由于單個字節通常用于定義從站地址,并且網絡上的每個從站都需要唯一的地址,因此網絡上的從站數量限制為256. modbus規范中定義的限制甚至更低,為247 。超出此限制,可以對協議進行修改以使用兩個字節作為地址。主人和奴隸都需要支持這種修改。雙字節尋址將網絡中從站數量的限制擴展到65535. 默認情況下,Simply Modbus軟件使用1字節尋址。輸入大于255 的地址時,軟件會自動切換到2字節尋址并保持不變所有地址的此模式,直到手動關閉2字節尋址。

標簽 Modbus

發表評論

姓  名*
郵  箱*
公  司  名 
評論內容*
驗證碼
广西11选5走势