关于51 单片机上实现modbus 协议 你找一个MODBUS 的协议详细资料好好看看,就是一种通讯约定,你按照它规定的格式通讯就可以了 协议发送给询问方
Modbus 协议包括ASCII、RTU、TCP 等,并没有规定物理层
此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的
标准的Modicon 控制器使用 RS232C 实现串行的Modbus
Modbus 的ASCII、RTU 协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave 方式,Master 端发出数据请求消息,Slave 端接收到正确消息后就可以发送数据到 Master 端以响应请求;Master 端也可以直接发消息修改 Slave 端的数据,实现双向读写
Modbus 协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII 模式采用 LRC校验,RTU 模式采用 16 位 CRC 校验,但 TCP 模式没有额外规定校验,因为 TCP 协议是一个面向连接的可靠协议
另外,Modbus 采用主从方式定时收发数据,在实际使用中如果某 Slave 站点断开后(如故障或关机),Master 端可以诊断出来,而当故障修复后,网络又可自动接通
因此,Modbus 协议的可靠性较好
下面我来简单的给大家介绍一下,对于Modbus 的ASCII、RTU 和 TCP 协议来说,其中 TCP 和 RTU 协议非常类似,我们只要把 RTU 协议的两个字节的校验码去掉,然后在 RTU 协议的开始加上5 个0 和一个6 并通过 TCP/IP 网络协议发送出去即可
所以在这里我仅介绍一下 Modbus 的ASCII 和 RTU 协议
下表是ASCII 协议和 RTU 协议进行的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII :(冒号) CR