《modbus通讯》word版

《modbus通讯》word版

ID:25605120

大小:46.27 KB

页数:5页

时间:2018-11-21

《modbus通讯》word版_第1页
《modbus通讯》word版_第2页
《modbus通讯》word版_第3页
《modbus通讯》word版_第4页
《modbus通讯》word版_第5页
资源描述:

《《modbus通讯》word版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Modbus通讯在坛子中看到很多弟兄们在做Modbus通讯时遇到很多问题,包括Modbus的请求或响应的基本知识,包括编程等等,现将我的一点拙见写出来,供大家参考和批评指正。Modbus协议最早有施耐德旗下的Modicon公司与1978年提出,目前已经称为国际标准和国家、行业标准。该协议是典型的串行通讯协议,支持CRC或LRC校验。通讯速率支持2.4kbps~115.2kbps,更快也可以,但是误码率较高。支持RTU或ASCII通讯凡是,支持奇/偶/无校验。RTU通讯时标准通讯参数为支持8个数据位、1个停止位、偶校验;ASCII通讯时标准通讯

2、参数为支持7个数据位、1个停止位、偶校验;Modbus总线理论上支持的从站个数可达248个(单条总线、不加中继时连接的设备个数与通讯端口和连接的设备有关,有的可连接16个设备,最大连接32个设备),不加中继双绞线距离可达1200米。Modbus通讯时最常用的是RTU通讯方式:1.通讯时读请求格式如下:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。2.读响应格式如下:从站地址(1个字节)、功能代码(1个字节)、读数据长度(1个字节)、数据(长度与数据长度中的字节数相同)

3、、CRC校验(2个字节)。3. 写请求格式:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写出数据长度(1个字节)、写出数据(长度与数据长度字节相同)、CRC校验(2个字节)。4. 写响应格式:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写数据长度(2个字节)、CRC校验(2个字节)。如果为RTU通讯,校验方式为CRC校验;ASCII通讯时,校验方式为LRC校验方式。功能代码有很多:01:读单个线圈(0***地址)数据02:读输入信号(1***地址)数据03:读连续多个寄存器地址(4*

4、**)04:读连续多个输入模拟量地址(3***)05:写单个线圈(0***地址)数据06:写单个寄存器数据(4***)07:读以外状态信息08:诊断:15:写多个连续线圈(0***地址)数据16:写多个连续寄存器(4***)数据17:返回从站ID:20:读参考信息(文件记录)21:写参考信息(文件记录)23:读写FIFO队列不同的Modbus设备支持的功能代码也有区别,总的来说Modbus设备可分为三类:1. 基本型:支持03和16功能码2. 标准型:支持03和16、01、02、08、15功能码3. 扩展型:支持除标准型的功能码外,还支持20

5、、21、23功能码。Modbus读寄存器时最大可连续读取125个字的数据,写100个子的数据。读位时可读2000个位信息,写1600个位信息。(位的数据与字的数据是16倍的关系)很多人认为做Modbus读写位操作时,所有数据应该保存在位地址中。其实不是,在做Modbus通讯时,由于所有数据都是按照字节方式打包的,因此,所有位数据都是存储到字节中发送或读取的(这就是个别通讯一直疑问为什么做位读写时数据还要存储到字地址中的原因)。最后,由于Modbus通讯同时支持字读写和位读写(在施耐德所有PLC中,所有地址都是按照“字”地址和“位”地址定义的,

6、字地址和位地址没有任何关系,可以任意调用,而西门子所有PLC地址都是按照“字节”方式定义的。)在存储数据时,西门子PLC中的数据是按照“低字节、高字节”顺序存储的,如果读取浮点数数据,顺序为:低字低字节、低字高字节、高字低字节、高字高字节。而施耐德所有PLC由于按照“字”地址和“位”地址定义的,所有数据存储时与西门子PLC完全相反,即如果读取浮点数数据,顺序为:低字高字节、低字低字节、高字高字节、高字低字节的顺序。这就是为什么有些数据上传到西门子PLC或HMI时,所有数据都不正确的原因,是因为高低字节顺序反了。如果出现上述问题,只需将高低字节

7、编程做个转换即可。刚开始应用MODBUS通讯的时候,犯过错,拿出来分享下。功能码 03 16 对应的 4***x(寄存器) 应用最多。  一般起始地址对应的40001。 例如仪表的地址是0x1F0 。容易对应成40496 。实际是40497.采用Modbus通讯读写数据时,数据内容中并不包含数据的地址,数据地址包含在Modbus读写的请求中。如下所示:通讯时读请求格式如下:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。因此,需要注意如下内容:1. 从Modbus地址编

8、码来说,最小地址为1,如1***、0***、3***、4***地址中最小地址都为1,如10001,00001,30001,40001等。但是很多厂家的设备在编码时都

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。