返回主站|会员中心|保存桌面

西门子(SIEMENS)服务商    

框架断路器、塑壳断路器、隔离开关、软启动、变频器、电机 、PLC、触摸屏

联系方式
  • 联系人:方经理
  • 电话:13073017555
  • 邮件:gzws26@126.com
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 如何读取西门子 S7-200 SMART 的 MBUS_INIT 设置?
新闻中心
如何读取西门子 S7-200 SMART 的 MBUS_INIT 设置?
发布时间:2026-09-19        浏览次数:2        返回列表

关键点:MBUS_INIT 的参数没有保存在 PLC 系统内部特殊寄存器!库指令运行之后,CPU 不会把站号、波特率、HoldStart 这些参数自动存到任何 SM 或者 V/M 区里面供在线直接读取。 MBUS‑INIT 是子程序,上电首次扫描(SM0.1)执行一次;参数来源于你梯形图管脚上面填的常数 / 变量

三种查看方式

方式 1:电脑联机打开 PLC 上载程序

  1. Micro/WIN SMART 软件,联机 PLC;点【上载】,把 PLC 里面完整用户程序上载回电脑;

  2. 在程序里面找到 MBUS_INIT 子程序调用块;直接看各个管脚填写的值:

    表格

    管脚含义
    Mode1 = 启用 Modbus‑RTU;0=PPI
    AddrModbus 从站站号 (1‑247)
    Baud波特率 9600/19200…
    Parity校验 0 无,1 奇,2 偶
    Port0 本体 485;1 CM01 信号板
    HoldStart保持寄存器 V 区起始地址(&VB3000 这种指针)
    MaxHold最大保持寄存器字数量

只要程序上载回来,就直接看到当初写进去的全部初始化设置,包括 HoldStart 缓冲区起始 VB 地址。

注意:HoldStart 是指针,梯形图写&VB3000;上载回来程序直接就显示 & VB3000;不用换算。

方式 2:如果管脚不是填常数,而是填了 VD 变量

有些工程不是直接写常数,而是用 VD 变量给 MBUS‑INIT 赋值(上电 SM0.1 读取 VD 变量传给 MBUS_INIT)。

  • 这时在线监控对应的 VD 变量就可以读到当前值;

  • 但是!SM0.1 只上电第一扫描执行一次;之后修改 VD 变量是无效的,必须重新上电 CPU 才会生效;在线改 VD 不会动态修改 Modbus 从站参数。

这种用法很少;绝大多数现场都是直接填常数。

方式 3:没有程序,无法上载;只能外部反推

PLC 里面没有系统寄存器保存 HoldStart!上位机 Modbus 主站也读不到 MBUS_INIT 的设置,没有对应的寄存器。只能做实验反向试探:

  1. 站号、波特率、校验:用 Modbus Poll 扫描串口,试探出来站号与通讯速率;

  2. HoldStart (V 区缓冲区起始) 只能试探 V 区的 4xxxx 寄存器,试哪些 V 区可以访问;只能试,无法直接读取。

总结

  1. 不存在 SM 特殊寄存器可以直接读出 HoldStart=&VBxxxx;库不提供;

  2. Modbus 上位机不能通讯读取 MBUS_INIT 配置;

  3. 优先:上载 PLC 程序,看梯形图 MBUS_INIT 管脚;这是唯一可靠的方式;

  4. 如果是 SM0.1 调用 MBUS_INIT 填常数,运行时 V 区 / M 区没有任何地方保存这套参数;断电内存里就消失,只存在用户程序代码里面。

(VB3033 对应 Modbus 地址)

如果你手上 PLC 没有源程序,先上载程序看 MBUS_INIT 的 HoldStart 是多少,再做地址换算!公式回顾:Modbus寄存器号 =40001 + (VW编号 − HoldStart_VB)/2

额外补充库存储区

顺便在软件【系统块‑库存储器】查看 Modbus 库占用的 781 字节 V 区;注意 HoldStart 的 V 缓冲区不能跟库存储区重叠,否则通讯异常。

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服