当前位置:首页 > 物联网 > 网络协议
[导读]   Modbus协议最初由Modicon公司开发出来,是针对PLC设备设计的基于串行总线的主从模式的应用层总线设备协议。ModbusTCP是封装在TCP包内的Modbus协议,虽然有一些变化,但

  Modbus协议最初由Modicon公司开发出来,是针对PLC设备设计的基于串行总线的主从模式的应用层总线设备协议。ModbusTCP是封装在TCP包内的Modbus协议,虽然有一些变化,但是根本上还是主从模式。

  随着嵌入式技术的发展,国内很多系统的控制和采集单元部分为公司自主研发,一般建议这些公司的串行通讯协议采用Modbus协议,很多用户在modbus协议存在着理解错误,现在分析如下:

  一、modbus的保持和输入寄存器是以word(16bit)为单位的。

  比如4****(保持寄存器/输出寄存器)和3****(输入寄存器)是以字为单位的。所以,如果读40001寄存器开始的一个16位的无符号数,那么返回2个Byte,并可以从40002开始读下一个16位的无符号数。

  但是,如果读40001寄存器开始的一个32位浮点数,那么,返回4个Byte,而且,下一个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 --  模拟量采集通道1,16位有符号数,.....。比如组态软件的地址设置,一般为输出寄存器,从地址1开始,连续多少个。或者指明400001:16位有符号数。但是,在数据报文层面,寄存器起始地址从0开始。

  数据报文包括:设备地址+功能码+起始地址+寄存器个数+校验位。其中,起始地址是从0开始的。

  举例说明:从设备17读40001开始的2个寄存器数据的报文

  设备地址  功能码 起始地址  寄存器个数 校验

   11              03          00 00         00 02              --

  常见问题:

  1、使用和定义40000地址;

  2、分析报文时,直接将报文起始地址当作应用层寄存器地址。

  3、Modbus的写寄存器命令的不同。

  常用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)功能码05(0x05)

  写单个寄存器(Preset Single Holding Register)功能码06(0x06)

  2)、写多个寄存器

  写多线圈(Force MulTIple Coils)功能码15(0x0F)

  写多个寄存器(Preset MulTIple Registers)功能码16(0x10)


 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭