• 客服熱線:
    024-31217263


  • 服務時間:
    8:00-17:00

  • 官方微信
  •  掃描微信二維碼
中文    /  English
當前位置:首頁 >>新聞中心 >>相關資訊
相關資訊/ Industry News

Modbus協議使用常見問題分析

Modbus協議最初由Modicon公司開發出來,是針對PLC設備設計的基于串行總線的主從模式的應用層總線設備協議。ModbusTCP是封裝在TCP包內的Modbus協議,雖然有一些變化,但是根本上還是主從模式。
隨著嵌入式技術的發展,國內很多系統的控制和采集單元部分為公司自主研發,一般建議這些公司的串行通訊協議采用Modbus協議,很多用戶在modbus協議存在著理解錯誤,現在分析如下:

一、modbus的保持和輸入寄存器是以word16bit)為單位的。
比如4****(保持寄存器/輸出寄存器)和3****(輸入寄存器)是以字為單位的。所以,如果讀40001寄存器開始的一個16位的無符號數,那么返回2Byte,并可以從40002開始讀下一個16位的無符號數。

但是,如果讀40001寄存器開始的一個32位浮點數,那么,返回4Byte,而且,下一個32位浮點數必須從40003開始。

常見問題:

1)、將40001定義為一個Byte的數據;

2)、將40001定義為32位浮點數,40002為下一個32位浮點數。

二、寄存器最小地址為1,而報文起始地址為0
在數據報文中,所有的modbus地址都是從0開始的。也就是首次出現的數據項在報文中的地址為0。比如:
1.在控制器中,線圈1”Modbus報文的地址域中的地址為00 00

2.線圈127的十六進制報文地址為007E hex(十進制的126

3.保持寄存器40001的報文地址為00 00。因為報文功能碼明確要操作保持寄存器,所以,協議就以“4XXXX”代表這個寄存器。

4.保持寄存器40108的報文地址為006B hex (十進制107

總之,Modbus地址一般指4****(保持寄存器/輸出寄存器)和3****(輸入寄存器),這時應用層面的:
比如設備說明書可以簡要說明設備支持Modbus RTU標準協議,并詳細描述其地址對應關系為:40001 --  模擬量采集通道116位有符號數,.....。比如組態軟件的地址設置,一般為輸出寄存器,從地址1開始,連續多少個。或者指明40000116位有符號數。但是,在數據報文層面,寄存器起始地址從0開始。
數據報文包括:設備地址+功能碼+起始地址+寄存器個數+校驗位。其中,起始地址是從0開始的。

舉例說明:從設備1740001開始的2個寄存器數據的報文

設備地址功能碼起始地址寄存器個數校驗
11              03          00 00         00 02              --

常見問題:
1、使用和定義40000地址;

2、分析報文時,直接將報文起始地址當作應用層寄存器地址。

3Modbus的寫寄存器命令的不同。

常用Modbus寄存器有:線圈(Coil)、輸入(Input)、保持寄存器(Holding Registers)和輸入寄存器(Input Registers)。
Modbus設備角度看,輸入是上位機采集Modbus設備的信息,也就是這些寄存器是只讀的,所以,Modbus協議沒有寫輸入(Input)和輸入寄存器(Input Registers)的命令。

線圈(Coil)是狀態量,對應Modbus設備的開關量輸出(DO),保持寄存器(Holding Registers)是模擬量,對應Modbus設備模擬量輸出(AO),這些寄存器需要Modbus設備的上位機進行設置,也就是為可以寫的寄存器。

Modicon_Modbus協議協議中,寫線圈(Coil)和保持寄存器(Holding Registers)都有兩種寫命令:
1)、寫單個寄存器:

置單線圈(Force Single Coil)功能碼050x05
寫單個寄存器(Preset Single Holding Register)功能碼060x06
2)、寫多個寄存器

寫多線圈(Force Multiple Coils)功能碼150x0F
寫多個寄存器(Preset Multiple Registers)功能碼160x10

 

電話:
024-31217263(產品事業部) 024-31217253(自動化)

傳真:
024-31217293(產品事業部) 024-31217260 (自動化)
郵件:
[email protected]
地址:
中國·沈陽·渾南新區文溯街17-8號 國際新興產業園
郵編:110179
產品事業部:點擊這里給我發消息
彩票跨度怎么算