MODBUS详解精简版.pdf

上传人:苏美尔 文档编号:8939391 上传时间:2021-01-26 格式:PDF 页数:6 大小:70.35KB
返回 下载 相关 举报
MODBUS详解精简版.pdf_第1页
第1页 / 共6页
MODBUS详解精简版.pdf_第2页
第2页 / 共6页
MODBUS详解精简版.pdf_第3页
第3页 / 共6页
MODBUS详解精简版.pdf_第4页
第4页 / 共6页
MODBUS详解精简版.pdf_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《MODBUS详解精简版.pdf》由会员分享,可在线阅读,更多相关《MODBUS详解精简版.pdf(6页珍藏版)》请在三一文库上搜索。

1、MODBUS 详解精简版 一、基本术语 1、 字 word 、字节 byte、位 bit 1 word = 2 byte; 1 byte = 8 bit. 2、 校验码 校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。代码作 为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入 错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。 常用的校验有:累加和校验SUM 、字节异或校验XOR 、纵向冗余校验LRC 、循环 冗余校验 CRC 3、 协议和接口 协议是一种规范和约定,是一种通讯的语言,规定了通信双方能够识别并使用的消 息结构和数据格式。

2、接口是一种设备的物理连接,指的是在物理层上的定义,像 RS422/RS232/RS485/ 以太网口等。协议和接口并不是一个概念,不能混淆。 Modbus 协议一般运行在RS485 物理接口上,半双工的,是一种主从协议。 二、 Modbus 协议概述 Modbus 协议是应用于电子控制器上的一种通用语言,实现控制器之间、控制器由网络和其 它设备之间的通信,支持传统的RS232/RS422/RS485和最新发展的以太网设备。它已经 成为一种通用工业标准。有了它, 不同厂商生产的控制设备可以连成工业网络,进行集中控 制。此协议定义了一个控制器能认识使用的消息结构。 Modbus 协议是一种请求应答

3、方式的协议。 三、两种传输方式 1、 ASCII 模式 ASCII :美国标准信息交换代码 特点: 消息中每个8bit 都作为两个ASCII 字符发送 1 个起始位、 7 个数据位、 1 个奇偶校验位和1 个停止位(或者两个停止位) 错误检测域是LRC 检验 字符发送的时间间隔可达到1 秒而不会产生错误 2、 RTU 模式 RTU: 远程终端单元 特点: 消息中每个8bit 字节包含两个4bit 的十六进制字符,因此,在波特率相同的情况下, 传输效率比ascii 传输方式大 1 个起始位、 8 个数据位、 1 个奇偶校验位和1 个停止位(或者两个停止位) 错误检测域是CRC 检验 消息发送至少

4、要以3.5 个字符时间的停顿间隔开始。整个消息帧必须作为一连续的流 传输。 如果在帧完成之前有超过1.5 个字符时间的停顿时间,接收设备将刷新不完整的消息 并假定下一个字节是一个新消息的地址域。同样地, 如果一个新消息在小于3.5 个字符时间 内接着前个消息开始,接收的设备将认为它是前一消息的延续。1.53.5 个字符间隔就算接 收异常,只有超过3.5 个字符间隔才认为帧结束。 目前常用的是RTU 传输方式,因为下面的将以RTU 传输方式为例. 四、报文格式 读数据: 下行报文: 从机 地址 功 能 码 寄存器起 始地址高 字节 寄存器起 始地址低 字节 读取寄存 器个数高 字节 读取寄存 器

5、个数低 字节 CRC 校 验低 CRC 校 验高 上行报文: 从机地址功能码返回字节个数寄存器数据CRC 校验 写数据: 下行报文: 从机地 址 功能 码 寄存器起始地 址 写寄存器个 数 要写的数 据 CRC 校验 上行报文: 从机地 址 功能 码 寄存器起始地 址 写寄存器个 数 写入的数 据 CRC 校验 1、 从机地址范围:1247,0 为广播地址,占一个字节。 理论上 Modbus 协议可以接247 个从机,但若用于485 接口上则由于485 接口的限制,在 没有中继情况下,最多可以接32 个从机。 2、功能码, 1255 ,占一个字节,有些代码适用于所有的控制器,有些事应用于某种控

6、制 器,还有些保留以备后用。 电力系统中modbus 协议的数据主要分为四类:离散量输入、线圈状态、输入寄存器、保 持寄存器。离散量输入对应开入(遥信),线圈状态对应哪开出(遥控),输入寄存器对应 只读的模拟量(遥测),保持寄存器对应可读可写的模拟量(遥调)。 从机若正常返回,则功能不变,若错误返回,则功能码的最高位为1,且从机会将一独特的 代码放到回应消息的数据域中,以便于告诉主设备发生了什么错误。主设备应用程序得到异 议的回应后, 典型的处理过程是重发消息,或者诊断发给从设备的消息并报告给操作员。如 03 功能码,错误返回为83。 电力系统中常用功能码表 数据类型读功能码写功能码对象类型

7、离散量输入02 单个位 线圈状态01 05,15 单个位 输入寄存器04 16 位字 保持寄存器03 06,16 16 位字 上表中是对应数据类型的标准功能码,但在实际应用中,厂家通常会根据实用性做些变 通,但并不影响数据的读写。 3、寄存器起始地址 寄存器起始地址占两个字节,高字节在前,低字节在后。 Modbus 协议中数据模型常用的有两种,带有4 个独立块的modbus 数据模型和仅 有 1 个块的 modbus 数据模型, 对于不同的数据模型参数地址的编制不同。一般采 用 1 个块的 modbus 数据模型,如下 数据类型参数地址 , 寄存器编号 离散量输入000010FFFF 线圈状态

8、100011FFFF 输入寄存器300013FFFF 保持寄存器400014FFFF Modbus 协议中寄存器地址从1 开始,而实际存储中地址从0 开始。假如要读取寄 存器编号为40005 (4 为块编号, 5 为 modbus 中寄存器地址)的寄存器的数据, 则应把 00 04 放入报文的地址域。寄存器定义,又名码表或者信息点表,应由厂家 提供的。 举例: 寄存器编号属性定义系数备注 40001 RO A相电压从 40048 中 读取电压系 数 40002 RO B相电压 如要读 A 相电压,则应将0 x00 0 x00放入寄存器起始地址域中。 4、要读取的寄存器个数 寄存器个数占两个字节

9、,同样是高字节在前,低字节在后,下行报文使用。 5、数据的字节数 数据的字节数,占一个字节,上行报文用,不同于寄存器个数。 6、数据域 数据域占 n 个字节,也是高字节在前,低字节在后 7、CRC 校验 CRC 校验占两个字节,低字节在前,高字节在后 CRC常用函数如下: unsigned char *puchMsg ; unsigned short usDataLen ; unsigned int CRC16(unsigned char puchMsg, unsigned int usDataLen) unsigned char uchCRCHi = 0 xFF ; unsigned cha

10、r uchCRCLo = 0 xFF ; unsigned uIndex ; while (usDataLen-) uIndex = uchCRCHi *puchMsgg+ ; uchCRCHi = uchCRCLo auchCRCHiuIndex ; uchCRCLo = auchCRCLouIndex ; return (uchCRCHi 8 和 crc&0 xff 依次放入报文中。这里将高字节先入,是因为在 crc 校验函数中已经将高低字节做了调换。 五、报文实例 1、读 40005 、40006 两个寄存器,假设从机地址为1 下行报文: 01 03 00 04 00 02 85 ca

11、从机地址功能码寄存器起始地址读取寄存器个数CRC 校验 01 03 00 04 00 02 85 ca 上行报文: 01 03 04 00 00 00 00 21 33 从机地 址 功能 码 返回字节个 数 寄存器 40005数 据 寄存器 40006 数 据 CRC 校验 01 03 04 00 00 00 00 21 33 2、向 40005 寄存器中写入0 x12 ,0 x34 ,假设从机地址为1 下行报文: 01 06 00 04 00 01 12 34 4a b0 从机地 址 功能 码 寄存器起始地 址 读取寄存器个 数 要写入的数 据 CRC 校 验 01 03 00 04 00

12、01 12 34 85 ca 上行报文: 01 06 00 04 00 01 12 34 4a b0 从机地 址 功能 码 寄存器起始地 址 读取寄存器个 数 写入的数 据 CRC 校 验 01 03 00 04 00 01 12 34 85 ca Modbus 协议定义的寄存器地址是5 位十进制地址,即: 线圈( DO)地址: 0000009999 触点( DI)地址: 1000019999 输入寄存器( AI)地址: 3000039999 输出寄存器( AO)地址: 4000049999 由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址, 即: 0 x 代表线圈( D

13、O)类地址, 1x 代表触点( DI)类地址、3x 代表输入寄存器(AI)类地 址、 4x 代表输出寄存器(AO)类地址。 在实际编程中, 由于前缀的区分作用,所以只需说明后4 位数, 而且需转换为4 位十六进制 地址。 关于 MODBUS 各地址的说明 MODBUS 协议中设备类型为 0 x, 1x,3x,4x,5x,6x, 还有 4x_bit,3x_bit 等,下面分别说明这些设备类型在 MODBUS 协议中支持哪些功能码。 0 x: 是一个可读可写的设备类型,相当于操作 PLC 的输出点。 该设备类型读位状态的时候, 发出的功能码为 01H,写位状态的时候发出的功能码为 05H。 1x:

14、 是一个只读的设备类型,相当于读 PLC 的输入点。 读位状态的时候发出的功能码为 02H。 3x:是一个只读的设备类型,相当于读 PLC 的模拟量。 读数据的时候, 发出的功能码为 04H。 4x:是一个可读可写的设备类型,相当于操作 PLC 的数据寄存器。当读数据的时候,发出的 功能码是 03H,当写数据的时候发出的功能码是 10H。 5x: 该设备类型与 4x 的设备类型属性是一样的。即发出读写的功能码完全一样。不同之处 在于,当为双字时,例如 32_bit unsigned 格式的数据,使用 5x 和 4x 两种设备类型分别读取 数据时,高字和低字的位置是颠倒的。例如,使用 4x 设备类型读到的数据是 0 x1234,那么 使用 5x设备类型读取的数据是 0 x3412。 6x: 是一个可读可写的设备类型,读数据的时候发出的功能码也是 03H,与 4x 不同之处在 于写数据的时候,发出的功能码为 06H,即写单个寄存器的数据。 3x_bit: 该设备类型支持的功能码与 3x 设备类型完全一致,不同之处是,3x 是读数据,而 3x_bit 是读数据中的某一个 bit 的状态。 4x_bit: 该设备类型支持的功能码与 4x 设备类型完全一致,不同之处是,4x 是读数据,而 4x_bit 是读数据中的某一个 bit 的状态。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1