关于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,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC 高 不直观,稍复杂 通过比较可以看到,ASCII 协议和 RTU 协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII 字符,所以进行调试时就更加的直观,另外它的LRC 校验也比较容易。但是因为它传输的都是可见的ASCII 字符,RTU 传输的数据每一个字节 ASCII 都要用两个字节来传输,比如 RTU 传输一个十六进制数 0xF9,ASCII就需要传输’F’’9’的ASCII 码 0x39 和 0x46 两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用 ASCII 协议,如果所需传输的数据量比较大,最好能使用 RTU 协议。 下面对两种协...