电工知识|Modbus协议使用常见问题分析

   更新日期:2017-04-02     来源:建材之家    作者:水电之家    浏览:50    评论:0    
核心提示:Modbus协议最初由Modicon公司开发出来,是针对plc设备设计的基于串行总线的主从模式的应用层总线设备协议。ModbusTCP是封装在TCP包内的Modbus协议,虽然有一些变化,但是根本上还是主从模式。  随着嵌入式技术的发展,国内很多系统的控制和采集单元部分为公司自主研发,一般建议这些公司的串行通讯协议采用Modbus协议,很多用户在modbus协议存在着理解错误,现在

电工知识|电容分相式单相异步电动机正反接原理图

推荐简介:电容分相式单相异步电动机正反接原理图 值得指出,欲使电动机反转,不能像三相异步电动机那样掉换两根电源线来实现,必须以掉换电容器C的串联位置来实现,如图所示,即改变QB的接通位置,就可改变旋转磁场的方向,从而实现电动机的反转。洗衣机中的电动机,就是靠定时器中的自动转换开关来实现这种切换的。......
水电之家讯: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)水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
小程序码
 
打赏
 
更多>文章标签:水电之家
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
最新视频更多...
推荐产品更多...
老姚之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BYBC.CN SYSTEM All Rights Reserved
Powered by 电工之家