Modbus协议

文章目录

概念

modbus是工业通信总线协议,常用于PLC设备中,像水表、电表等。

优势是免费、简单。

采用主从问答通信(用于信息采集和控制)


分类

modbus RTU:运行在串口上 二进制传输 效率高

modbus ASCII:运行在串口上 ascii传输 用于通信数据量较小的情况下

modbus TCP:运行在以太网上 是应用层协议 基于传输层的TCP协议实现 端口号502


协议格式

报文头7字节(4字节序列号+2字节长度+1字节单元标识符) + 功能码(1字节) + 数据


寄存器

一、位寄存器(1字节) 开关量

输出线圈

离散量输入寄存器

二、字寄存器(2字节) 存储数据

保持/输出寄存器

输入寄存器


读写

功能码

0x01:读输出线圈

0x02:读离散量输入寄存器

0x03:读保持寄存器

0x04:读输入寄存器

0x05:写单个线圈

0x06:写单个保持寄存器

0x0F:写多个线圈

0x10:写多个保持寄存器

读写模板 :

读:

主机->从机:报文头7byte+功能码1字节+起始地址2byte+数量2byte

从机->主机:报文头7byte+功能码1字节+字节计数1byte+数据

写单个:

主机->从机:报文头7byte+功能码1字节+起始地址2byte+断通标志/数据2byte

写多个:

主机->从机:报文头7byte+功能码1字节+起始地址2byte+数量2byte+字节计数1byte+数据

注意:"断通标志"字段是2字节,但协议规定:这个字段只能天0x0000(对应"关")或0xFF00(对应"开"),实际有效信息只有1位(其他位是协议要求的固定填充)

案例:



Modbus库

应用modbus时,通常会安装modbus库,调用封装好的modbus接口

读输出线圈:modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);

读离散量输入寄存器:modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);

读保持寄存器:modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);

读输入寄存器:modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);

写单个线圈:modbus_write_bit(modbus_t *ctx, int addr, int status);

写单个保持寄存器:modbus_write_register(modbus_t *ctx, int addr, int value);

写多个线圈:modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *val);

写多个保持寄存器:modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16 *val);

代码举例:

相关推荐
白帽攻防录1 小时前
SRC 挖洞:QUIC 协议栈双 RCE,HTTP/3 的新攻击面怎么挖
网络·网络协议·http·网络安全·http/3
隐擎fox1 小时前
Linux eBPF 与 XDP 高性能网络出口架构:动态连接追踪、丢包诊断与住宅网关 QoS 调优实战
linux·网络·网络协议·tcp/ip·架构
Multipath7122 小时前
多链路聚合设备:助力智慧农业发展的网络基石——让农田网络不断连,让智能设备不失控
网络·网络协议·5g·udp·无人机
似是燕归来2 小时前
Rtthread OS 功能开发之 socket udp协议程序开发
网络·stm32·网络协议·udp·socket·rtthread
比兔代理3 小时前
HTTP 代理与 TLS 指纹:如何避免被识别为代理流量?
网络·网络协议·http
上海云盾-小余3 小时前
自定义端口 HTTPS 部署:高防接入遇到的问题与调优方案
网络协议·http·https
VidDown13 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
80s77717 小时前
动态IP是什么,动态IP的应用场景有哪些?
网络·网络协议·tcp/ip
ITxiaobing202317 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
是个西兰花18 小时前
https 协议原理
网络协议·http·https