匠心研智造-上位机硬件通讯之Modbus 服务器

WPF上位机硬件通讯之Modbus 服务器

520快乐!

Let me share my code with you

主界面

英文主界面

Modbus服务器联合ModbusPoll调试实战

马思克的第一性原理之背诵知识点

适用:PLC / 仪表 / 变频器 / 上位机开发 / 现场调试

包含:功能码、地址分区、数据类型、字符串、大小端、异常码、通讯原理、踩坑大全

一、Modbus 核心功能码(FC1~FC7 + 常用扩展)

一、Modbus 核心功能码(FC1~FC7 + 常用扩展)

1. 基础七大功能码(必背)

功能码 名称 读写 对应区域 场景
FC01 读线圈 读 0xxxx 读取开关输出状态、继电器状态
FC02 读离散输入 读 1xxxx 读取外部传感器开关输入
FC03 读保持寄存器 读 4xxxx 最常用读参数、温度、压力、频率
FC04 读输入寄存器 读 3xxxx 只读实时采集数据
FC05 写单个线圈 写 0xxxx 单点启停、开关控制
FC06 写单个寄存器 写 4xxxx 调试最常用写参数、阈值、设定值
FC07 读异常状态 读 设备状态 极少用,简易故障诊断

2. 工程高频扩展功能码

  • FC08:通讯诊断、线路测试

  • FC15:批量写线圈

  • FC16:批量写保持寄存器(项目刚需)

  • FC17:读取从站设备信息

二、Modbus 四大地址分区(核心中的核心)

  • 0区 线圈 00001~09999:位数据、可读写、开关量,FC01/05/15

  • 1区 离散输入 10001~19999:位数据、只读、外部输入,FC02

  • 3区 输入寄存器 30001~39999:字数据、只读、仪表采集值,FC04

  • 4区 保持寄存器 40001~49999:字数据、可读写、设备参数,FC03/06/16

备注:程序内偏移地址通常从0开始 ,图纸地址从1开始,调试最容易踩坑。

三、Modbus 完整数据类型(含字符串)

基础规则:1寄存器 = 16位 = 2字节

数据类型 占用寄存器 取值范围 用途
Bool 位 1bit 0 / 1 开关、报警、状态
UInt16 1 0 ~ 65535 频率、转速、电压整数
Int16 1 -32768 ~ 32767 温差、偏移量、正负值
UInt32 2 0 ~ 4294967295 累计电量、累计流量
Int32 2 -2147483648 ~ 2147483647 大额正负计量值
Float 单精度浮点 2 ±3.4E38 温度、压力、液位、模拟量
Double 双精度 4 极大 高精度设备(极少用)
BCD码 1 0~9999 时间、日期、设备编号
ASCII 字符串 按需 可见字符 设备名、序列号、地址

字符串存储规则(重点)

  • 1寄存器 = 2个ASCII字符

  • 高字节在前、低字节在后

  • 末尾 0x00 为空终止符,读取后需截断

  • 字符数奇数时,最后寄存器低位补0

四、Modbus 四大大小端字节序(ABCD 完整版)

假设有32位数据原始4字节顺序:A(最高) B C D(最低)

排序格式 字节顺序 名称 说明 场景
标准大端 AB CD 字大端+字节大端 协议默认,无需转换 绝大多数标准PLC/仪表
字反转 CD AB 字序反转 两个寄存器整体颠倒 大量国产非标设备
字节反转 BA DC 字节序反转 单个寄存器内部倒序 上位机乱码高发
全小端 DC BA 全反转 字+字节全部颠倒 部分单片机设备

口诀:先试ABCD,数据不对立刻换CDAB(90%情况解决)

五、数据缩放换算(工程固定公式)

  • 温度、湿度:原值 ÷ 10

  • 电压、电流:原值 ÷100

  • 百分比:原值 ÷ 10

  • 累计量:原值 × 倍率

六、通讯参数硬性规则

1. 设备类型

固定:一主多从,一个主站轮询多个从站

从站地址:1~247,0为广播地址

1.1 设备组合

Modbus+网络=ModbusTCP

Modbus+串口=ModbusRtu

2. RTU串口参数(必须全部一致)

  • 波特率:9600 / 19200 / 38400 / 115200。。。
  • 数据位:8
  • 停止位:1 / 2
  • 校验位:无校验、奇校验、偶校验

2.1TCP参数

IP/端口号

3. 读写数量限制(高频报错点)

  • 单次读线圈最大:2000点

  • 单次读寄存器最大:125个

  • 超出必须分包轮询

七、异常码排查大全(调试神器)

  • 01:非法功能码(设备不支持该指令)

  • 02:非法地址(寄存器地址不存在)

  • 03:非法数据值(参数超出设备范围)

  • 04:从站设备故障(设备内部报错)

  • 05:应答确认

  • 06:从站忙(重试即可)

八、RTU / TCP 报文核心区别

  • Modbus-RTU :从站ID + 功能码 + 数据 + CRC16校验

  • Modbus-TCP :事务头 + 长度 + 从站ID + 功能码 + 数据(无CRC)

九、现场90%故障速查

  1. 不通讯:AB线接反、波特率/校验位不一致、从站地址错

  2. 数据乱码:大小端顺序不对

  3. 只能读不能写:寄存器只读、设备锁定、权限未开

  4. 偶尔丢包:485无终端电阻、线路干扰、波特率过高

  5. 浮点数值离谱:高低字颠倒

十、极简工程口诀

  • 读数值用03,写参数用06
  • 采传感器用04,控开关用01/05
  • 浮点不对先换CDAB
  • 所有32位数据必须连续寄存器
  • 串口看参数,网口看IP和端口

漂亮饭,安排!


*****************Y*******X******G***K******

相关推荐
服务器硬件项目经理14 分钟前
超节点修仙录 目 录
服务器·硬件工程·硬件
骇客野人29 分钟前
Linux 全套实操方案(含目录详解、文件传输、日志、文件规范、环境变量、Java 应用部署运维)
java·linux·运维
eleven_4u1 小时前
RocketMQ相关问题
java·运维·中间件
0+1111 小时前
Linux --DNS与ICMP
linux·运维·服务器
我命由我123451 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
钛生智能1 小时前
OA 流程定制全参数详解(三):环节信息——流程中最核心、参数最多的部分
运维·办公自动化·oa·协同办公·oa办公系统
bjxiaxueliang1 小时前
一文自建STUN:在Ubuntu上分步搭建STUN服务
linux·运维·ubuntu
秦jh_2 小时前
【Docker】镜像、卷原理
运维·docker·容器
物联网软硬件开发-轨物科技2 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人
服务器硬件项目经理2 小时前
全系列目录导航
服务器·gru·硬件