买MODBUS通讯协议上1688,Modbus通讯协议( 二 )


什么是ModBusRTU通讯协议?

买MODBUS通讯协议上1688,Modbus通讯协议


M-bus简称仪表总线 ,  它具有两总线无极性 , 布线无拓扑要求,总线自供电 , 抗干扰能力强、中继级数多、带终端级数多 , 简单、可靠等一 系列优点 , 是目前抄表系统应用的最好的总线 。M-BUS 系统采用半双工异步通讯 , 传输速率:300Bps—9600Bps 。传输距离较远 , 由超声波热量表内独立锂电 池供电 , 外部电源断电不影响其独立工作 。
Modbus协议RTU格式中通信格式字一定有起始位吗?
买MODBUS通讯协议上1688,Modbus通讯协议


Modbus-RTU协议中 , 不用判断起始位 。这种通信采用的是主机轮询、从机应答式的通讯方式 , 从机通过地址来判断主机的通信对象是否为自己 , 所以不用判断起始位 。1MODBUS-RTU的通讯格式RS485接口在工业自动化中应用非常广泛 , 该接口为双总线通信方式 , 只有RSA和RSB两根线 , 可以走MODBUS TCP/IP协议 , 也可以走MODBUS-RTU协议 , 通讯距离可达数公里 , 是一种标准的通讯接口 , 而MODBUS-RTU是工业现场一种标准的通信协议 , 大多数的PLC和组态屏都支持该通讯协议 。
其数据格式是由如下几部分构成的:1)从机地址;2)功能码;3)数据;4)校验码 。采用一问一答式通讯方式 , 主机定时查询从机状态 , 从机收到主机的轮询命令后回复相应的数据 。常用的功能码有01读线圈状态、03读保持寄存器、06预置单个寄存器、16预置多个寄存器等 。203功能码举例解析以03功能码为例 , 介绍一条具体的数据格式 , 主机的命令格式为:01 03 00 04 00 02 85 CA , 从机回复的数据格式为:01 03 04 00 00 00 00 FA 33 。
如下图所示 。该条命令的含义为:主机要读取01号地址的从设备的寄存器内容 , 读取从00 04寄存器开始往后2个寄存器的内容 , 即00 04和00 05寄存器中的内容 。从机收到命令后 , 将这两个寄存器中的数据发送给主机 , 每个寄存器存放两个字节的数据 , 两个寄存器共存放4个字节的数据 , 所以返回数据字节的个数为4个 。
306功能码举例解析06功能码是用来写从机寄存器的内容的 , 比如主机向改写从机其中一个寄存器的数据 , 就可以通过06功能码来实现 。主机发送的数据如下:01 06 00 00 00 0A 09 CD , 从机返回的数据如下:01 06 00 00 00 0A 09 CD 。如下图所示 。该数据所代表的含义为:主机要将01号从机的00 00寄存器写入两个字节的数据 , 数据为00 0A 。
写入成功后 , 从机返回该寄存器的状态 。06功能码只要改写一个寄存器的内容 , 如果要改写多个寄存器的内容需要用到16预置多个寄存器功能码 。4常用的通信参数Modbus在通讯之前 , 先要确认通信参数 , 这些通信参数包括:1)波特率;2)数据位数;3)停止位4)校验方式等 。波特率是指每秒所传送的数据的位数 , 数值越大通信速度越快 , 常用的波特率有4800、9600、19200、115200等 , 两台设备在通讯时 , 通讯波特率必须一致 , 否则通讯无法建立 。
数据位数 , 一般为8位 。停止位有1位 , 2位等 , 校验方式有奇校验、偶校验和无校验等 。总之 , 通过上述描述可以看出 , MODBUS-RTU通讯协议中并未规定起始位的信息 , 而是规定了从机地址、功能码之类的信息 。所以不需要起始位 。以上就是这个问题的回答 , 感谢留言、评论、转发 。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式 。

推荐阅读