Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

modbus字符串的结束符

接收到一串字符,总要知道在那个地方结束吧,这就是结束符的作用,接收方不管以后还会收到多少个字符。当接收到结束符时,以后再接收的字符就算是下一轮的东西了,从起始符到结束符之间的字符就是它要分析的字符! MODBUS的ASCII方式结束符是--- Chr$(13) + Chr$(10)

现在的组合是“:02030A000004FB“+ Chr$(13) + Chr$(10)

至此,ASCII方式的发送就完成了,控制器接收到此串字符后,根据MODBUS协议定义的通讯规范分析此串字符的作用,然后返回相应的字符!

注意:发送的字符都是以十六进制数表示!

RTU方式发送时的规范定义如下:

至少3.5个字符传输时间的停顿间隔时间标定消息的开始 设备地址 + 功能代码+ 数据 + 校验 + 至少3.5个字符传输时间的停顿间隔时间标定了消息的结束

其他的就不用说了,与ASCII方式一样的作用,唯独这3.5个字符的时间搞晕了很多人,实际我也不敢太解释,大致说一下吧,您就当听着玩,比如通讯格式是9600,E,8,1 波特率是做什么的?一秒传输多少个位(比如一秒传送9600个位),一个字符是多少个位呢?通讯格式已经标定了(7个位或是8个位),那3.5个字符的传送时间就好算了吧:

3.5*11(或10)=39个位(35个位),传3.5个字符需要的时间是:39/9600=4毫秒。

不是说八位嘛,怎么乘11,记住了,还有一个起始位,奇或偶的校验位(无奇偶校验,则没有此位),停止位(两个停止位就是2了。)

如9600,N,8,2为11个位, 9600,N,7,1.为9个位

就是说,您得保证发送字符串的连续性,中间停顿时间超过4毫秒,接收方就认为您已经发送完了这组消息,开始处理了。这就是至少3.5个字符传输时间的停顿间隔时间标定了消息的结束的含义

如果您发送的太连续,下一组消息与上一组消息之间的间隔时间没超过4毫秒,接收方就认为这些字符是一组消息,按一组消息去处理。所以,您发送结束一组命令后,必须间隔4毫秒才能发送下一组命令。 这就是至少3.5个字符传输时间的停顿间隔时间标定消息的开始的含义

最新文章

  1. 女生的最爱,装饰品。WPF也有,Adorner。(上海晒衣服理念)
  2. 搭建域服务器和DNS
  3. 给各位聚聚和大大介绍一个开源项目 Expression2Sql(转)
  4. threading使用心得
  5. MySQL 5.6 Warning: Using a password on the command line interface can be insecure
  6. jsoncpp封装和解析字符串、数字、布尔值和数组
  7. Java二维码登录流程实现(包含短地址生成,含部分代码)
  8. 【推理,贪心】UVa 1319 - Maximum
  9. mysql 5.6密码强度插件使用
  10. python 小程序—循环和列表训练
  11. Lucene学习笔记1(V7.1)
  12. web网络协议
  13. BZOJ_2693_jzptab_莫比乌斯反演
  14. Mybatis sql映射文件浅析 Mybatis简介(三) 简介
  15. ajax请求的同步异步问题
  16. logcat -- 基本用法
  17. Java保存文本文件
  18. CentOS7.4使用yum安装MySQL5.6
  19. 使用linux下的C操作SQLLITE
  20. LoadRunner项目结合抓包工具

热门文章

  1. 使用plotrix做韦恩图
  2. SFTP客户端与服务端
  3. cesium 水面、淹没 效果
  4. 剑指offer48:不用加减乘除做加法
  5. Python对象的引用、可变性和垃圾回收
  6. Spring Boot集成redis完整实例
  7. RMAN备份脚本执行遇到RMAN-03002,06091问题处理
  8. hdu 2586 欧拉序+rmq 求lca
  9. Netty服务端创建流程及组件职责
  10. iview的table组件中加入超链接组件,可编辑组件,选择组件,日期组件