匠心研智造-上位机硬件通讯之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******

相关推荐
Harm灬小海1 小时前
【云计算学习之路】学习Centos7系统:Linux进程管理
linux·运维·服务器·学习·云计算
赋创小助手1 小时前
AMD EPYC 8005系列发布:面向高密度单路服务器市场的新补充
运维·服务器
咖喱o1 小时前
VRRP
运维·网络·智能路由器
许彰午1 小时前
WebRTC只管流不管控——自研信令服务器的状态机设计
运维·服务器·webrtc
IMPYLH1 小时前
Linux 的 who 命令
linux·运维·服务器·bash
fanzhonghong1 小时前
javaWeb后端开发之Linux项目部署3和Docker部署1
linux·服务器·前端·docker
Bert.Cai1 小时前
Linux print命令详解
linux·运维·服务器
AI云原生1 小时前
容器网络模型与服务发现:从踩坑到精通,Kubernetes 网络问题排查全指南
服务器·网络·云原生·容器·kubernetes·云计算·服务发现
石小千1 小时前
Docker-排查占用磁盘空间大问题
运维·docker·容器