Modbus基础知识概念Modbus通信协议由Modicon公司(现在的施耐德电气Schneider Electric)于1979年为可编程逻辑控制(即PLC)通信而发表 。目前,Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式 。Modbus作为目前工业领域应用最广泛的协议,与其他通信协议相比,有以下特点:公众号【dotNet工控上位机:thinger_swj】
- Modbus协议标准开放、公开发表且无版权要求 。
- Modbus协议支持多种电气接口,包括RS232、RS485、TCP/IP等,还可以在各种介质上传输,如双绞线、光纤、红外、无线等 。
- Modbus协议消息帧格式简单、紧凑、通俗易懂 。用户理解和使用简单,厂商容易开发和集成,方便形成工业控制网络 Modbus协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构 。
ASCII 模式采用LRC校验,RTU模式采用16 位CRC校验,通过以太网传输时使用TCP,这种模式不使用校验,因为TCP协议是一个面向连接的可靠协议 。
Modbus协议规定了4个存储区,这里以常用的5段长度进行说明,如下表所示:
文章插图
Modbus协议同时规定了二十几种功能码,但是常用的只有8种,用于针对上述存储区的读写,如下表所示:
文章插图
工欲善其事,必先利其器,Modbus学习配合相关的调试软件,可以达到事半功倍的效果 。
Modbus学习必备的三大神器分别是Modbus Poll、Modbus Slave及VSPD,Modbus Poll软件主要用于仿真Modbus主站或Modbus客户端,Modbus Slave软件主要用于仿真Modbus从站或Modbus服务器,而VSPD全称Configure Virtual Serial Port Driver,是用来给电脑创建虚拟串口使用的 。
ModbusRTU/ASCII协议分析ModbusRTU与ModbusASCII在报文数据发送格式上几乎一样,但也存在一些区别,具体体现在:
1、ModbusASCII有开始字符(:)和结束字符(CR LF),可以作为一帧数据开始和结束的标志,而ModbusRTU没有这样的标志,需要用时间间隔来判断一帧报文的开始和结束,协议规定的时间为3.5个字符周期,就是说一帧报文开始前,必须有大于3.5个字符周期的空闲时间,一帧报文结束后,也必须要有3.5个字符周期的空闲时间否则就会出现粘包的情况 。
注意:针对3.5个字符周期,其实是一个具体时间,但是这个时间跟波特率相关 。在串口通信中,1个字符包括1位起始位、8位数据位(一般情况)、1位校验位(或者没有)、1位停止位(一般情况下),因此1个字符包括11个位,那么3.5个字符就是38.5个位,波特率表示的含义是每秒传输的二进制位的个位,因此如果是9600波特率,3.5个字符周期=1000/9600*38.5=4.01ms 。2、两者校验方式不同,ModbusRTU是CRC循环冗余校验,ModbusASCII是LCR纵向冗余校验 。
3、在Modbus标准中,RTU是必须要求的,而ASCII是可选项,即作为一个Modbus通信设备可以只支持RTU,也可以同时支持RTU和ASCII,但不能只支持ASCII 。
下面针对具体报文进行分析,Modbus协议在串行链路上的报文格式如下所示:
文章插图
读取输出线圈发送报文格式如下:
文章插图
发送报文含义:
读取1号从站输出线圈,起始地址为0x13=19,对应地址为00020,线圈数量为0x1B=27,即读取1号从站输出线圈,地址从00020-00046,共27个线圈的状态值 。
注意:协议中的起始地址指的是索引,后面的地址指的是具体地址,对于任意一个存储区,索引都是从0开始的,但是对应的具体地址,与存储区是相关的,比如输出线圈,0对应00001;输入线圈,0对应10001;输入寄存器,0对应30001;保持寄存器,0对应40001 。返回报文格式如下:
文章插图
返回报文含义:
返回1号从站输出线圈00020-00046,共27个线圈的状态值,返回字节数为4个,分别为CD 6B B2 05 。
CD=1100 1101 对应 00020-00027
推荐阅读
- 羽毛笔的介绍和制造
- 解密微信电脑版dat文件解码解密查看方法
- @Import注解的作用
- 云顶之弈排名怎么看?
- 正确认识代理IP,合理使用代理IP
- 对前端、后端和全栈感兴趣的人,建议都看看!18年老程序员忠告
- java按顺序执行线程
- 历史上康熙见过弘历吗,康熙为什么看上弘历了
- 玫瑰花茶和什么搭配好,玫瑰花茶怎么搭配最好那要看您想达到什么效果
- 发型|今夏男发别瞎剪,帅气男发看这里,最后3款要避免