温度控制_DELPHI_SPCOMM_Modbus协议通讯学习资料.pdfVIP

  • 204
  • 0
  • 约2.52万字
  • 约 19页
  • 2017-06-05 发布于河南
  • 举报

温度控制_DELPHI_SPCOMM_Modbus协议通讯学习资料.pdf

温度控制_DELPHI_SPCOMM_Modbus协议通讯学习资料

Modbus 协议基本知识及学习示例 Modbus 协议包括ASCII、RTU、TCP 等,并没有规定物理层。协议定义了控制器能够认识和使用的消息 结构,而不管它们是经过何种网络进 行通信的。标准的Modicon 控制器使用RS232C 实现串行的Modbus 。Modbus 的ASCII、RTU 协议规定了消息、 数据的结构、命令和就答的方式,数据 通讯采用Maser/Slave 方式,Master 端发出数据请求消息,Slave 端接收到正确消息后就可以 发送数据到 Master 端以响应请求;Master 端 也可以直接发消息修改Slave 端的数据,实现双向读写。 Modbus 协议需要对数据进行校验,另外,Modbus 采用主从方式定时收发数据,在实际使用中如果某Slave 站点断开后 (如故障或关机), Master 端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus 协议的可靠性较好。 ASCII 协议和RTU 协议进行的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII : (冒号) CR,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC 高 不直观,稍复杂 LRC 校验:LRC 域是一个包含一个8 位二进制值的字节。LRC 值由传输设备来计算并放到消息帧中,接收 设备在接收消息的过程中计算LRC,并 将它和接收到消息中LRC 域中的值比较,如果两值不等,说明有错误。LRC 校验比较简单,它在ASCII 协议 中使用,检测了消息域中除开始的冒号 及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加 1 即可。 CRC 校验:CRC 域是两个字节,包含一 16 位的二进制值。它由传输设备计算后加入到消息中。接收设备 重新计算收到消息的CRC,并与接收到 的CRC 域中的值比较,如果两值不同,则有误。 1、读可读写数字量寄存器 (线圈状态): 计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8 位] [低8 位] [读取的寄存器数高8 位] [低8 位] [CRC 校验的低8 位] [CRC 校验的 高8 位] 例:[10][01][00][13][00][25][CRC 低][CRC 高] 意义如下: 1设备地址:在一个485 总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想 和16 号(十进制的 16 是十六进制的 10)通讯。 2命令号01:读取数字量的命令号固定为01。 3起始地址高8 位、低8 位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。 4寄存器数高8 位、低8 位:表示从起始地址开始读多少个开关量。例子中为37 个开关量。 5CRC 校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC 校验在命令中的 高低字节的顺序和其他的相反。 设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8 位] [CRC 校验的 高8 位] 例:[10][01][05][CD][6B][B2][0E][1B][CRC 低][CRC 高] 意义如下: 1设备地址和命令号和上面的相同。 2返回的字节个数:表示数据的字节个数,也就是数据 1,2...n 中的n 的值。 3数据1...n:由于每一个数据是一个8 位的数,所以每一个数据表示8 个开关量的值,每一位为0 表示对应 的开关断开,为1 表示闭合。比如例 子中,表示20 号(索引号为19)开关闭合,21 号断开,22 闭合,23 闭合,24 断开,25 断开,26 闭合,27 闭合... 如果询问的开关量不是8 的整倍数 ,那么最后一个字节的高位部分无意义,置为0。 4CRC 校验同上。 2、读只可读数字量寄存器 (输入状态): 和读取线圈状态类似,只是第二个字节的命令号不再是 1 而是2。 3、写数字量 (线圈状态): 计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8 位] [低8 位] [下置的数据高8 位] [低8 位] [CRC 校验的低8 位] [CRC 校验的 高8 位] 例:[10][05][00][AC][FF][00][CRC 低][CRC 高] 意义如下: 1设备地址和上面的相

文档评论(0)

1亿VIP精品文档

相关文档