关键点:MBUS_INIT 的参数没有保存在 PLC 系统内部特殊寄存器!库指令运行之后,CPU 不会把站号、波特率、HoldStart 这些参数自动存到任何 SM 或者 V/M 区里面供在线直接读取。 MBUS‑INIT 是子程序,上电首次扫描(SM0.1)执行一次;参数来源于你梯形图管脚上面填的常数 / 变量。
三种查看方式
方式 1:电脑联机打开 PLC 上载程序
Micro/WIN SMART 软件,联机 PLC;点【上载】,把 PLC 里面完整用户程序上载回电脑;
在程序里面找到 MBUS_INIT 子程序调用块;直接看各个管脚填写的值:
表格
管脚 含义 Mode 1 = 启用 Modbus‑RTU;0=PPI Addr Modbus 从站站号 (1‑247) Baud 波特率 9600/19200… Parity 校验 0 无,1 奇,2 偶 Port 0 本体 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 的设置,没有对应的寄存器。只能做实验反向试探:
站号、波特率、校验:用 Modbus Poll 扫描串口,试探出来站号与通讯速率;
HoldStart (V 区缓冲区起始) 只能试探 V 区的 4xxxx 寄存器,试哪些 V 区可以访问;只能试,无法直接读取。
总结
不存在 SM 特殊寄存器可以直接读出 HoldStart=&VBxxxx;库不提供;
Modbus 上位机不能通讯读取 MBUS_INIT 配置;
优先:上载 PLC 程序,看梯形图 MBUS_INIT 管脚;这是唯一可靠的方式;
如果是 SM0.1 调用 MBUS_INIT 填常数,运行时 V 区 / M 区没有任何地方保存这套参数;断电内存里就消失,只存在用户程序代码里面。
(VB3033 对应 Modbus 地址)
如果你手上 PLC 没有源程序,先上载程序看 MBUS_INIT 的 HoldStart 是多少,再做地址换算!公式回顾:
Modbus寄存器号 =40001 + (VW编号 − HoldStart_VB)/2
额外补充库存储区
顺便在软件【系统块‑库存储器】查看 Modbus 库占用的 781 字节 V 区;注意 HoldStart 的 V 缓冲区不能跟库存储区重叠,否则通讯异常。

