网编高级 day01
网编高级 day01
- 0. 大纲
- 1. Modbus协议
- 1.1. Modbus起源
- 1.2. 分类
- 1.3. Modbus TCP特点
- 2. Modbus TCP协议格式
- 2.1. 报文头
- 2.2. 寄存器
- 2.3. 功能码
0. 大纲
协议:
- modbus协议:modbus TCP、modbus RTU
- html 网页:http协议
- Webserver
工具:
Modbus Slave/Poll、Wireshark、postman
1. Modbus协议
1.1. Modbus起源
- 1979年由Modicon公司开发,是一种工业现场总线协议标准
- Modbus TCP(以太网)、Modbus RTU(串口)、Modbus ASCII(串口)
- Modbus TCP是施耐德收购Modicon后1997年发布的
1.2. 分类
- Modbus RTU
运行在串口上的协议,采用二进制表现形式,紧凑的数据接口,通信效率最高,应用最广泛 - Modbus ASCII
运行在串口上的协议、采用ASCII进行传输,利用特殊字符作为字节开始和结束的标志,所以效率远远低于Modbus RTU协议,适用于数据量比较小的情况。 - Modbus TCP
运行在以太网的协议
1.3. Modbus TCP特点
- 采用主从问答式通信模式。(所有Modbus协议)
- Modbus TCP是应用层协议,基于传输层TCP协议实现
- Modbus TCP端口号默认502
2. Modbus TCP协议格式
数据帧包含:报文头(7字节),功能码(1字节),数据内容
数据帧最大长度260字节
2.1. 报文头
- 事务处理标识符: 2字节,理解为报文的序列号,主机发什么,从机回什么
- 协议标识符: 2字节,默认为00 00(十六进制),表示Modbus TCP协议
- 长度: 2字节,4位十六进制,表示接下来的字节长度,单位是字节,不包含本身
- 单元标识符: 1字节,从机ID,1-247
2.2. 寄存器
分类:离散量输入,线圈寄存器,输入寄存器,保持寄存器
- 位寄存器:
每个寄存器占1位,但是最小单位是字节,所以一个寄存器占1字节,八个寄存器也占1字节,主要控制IO设备
离散量输入:只读,0x02
线圈寄存器:可读可写,0x01, 0x05, 0x0f - 字寄存器:
每个寄存器固定占2字节,主要用于存储数据
输入寄存器:只读,0x04
保持寄存器:可读可写,0x03, 0x06, 0x10
2.3. 功能码
代码 | 中文名称 | 寄存器PLC地址 | 位/字操作 |
---|---|---|---|
01 | 读线圈寄存器 | 0 000–0 9999 | 位操作 |
02 | 读离散输入寄存器 | 1 0001–1 9999 | 位操作 |
03 | 读保持寄存器 | 4 0001–4 9999 | 字操作 |
04 | 读输入寄存器 | 3 0001–3 9999 | 字操作 |
05 | 写单个线圈寄存器 | 0 0001–0 9999 | 位操作 |
06 | 写单个保持寄存器 | 4 0001–4 9999 | 字操作 |
0f(15) | 写多个线圈寄存器 | 0 0001–0 9999 | 位操作 |
10(16) | 写多个保持寄存器 | 4 0001–4 9999 | 字操作 |
开灯:05/0f
读温湿度:03/04
读数据:0x01, 0x02, 0x03, 0x04
主机报文:报文头(7)+功能码(1)+起始地址(2)+数量(2)
从机报文:报文头(7)+功能码(1)+字节计数(1)+数值(?)
写单个数据:0x05, 0x06
主机报文:报文头(7)+功能码(1)+写入地址(2)+数值/断通标志(2)
写多个数据:0x0f, 0x10
主机报文:报文头(7)+功能码(1)+起始地址(2)+写入数量(2)+字节计数(1)+写入内容(?)
练习
主机报文:0x02 25 00 00 00 06 01 03 00 63 00 02
02250000000601:报文头
03:功能码
0063:起始地址0063->40100
0002: 数量
从机报文:0x02 25 00 00 00 07 01 03 04 32 13 30 08
02250000000601:报文头
03:功能码
04:字节计数
3213:40100的数值
3008:40101的数值
练习:读传感器数据,读一个40123、40124寄存器的数据
主机报文:0x02 25 00 00 00 06 01 03 00 7A 00 02
从机报文:0x02 25 00 00 00 07 01 03 04 AA BB CC DD
练习:控制IO设备,点亮一个灯(将一个线圈置一)
主机报文:0x 02 25 00 00 00 06 01 05 00 00 FF 00