Modbus TCP通信笔记

目录

  • 1 Modbus TCP 数据协议
    • 1.1 数据格式
    • 1.2 报文头(MBAP头)
    • 1.3 功能码
    • 1.4 Modbus 地址映射到 CPU 地址
  • 2 Modbus TCP 通讯数据示例
    • 2.1 功能码01 读离散输出线圈
    • 2.2 功能码02 读离散输入线圈
    • 2.3 功能码03 读保持寄存器
    • 2.4 功能码04 读输入寄存器
    • 2.5 功能码05 写单个离散输出寄存器
    • 2.6 功能码06 写单个保持寄存器
    • 2.7 功能码15 写多个线圈寄存器
    • 2.8 功能码16 写多个保持寄存器
  • 3 西门子200Samrt 做服务器端编程示例
    • 3.1 调用库指令
    • 3.2 编程
  • 4 Modbus TCP通讯调试软件测试
    • 4.1 软件介绍
    • 4.2 软件使用说明
      • 4.2.1 连接PLC
      • 4.2.2 访问PLC
      • 4.2.3 其它说明

1 Modbus TCP 数据协议

1.1 数据格式

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据
2字节 2字节 2字节 1字节 1字节 2字节 N字节

1.2 报文头(MBAP头)

其中,事务处理标识、协议标识符、长度和单元标识符统称为报文头(MBAP头)。

内容 解释
事务处理标识 可以理解为报文序列号,一般每次通信后就要加1,以区分不同的通信数据报文。
协议标识符 00 00 表示Modbus TCP 协议
长度 接下来数据长度,单位字节
单元标识符 设备地址,一般为01

1.3 功能码

功能码 描述 说明 MOUBUS地址
01 读离散输出寄存器 位操作 00001 ~ 09999
02 读离散输入寄存器 位操作 10001 ~ 19999
03 读保持寄存器 字操作 40001 ~ 49999
04 读输入寄存器 字操作 30001 ~ 39999
05 写离散输出寄存器 位操作 00001 ~ 09999
06 写保持寄存器 字操作 40001 ~ 49999
15 写多线圈寄存器 位操作 00001 ~ 09999
16 写多个保持寄存器 字操作 40001 ~ 49999

1.4 Modbus 地址映射到 CPU 地址

Modbus 地址 CPU 地址
00001 Q0.0
00002 Q0.1
…… ……
10001 I0.0
10002 I0.1
…… ……
30001 AIW0
30002 AIW2
…… ……
40001 Vx(保持寄存器起始地址)例:VW0
40002 Vx+2 =(保持寄存器起始地址+2)例:VW2
…… ……

2 Modbus TCP 通讯数据示例

2.1 功能码01 读离散输出线圈

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度
00 11 00 00 00 06 01 01 00 00 00 08

注释:读取Q0.0地址开始的8个连续输出(即Q0.0-Q0.7)。

2.2 功能码02 读离散输入线圈

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度
00 15 00 00 00 06 01 02 00 00 00 08

注释:读取I0.0地址开始的8个连续输出(即I0.0-I0.7)。

2.3 功能码03 读保持寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度
00 66 00 00 00 06 01 03 00 00 00 02

注释:读取VW0地址开始的2个连续字空间(即vw0,vw2)。

2.4 功能码04 读输入寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度
00 97 00 00 00 06 01 04 00 00 00 02

注释:读取AIW0地址开始的2个连续字空间(即AIW0,AIW2)。

2.5 功能码05 写单个离散输出寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据
00 C2 00 00 00 06 01 05 00 00 FF 00

注释:将地址00000的输出离散线圈置一(即让Q0.0置一)。

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据
01 0A 00 00 00 06 01 05 00 01 00 00

注释:将地址00001的输出离散线圈置一(即让Q0.1复位)。

2.6 功能码06 写单个保持寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据
01 5e 00 00 00 06 01 06 00 02 00 7b

注释:往地址VW4寄存器中写入数值0x007B(即十进制数123)。

2.7 功能码15 写多个线圈寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度(位) 字节数 数据
01 5e 00 00 00 09 01 0F 00 00 00 10 02 aa cb

注释:往地址QB0寄存器中写入数值0xaa,往地址QB1寄存器中写入数值0xcb。

数据长度位不满8的N倍,字节数也算N个。

2.8 功能码16 写多个保持寄存器

事务处理标识 协议标识 长度 单元标识 功能码 起始地址 数据长度(字) 字节数 数据
02 68 00 00 00 0B 01 10 00 00 00 02 04 00 7B 00 EA

注释:往地址VW0寄存器中写入数值0x007B,往地址VW2寄存器中写入数值0x00EA。

3 西门子200Samrt 做服务器端编程示例

3.1 调用库指令

Modbus TCP通信笔记_第1张图片

3.2 编程

具体操作数值详见F1帮助文档。
Modbus TCP通信笔记_第2张图片

4 Modbus TCP通讯调试软件测试

4.1 软件介绍

软件名称为:Modbus Poll
网络搜索自行下载,破解。
Modbus TCP通信笔记_第3张图片
Modbus TCP通信笔记_第4张图片

4.2 软件使用说明

4.2.1 连接PLC

依次点击Connection→Connect…→弹出界面
按图指引自行修改,单击OK按钮。
Modbus TCP通信笔记_第5张图片

4.2.2 访问PLC

单击图示指引图标
Modbus TCP通信笔记_第6张图片
弹出界面,按需修改(图示以写单个保持寄存器为例),单击OK按钮。
Modbus TCP通信笔记_第7张图片

双击数值处表格,在弹出的对话框中修改数值即可。
Modbus TCP通信笔记_第8张图片

4.2.3 其它说明

软件在使用功能码05时,无法通过双击表格修改数据,只能设置为功能码01,然后通过双击表格修改数据。

你可能感兴趣的:(PLC,&,自动化设备,tcp/ip,笔记)