惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
F
Full Disclosure
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
Hacker News: Ask HN
Hacker News: Ask HN
V
Visual Studio Blog
IT之家
IT之家
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
月光博客
月光博客
H
Heimdal Security Blog
T
The Blog of Author Tim Ferriss
腾讯CDC
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Troy Hunt's Blog
小众软件
小众软件
Jina AI
Jina AI
博客园 - Franky
Scott Helme
Scott Helme
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CERT Recently Published Vulnerability Notes
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
F
Fortinet All Blogs
Y
Y Combinator Blog
P
Privacy & Cybersecurity Law Blog
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
量子位
H
Help Net Security
MongoDB | Blog
MongoDB | Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Last Watchdog
The Last Watchdog
博客园 - 三生石上(FineUI控件)
L
LINUX DO - 最新话题

博客园 - emanlee

ubuntu 设置北京日期时间 mysql 在新电脑上导入,出现错误:ERROR at line 4019: Unknown command '\''. - emanlee 安装 yarn npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。 - emanlee VS code, 最近打开过哪些项目或文件夹,把这些备份下来,到另外一台电脑上恢复 傲梅分区助手 【好用】 ubuntu 可以使用Windows远程桌面连接吗?【可以】 把xshell的全部连接和密码,从一台Windows 10电脑,迁移到Windows11电脑。 Windows 远程桌面(mstsc)完整迁移方案(含历史连接记录、RDP 配置、保存的账号密码)【可行】 Endnote,如何能完整迁移库和模版 ubuntu 安装 locate “华为杯”第八届中国研究生人工智能创新大赛 当数据量很大时,执行 mysql> source filename.sql 很慢,有什么办法更快 pip install django-ranged-response==0.2.0 部署Vue+Django 04c,mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory Ubuntu Server 24.04 安装 MySQL, ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory ubuntu server 24.04: 如何设置默认采用 Xorg 方式登录 Ubuntu Server 24.04 设置锁屏时间 Ubuntu Server 启动过程中,比较慢 Job systemd-networkd-wait-online.service/start running Ubuntu Server 24.04 启用root用户 Ubuntu snap install 安装todesk是否必须检查 CPU 是否支持 AVX / AVX2 命令 Ubuntu Server 24.04下解决SunloginClient 向日葵依赖libgconf-2-4安装问题 Ubuntu Server 24.04 安装图形界面 ubuntu server 24.04 安装 中文输入法 Ubuntu Server 24.04 安装浏览器firefox Ubuntu Server 24.04 安装todesk【先联网,CPU必须支持 AVX / AVX2 】 Ubuntu Server 24.04 安装中文,汉字 Python赋值,什么时候传引用? 大驼峰命名法 python 容易理解类和对象的例子 django+mysql: 如何添加一个新的超级用户? Python 异常体系核心:BaseException 及其四大子类 Python 匿名函数(lambda)举例 Python函数内部的局部变量和全局变量 订书钉规格 在Navicat中复制带有自动增长id字段的表格,如何把新表格的自动增长id重新设置为从1开始 科研02 期刊和会议的质量等级 Vue 2,父组件中点击一个按钮,更新子组件(重新加载子组件) 汉明距离(Hamming distance) Word中,表格中的文字在一行的偏下方,没有垂直居中 在线把汉字转拼音字母 Navicat中复制并修改MySQL表,保存时,出现未知的列的错误 WinSCP 便携版、绿色版 下载 centos / Linux 上,非管理员用户安装 miniconda FTP 服务器设置(FileZilla Server) Windows主机上的Device/Credential Guard功能与VMware Workstation虚拟化冲突导致 Navicat 备份连接
Modbus slave模拟的从站 如何主动发送数据给主站
emanlee · 2026-01-10 · via 博客园 - emanlee

Modbus slave模拟的从站 如何主动发送数据给主站

手动方式:用USB转485连接到DTU,用sscom直接给DTU发送数据即可。

自动方式:Python写程序,连接指定的com,给com发送数据。 

========================================================

你想知道在使用 Modbus Slave 模拟器时,作为从站如何主动向主站发送数据。首先要明确核心前提:原生 Modbus 协议(RTU/TCP)是主从问答式架构,从站默认没有主动发起通信的能力,所有数据交互都由主站先发起请求,从站仅被动响应。但我们可以通过两种方式实现 “从站主动推送数据” 的效果,其中主站定时轮询是最标准、最易实现的方案。

一、先理解 Modbus 主从核心机制

Modbus 协议的设计逻辑是:

  • 主站(Master):主动发起请求(如读取 / 写入从站寄存器),唯一的 “发起者”;
  • 从站(Slave):仅监听主站请求,收到后返回对应数据,无主动发起通信的权限。

所以 “从站主动发送数据” 本质是通过技术手段模拟出主动推送的效果,而非原生 Modbus 支持的原生能力。

二、实现 “从站主动推送数据” 的两种方案

方案 1:主站定时轮询(最标准、推荐)

这是工业场景中最常用的方式,虽然是主站发起请求,但通过设置短轮询周期,能实现 “从站数据更新后主站立即获取” 的效果,等同于 “主动推送”。

以下是基于常用模拟器(Modbus Slave + Modbus Poll)的具体操作步骤:

工具准备
  • 从站模拟器:Modbus Slave(模拟从站,设置待发送的数据);
  • 主站模拟器:Modbus Poll(模拟主站,设置定时轮询)。
步骤 1:配置 Modbus Slave(从站)
  1. 打开 Modbus Slave,点击「Connection」→「Connect」,选择连接方式(推荐 Modbus TCP,端口默认 502);
  2. 点击「Setup」→「Slave Definition」,设置:
    • Slave ID:从站地址(如 1);
    • Function:选择「03 Holding Registers」(保持寄存器,最常用的读写寄存器);
    • Start Address:寄存器起始地址(如 0);
    • Quantity:寄存器数量(如 10);
  3. 点击「OK」后,在表格中手动修改任意寄存器的值(比如地址 0 的值改为 1234),这就是从站要 “推送” 给主站的数据。
步骤 2:配置 Modbus Poll(主站,定时轮询)
  1. 打开 Modbus Poll,点击「Connection」→「Connect」,选择和 Slave 一致的连接方式(Modbus TCP),输入 Slave 的 IP(本地填 127.0.0.1)和端口 502;
  2. 点击「Setup」→「Read/Write Definition」,设置和 Slave 匹配的参数:
    • Slave ID:1(和从站一致);
    • Function:03(保持寄存器);
    • Start Address:0;
    • Quantity:10;
  3. 开启自动轮询:点击菜单栏「View」→「Polling」,设置轮询周期(如 100ms,越小越接近 “实时推送”);
  4. 点击「OK」后,Modbus Poll 会按照设置的周期自动向从站发起请求,读取寄存器数据。
测试效果

在 Modbus Slave 中修改任意寄存器的值(比如地址 0 改为 5678),Modbus Poll 会立即(100ms 内)刷新显示最新值,实现 “从站数据更新后主动推送给主站” 的效果。

方案 2:从站主动通知(非常规,需特定工具)

原生 Modbus 不支持从站主动发起,但部分高级模拟器 / 工业网关支持 “反向请求”(如 Modbus TCP Slave 主动连接 Master 并发送事件数据),步骤如下(以 ModSim32 为例):

  1. 打开 ModSim32(支持从站主动通知的模拟器),设置从站为「TCP Slave」,并开启「Event Notification」(事件通知);
  2. 配置触发条件:比如当某寄存器值变化时,从站主动连接主站的 IP 和端口,发送该寄存器的数据;
  3. 主站端需监听对应端口,接收从站的主动连接和数据(可使用 Python/Node.js 编写简单监听程序)。

注意:该方案非标准 Modbus,不同模拟器的配置差异大,仅适合特殊场景(如低延迟数据推送)。

方案 3:自定义程序实现(Python 示例)

如果需要更灵活的 “从站主动推送”,可通过 Python 的pymodbus库实现从站主动向主站发送数据:

from pymodbus.client import ModbusTcpClient
from pymodbus.payload import BinaryPayloadBuilder

# 主站的IP和端口
MASTER_IP = "127.0.0.1"
MASTER_PORT = 502

def slave_active_send(data):
    # 从站主动连接主站
    client = ModbusTcpClient(MASTER_IP, port=MASTER_PORT)
    client.connect()
    
    # 构建要发送的数据(写入主站的保持寄存器)
    builder = BinaryPayloadBuilder()
    builder.add_32bit_int(data)  # 示例:发送32位整数
    
    # 写入主站的寄存器(地址0开始)
    payload = builder.build()
    client.write_registers(
        address=0, 
        values=payload, 
        unit=1  # 主站的Slave ID(主站也可配置为从站模式)
    )
    
    client.close()
    print(f"从站主动发送数据:{data}")

# 测试:从站主动发送数据123456
slave_active_send(123456)

总结

  1. 核心原则:原生 Modbus 从站无主动发送能力,所有 “主动推送” 本质是主站轮询或扩展协议实现;
  2. 推荐方案:优先使用主站定时轮询(Modbus Poll / 自定义主站程序),这是工业标准,兼容性最好;
  3. 特殊场景:如需主动推送,可使用支持事件通知的高级模拟器,或通过 Python 等语言编写自定义程序实现从站主动连接主站。