<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Modbus總線(xiàn)協(xié)議

Modbus總線(xiàn)協(xié)議

作者: 時(shí)間:2016-12-16 來(lái)源:網(wǎng)絡(luò ) 收藏
Modbus協(xié)議最初由Modicon公司開(kāi)發(fā)出來(lái),是針對PLC設備設計的基于串行總線(xiàn)的主從模式的應用層總線(xiàn)設備協(xié)議。ModbusTCP是封裝在TCP包內的Modbus協(xié)議,雖然有一些變化,但是根本上還是主從模式。
  隨著(zhù)嵌入式技術(shù)的發(fā)展,國內很多系統的控制和采集單元部分為公司自主研發(fā),一般建議這些公司的串行通訊協(xié)議采用Modbus協(xié)議,很多用戶(hù)在modbus協(xié)議存在著(zhù)理解錯誤,現在分析如下:
  一、modbus的保持和輸入寄存器是以word(16bit)為單位的。
  比如4****(保持寄存器/輸出寄存器)和3****(輸入寄存器)是以字為單位的。所以,如果讀40001寄存器開(kāi)始的一個(gè)16位的無(wú)符號數,那么返回2個(gè)Byte,并可以從40002開(kāi)始讀下一個(gè)16位的無(wú)符號數。
  但是,如果讀40001寄存器開(kāi)始的一個(gè)32位浮點(diǎn)數,那么,返回4個(gè)Byte,而且,下一個(gè)32位浮點(diǎn)數必須從40003開(kāi)始。
  常見(jiàn)問(wèn)題:
  1)、將40001定義為一個(gè)Byte的數據;
  2)、將40001定義為32位浮點(diǎn)數,40002為下一個(gè)32位浮點(diǎn)數。
   二、寄存器最小地址為1,而報文起始地址為0。
  在數據報文中,所有的modbus地址都是從0開(kāi)始的。也就是首次出現的數據項在報文中的地址為0。比如:
  1.在控制器中,“線(xiàn)圈1”在Modbus報文的地址域中的地址為00 00。
  2.線(xiàn)圈127的十六進(jìn)制報文地址為007E hex(十進(jìn)制的126)
  3.保持寄存器40001的報文地址為00 00。因為報文功能碼明確要操作“保持寄存器”,所以,協(xié)議就以“4XXXX”代表這個(gè)寄存器。
  4.保持寄存器40108的報文地址為006B hex (十進(jìn)制107)
  總之,Modbus地址一般指4****(保持寄存器/輸出寄存器)和3****(輸入寄存器),這時(shí)應用層面的:
  比如設備說(shuō)明書(shū)可以簡(jiǎn)要說(shuō)明設備支持Modbus RTU標準協(xié)議,并詳細描述其地址對應關(guān)系為:40001 -- 模擬量采集通道1,16位有符號數,.....。比如組態(tài)軟件的地址設置,一般為輸出寄存器,從地址1開(kāi)始,連續多少個(gè)?;蛘咧该?00001:16位有符號數。但是,在數據報文層面,寄存器起始地址從0開(kāi)始。
  數據報文包括:設備地址+功能碼+起始地址+寄存器個(gè)數+校驗位。其中,起始地址是從0開(kāi)始的。
  舉例說(shuō)明:從設備17讀40001開(kāi)始的2個(gè)寄存器數據的報文
  設備地址 功能碼 起始地址 寄存器個(gè)數 校驗
   11 03 00 00 00 02 --
  常見(jiàn)問(wèn)題:
  1、使用和定義40000地址;
  2、分析報文時(shí),直接將報文起始地址當作應用層寄存器地址。
  3、Modbus的寫(xiě)寄存器命令的不同。
  常用Modbus寄存器有:線(xiàn)圈(Coil)、輸入(Input)、保持寄存器(Holding Registers)和輸入寄存器(Input Registers)。
  從Modbus設備角度看,輸入是上位機采集Modbus設備的信息,也就是這些寄存器是只讀的,所以,Modbus協(xié)議沒(méi)有寫(xiě)輸入(Input)和輸入寄存器(Input Registers)的命令。
  線(xiàn)圈(Coil)是狀態(tài)量,對應Modbus設備的開(kāi)關(guān)量輸出(DO),保持寄存器(Holding Registers)是模擬量,對應Modbus設備模擬量輸出(AO),這些寄存器需要Modbus設備的上位機進(jìn)行設置,也就是為可以寫(xiě)的寄存器。
  在Modicon_Modbus協(xié)議 協(xié)議中,寫(xiě)線(xiàn)圈(Coil)和保持寄存器(Holding Registers)都有兩種寫(xiě)命令:
  1)、寫(xiě)單個(gè)寄存器:
  置單線(xiàn)圈(Force Single Coil)功能碼05(0x05)
  寫(xiě)單個(gè)寄存器(Preset Single Holding Register)功能碼06(0x06)
  2)、寫(xiě)多個(gè)寄存器
  寫(xiě)多線(xiàn)圈(Force Multiple Coils)功能碼15(0x0F)
  寫(xiě)多個(gè)寄存器(Preset Multiple Registers)功能碼16(0x10)


關(guān)鍵詞: Modbus總線(xiàn)協(xié)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>