modbus协议论文内容摘要:

83。 42 力控软件变量定义及相关参数设置 44 总结 47 参考文献 48 致 谢 49 东北石油大学秦皇岛分校 毕业论文 1 第 1 章 MODBUS 协议简介 关于 Modbus 协议 Modbus 协议 是应用于电子控制器上的一种通用语言。 通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。 它已经成为一工业通用标准。 有了它,不 同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。 它描述了一控制器请求访问其它设备的过程,如何回应来自其他设备的请求,以及怎样侦测错误并记录。 它制定了消息域格局和内容的公共格式。 当在一 Modbus 网络上通信时,此协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。 如果需要回应,控制器将生成反馈信息并用 Modbus 协议发出。 在其它网络上,包含了 Modbus 协议的消息转换为在此网络上 使用的帧或包结构。 这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 在 Modbus 网络上传输 标准的 Modbus 口是使用 RS— 232C 兼容串行接口,它定义了连接口的针脚、电缆、信位号、传输波特率、奇偶校验。 控制器能直接或经由 Modem 组网。 控制器通信使用主 — 从技术,即仅一设备(主设备)能初始化传输(查询)。 其它设备(从设备)根据主设备查询提供的数据作出相应反应。 典型的主设备 :主机和可编程仪表。 典型的从设备:可编程控制器。 主设备可单独和从设备通信,也能以广播方式和所有从 设备通信。 如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。 Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。 从设备回应消息也由 Modbus 协议构成,包括确认要行动的域、任何要返回的数据和错误检测域。 如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 在其它类型网络上传输 在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。 这样在单独的通信 过程中,控制器既可作为主设备也可作为从设备。 提供的多个内部通道可允许同时发生的传输进程。 在消息位, Modbus协议仍提供了主 — 从原则,尽管网络通信方法是“对等”。 如果以控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。 同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。 查询 — 回应周期 东北石油大学秦皇岛分校 毕业论文 2 图 11 主 — 从查询回应周期表 1 查询 查询消息中的功能代码告之被选中的从设备要执行何种功能,数据段包含了从设备要执行功能的任何附加信息。 例如功能代码 03 是要求从设 备读保持寄存器并返回它们的内容。 数据段必须包含要告知从设备的信息:从何寄存器开始读及要读的寄存器数量。 错误检测域为从设备提供了一种验证消息的内容是否正确的方法。 2 回应 如果从设备产生一种正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。 数据段包括了从设备收集的数据 :象寄存器值或状态。 如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。 错误检测域允许主设备确认消息内容是否可用。 接口方式 RS485 或 RS232 接口:异步, 半双工。 默认数据格式: 8 位数据位、偶校验、一位停止位, 19200bps, RTU。 可设置为 38400bps、 19200bps、 9600bps、 4800bps、 1200bps;最高可设置波特率位 38400bps。 数据域:支持 2255个字节( ASCII 模式)、 252字节( RTU 模式) GCM系列 PLC有两个通信口,其通信口 0(也作为编程口)支持 MODBUS 从站,通信口 1 支持MODBUS 主站和从站(可有后台软件设置)。 东北石油大学秦皇岛分校 毕业论文 3 第 2 章 MODBUS 通讯协议的格式 控制器 能设置为两种传输模式( ASCII 或 RTU)中的 任何一种在标准的 Modbus网络通信。 用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个 Modbus 网络上的所有设备都必须选择相同的传输模式和串口参数。 表 21 ModBus 的两种传输模式 ASCII 模式 地址 功能代码 数据数量 数据 1 ... 数据 n LRC高 LRC低字节 回车 换行 RTU模式 地址 功能代码 数据数量 数据1 … 数据n CRC高 CRC低字节 所选 的 ASCII 或 RTU 方式仅适用于标准的 Modbus 网络,它定义了在这些网络上连续传 输的消息段的每一位,以及怎样将信息打包成消息域和如何解码。 在其它网络上(像 MAP 和 Modbus Plus) Modbus 消息被转成与串行传输无关的帧。 RTU 模式 当控制器设为在 Modbus 网络上以 RTU(远程终端单元)模式通信,在消息中的每个 8Bit 字节包含两个 4Bit 的十六进制字符。 这种方式的主要优点是:在同样的波特率下,可比 ASCII 方式传送更多的数据。 代码系统  8 位二进制,十六进制数 0 9, A F  消息中的每个 8 位域都是一个两个十六进制字符组成 每个字节的位  1 个起始位  7 个数据 位,最小的有效位先发送  1 个奇偶校验位,无校验则无  1 个停止位(有校验时), 2 个 Bit(无校验时) 错误检测域  CRC(循环冗长检测) 使用 RTU模式,消息发送至少要以。 在网络波特 东北石油大学秦皇岛分校 毕业论文 4 率下多样的字符时间,这是最容易实现的(如下图的 T1T2T3T4所示)。 传输的第一个域是设备地址。 可以使用的传输字符是十六进制的 0 9, A F。 网络设备不断侦测网络总线,包括停顿间隔时间内。 当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。 在最后一个传输字符之后,一 个至少 个字符时间的停顿标定了消息的结束。 一个新的消息可在此停顿后开始。 整个消息帧必须作为一连续的流转输。 如果在帧完成之前有超过 个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。 同样地,如果一个新消息在小于 个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。 这将导致一个错误,因为在最后的 CRC 域的值是不可能正确的。 一典型的消息帧如下 表 22 所示: 表 22 典型的 RTU 消息帧 起始位 设备地址 功能代码 数据 CRC 校验 结束符 T1T2T3T4 8Bit 8Bit n 个 8Bit 16Bit T1T2T3T4 ASCII 模式 当控制器设为在 Modbus 网络上以 ASCII(美国标准信息交换码)模式通信,在消息中的每个 8Bit 字节都作为两个 ASCII字符发送。 这种方式的主要优点是字符发送的时间间隔可达到 1 秒而不产生错误。 代码系统  十六进制, ASCII 字符 0 9, A F  消息中的每个 ASCII 字符都是一个十六进制字符组成 每个字节的位  1 个起始位  7 个数据位,最小的有效 位先发送  1 个奇偶校验位,无校验则无  1 个停止位(有校验时), 2 个 Bit(无校验时) 错误检测域  LRC(纵向冗长检测) 使用 ASCII 模式,消息以冒号(:)字符( ASCII 码 3AH)开始,以回车换行符结束( ASCII 码 0DH, 0AH)。 其它域可以使用的传输字符是十六进制的 0 9, A F。 网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。 东北石油大学秦皇岛分校 毕业论文 5 消息中字符间发送的时间间隔最长不能超过 1 秒,否则接收的设备将认为传输错误。 一个典型消息帧如下 表 23 所示: 表 23 典型的 ASCII 消息帧 起始位 设备地址 功能代码 数据 LRC 校验 结束符 1 个字符 2 个字符 2 个字符 n 个字符 2 个字符 2 个字符 地址域 消息帧的 地址域包含两个字符( ASCII)或 8Bit( RTU)。 可能的从设备地址是0 247(十进制)。 单个设备的地址范围是 1 247。 主设备通过将要联络的从设备的地址放入消息中的地址域来选择从设备。 当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个从设备做出的回应。 地址 0 是用作广播地址,以使所有的从 设备都能认识。 当 Modbus 协议用于更高水准的网络,广播可能不允许或以其它方式代替。 ASCII 协议和 RTU 协议的比较 表 24 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 协议 东北石油大学秦皇岛分校 毕业论文 6 下面对两种协议的校验进行一下介绍 LRC 检测 使用 ASCII 模式 ,消息包含了一基于 LRC 方法的错误检测域。 LRC 域检测了消息域中除开始的冒号及结束的回车换行号外的内容。 LRC 域是一个包含一个 8位二进制值得字节。 LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算 LRC,并将它和接收到消息中 LRC 域中的值比较,如果两值不等,说明有错误。 LRC 方法是将消息中的 8Bit 的字节连续累加,丢弃了进位。 LRC 简单函数如下: static unsigned char LRC(auchMsg,usDataLen) unsigned char *auchMsg。 /*要进行计算的消息 */ unsigned short usDataLen。 /*LRC 要处理的字节的数量 */ { unsigned char uchLRC=0。 /*LRC 字节初始化 */ while (usDataLen)/*传送信息 */ uchLRC+=*auchMsg++。 /*累加 */ return ((unsigned char )(((char_uchLRC))))。 } CRC 检测 使用 RTU模式,消息包括了 一基于 CRC 方法的错误检测域。 CRC 域检测了整个消息的内容。 CRC 域是两 个字节,包含一 16 位的二进制值。 它由传输设备计算后加入到消息中。 接收设备重新计算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同,则有误。 CRC 是先调入一值是全“ 1”的 16 位寄存器,然后调用一过程将消息中连续的 8位字节各当前寄存器中的值进行处理。 仅每个字符中的 8Bit 数据对 CRC 有效,起始位和停止位以及奇偶校验位均无效。 CRC 产生过程中,每个 8位字符都单独和寄存器内容相或( OR),结果向最低有效位方向移动,最高有效位以 0 填充。 LSB 被提取出来检测,如果 LSB 为 1,寄存器单独和预置的值或一下 ,如果 LSB 为 0,则不进行。 整个过程要重复 8 次。 在最后一位(第 8位)完成后,下一个 8位字节又单独和寄存器的当前值相或。 最终寄存器中的值,是消息中所有的字节都执行之后的 CRC 值。 CRC 添加到消息中时,低字节先加入,然后高字节。 CRC 简单函数如下: unsigned short CRC16(puchMsg, usDataLen) unsigned char *puchMsg。 /* 要进行 CRC 校验的消息 */ unsigned short usDataLen。 /* 消息中字节数 */ 东北石油大学秦皇岛分校 毕业论文 7 { unsigned char uchCRCHi=0xFF。 /* 高 CRC 字节初始化 */ unsigned char uchCRCLo=0xFF。 /* 低 CRC 字节初始化 */ unsigned uIndex。 /* CRC 循环中的索引 */ while (usDataLen) /* 传输消息缓冲区 */ { uIndex = uchCRCHi ^ *puchMsgg++。 /* 计算 CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex]。 uchCRCLo = auchCRCLo[uIndex]。 } return (uchCRCHi 8 | uchCRCLo)。 } /* CRC 高位字节值表 */ static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0XC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0Xc1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0XC0, 0x。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。