modbus协议解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1、Modbus简介 (2)

1.1MODBUS功能码简述 (3)

1.2功能码说明 (4)

1.3寄存器种类说明 (5)

1.4 PLC地址和协议地址区别 (6)

1.4.1 寄存器PLC地址 (6)

1.4.2 寄存器协议地址 (6)

2.MODBUS指令说明 (6)

2.1 读线圈寄存器01H (6)

2.2 读离散输入寄存器02H (9)

2.3 读保持寄存器03H (11)

2.4 读输入寄存器04H (13)

2.5 写单个线圈寄存器05H (15)

2.6 写单个保持寄存器06H (17)

2.7 写多个线圈寄存器0FH (18)

2.8 写多个保持寄存器10H (21)

1、Modbus简介

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。

ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定.

Modbus比其他通信协议使用的更广泛的主要原因有:

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus 的产品超过600种。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。其传输模式有:RTU、ASSCII 、TCP

图1 modbus结构示意图

1.1MODBUS功能码简述

下表列出MODBUS支持的部分功能代码:以十进制表示。

表1.1 MODBUS部分功能码

代码中文名称寄存器PLC地址位操作/字操作操作数量

01 读线圈状态00001-09999 位操作单个或多个

02 读离散输入状态10001-19999 位操作单个或多个

03 读保持寄存器40001-49999 字操作单个或多个

04 读输入寄存器30001-39999 字操作单个或多个

05 写单个线圈00001-09999 位操作单个

06 写单个保持寄存器40001-49999 字操作单个

15 写多个线圈00001-09999 位操作多个

1.2功能码说明

功能码可以分为位操作和字操作两类。位操作的最小单位为BIT,字操作的最小单位为两个字节。

【位操作指令】读线圈状态01H,读(离散)输入状态02H,写单个线圈06H和写多个线圈0FH。

【字操作指令】读保持寄存器03H,写单个寄存器06H,写多个保持寄存器10H。

1.2寄存器地址分配

表1.2 MODBUS寄存器地址分配

1.3寄存器种类说明

表1.3 MODBUS寄存器种类说明

1.4 PLC地址和协议地址区别

PLC地址可以理解为协议地址的变种,在触摸屏和PLC编程中应用较为广泛。

1.4.1 寄存器PLC地址

寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型。第一位数字和寄存器类型的对应关系如表1所示。PLC 地址例如40001、30002等。

1.4.2 寄存器协议地址

寄存器协议地址指指通信时使用的寄存器地址,例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002,虽然两个PLC寄存器寄存器通信时使用相同的地址,但是需要使用不同的命令访问,所以访问时不存在冲突。

2.MODBUS指令说明

2.1 读线圈寄存器01H

1) 描述:

读MODBUS从机线圈寄存器当前状态。

2) 查询:

例如从机地址为11H,线圈寄存器的起始地址为0013H,结束地址为0037H。该次查询总共访问37个线圈寄存器。

表2.1.1 读线圈寄存器-查询

3) 响应

响应负载中的各线圈状态与数据容每位相对应。1代表ON,0代表OFF。若返回的线圈数不为8的倍数,则在最后数据字节未尾使用0代替。

表2.1.2 读线圈寄存器-响应

线圈0013H到线圈001AH的状态为CDH,二进制值为11001101,该字节的最高字节为线圈001AH,最低字节为线圈0013H。线圈001AH到线圈0013H的状态分别为ON-ON-OFF-OFF-ON-ON-OFF-ON。

表2.1.3 线圈0013H到001A状态

最后一个数据字节中,线圈0033H到线圈0037状态为1BH(二进制00011011),线圈0037H是左数第4位,线圈0033H为该字节的最低字节,线圈0037H至线圈0033H的状态分别为ON-ON-OFF-ON-ON,剩余3位使用0填充。

表2.1.4 线圈0033H到线圈0037状态

2.2 读离散输入寄存器02H

1) 说明

读离散输入寄存器状态。

2) 查询

从机地址为11H。离散输入寄存器的起始地址为00C4H,结束寄存器地址为00D9H。总共访问32个离散输入寄存器。

表2.2.1 读离散输入寄存器——查询

相关文档
最新文档