2. MVB主设备帧发送时序配置与从设备响应捕获

主帧发送时序参数与从帧响应窗口

MVB 主设备在每个基本周期内按微时隙(micro-slot)依次发送主帧,从设备只能在被寻址后的规定响应窗口内回送从帧。要让主从通信稳定建立,主设备侧必须把三个时序量配准:主帧间隔(微时隙长度)、从帧响应超时、帧间保护间隔。三者与 1.5 Mbps 位速率下的位时间(约 666.7 ns)直接相关,配置不当会表现为从帧被截断、误判为无响应或相邻主帧碰撞。

本例采用一台 MVB 主设备(可配置时序寄存器)、一台过程数据从设备,以及一台带时间戳的 MVB 总线监听工具。主设备按 1 ms 基本周期发送主帧,监听工具以位时间为分辨率记录主帧起始沿与从帧起始沿,从而直接读出实际响应延迟。

主帧—从帧时序关系(1.5 Mbps,1 位 ≈ 666.7 ns) 时间 t 主帧 #1 主设备 → 从设备 从帧响应窗口 t_response ≤ 42 μs 超时即判“无响应” 从帧 #1 从设备 → 主设备 实测 t_delay 保护 间隔 主帧 #2 下一微时隙 微时隙长度 T_slot(主帧间隔) 从帧响应窗口 等待从设备应答 无从帧 超时 / 地址未匹配 MVB 总线监听工具 · 记录主帧起始沿 · 记录从帧起始沿 · 计算 t_delay · 标记超时事件 抓取 时序判读 t_delay ≤ 42 μs → 正常 t_delay > 42 μs → 超时 从帧被截断 → 窗口过短 相邻主帧重叠 → T_slot 过小

时序参数配置与捕获流程

主设备侧需要写入的时序参数通常以位时间为单位。以 1.5 Mbps 为例,1 位约 666.7 ns,因此 42 μs 的响应超时约等于 63 位时间。配置时按以下顺序进行,避免参数互相覆盖:

  1. 设定微时隙长度 T_slot:本例取 1 ms 基本周期内划分 16 个微时隙,即 T_slot ≈ 62.5 μs。该值必须大于“主帧长度 + 从帧响应窗口 + 保护间隔”之和,否则相邻主帧会挤压从帧。
  2. 设定从帧响应超时:取 42 μs(约 63 位时间),略大于从设备最坏响应延迟,留出裕量但不至于吞掉下一个微时隙。
  3. 设定帧间保护间隔:取 4 μs(约 6 位时间),用于吸收总线传播延迟与收发器切换抖动。
  4. 启动监听工具:在发送主帧前开始记录,确保捕获到主帧起始沿与从帧起始沿的完整时间戳。

下面是一段用于计算并校验上述参数是否自洽的 Python 示例,输入为位速率、微时隙数、主帧位数与从帧位数,输出各时间量与是否满足约束:

BIT_RATE = 1.5e6          # 1.5 Mbps
BIT_TIME = 1 / BIT_RATE   # ≈ 666.7 ns
SLOTS_PER_CYCLE = 16
CYCLE = 1e-3              # 1 ms 基本周期
T_SLOT = CYCLE / SLOTS_PER_CYCLE      # 62.5 μs
T_RESP_TIMEOUT = 42e-6    # 从帧响应超时
T_GUARD = 4e-6            # 保护间隔
MASTER_BITS = 16          # 主帧位数(示例)
SLAVE_BITS = 16           # 从帧位数(示例)

t_master = MASTER_BITS * BIT_TIME
t_slave = SLAVE_BITS * BIT_TIME
need = t_master + T_RESP_TIMEOUT + T_GUARD

print(f"位时间 = {BIT_TIME*1e9:.1f} ns")
print(f"T_slot = {T_SLOT*1e6:.1f} μs")
print(f"主帧时长 = {t_master*1e6:.2f} μs, 从帧时长 = {t_slave*1e6:.2f} μs")
print(f"所需最小微时隙 = {need*1e6:.2f} μs")
print("时序自洽" if T_SLOT >= need else "T_slot 过小,需增大或缩短响应超时")

按上述示例参数,所需最小微时隙约为 10.7 μs + 42 μs + 4 μs ≈ 56.7 μs,小于 62.5 μs,因此配置自洽。若把响应超时误设为 60 μs,则所需最小微时隙超过 62.5 μs,相邻主帧将挤压从帧窗口,监听工具上会看到从帧被下一主帧起始沿截断。

捕获结果判读

监听工具导出的事件序列应包含“主帧起始”“从帧起始”“超时”三类标记。判读时按以下条件逐条核对:

观察项正常表现异常含义
主帧起始沿间隔≈ T_slot(62.5 μs)间隔抖动大 → 主设备调度或时钟不稳
从帧起始沿相对主帧的延迟≤ 42 μs超过 42 μs → 从设备未及时响应或地址不匹配
从帧结束到下一主帧起始≥ 保护间隔 4 μs小于 4 μs → 存在碰撞风险,需增大保护间隔
超时事件计数0(正常通信时)持续超时 → 检查从设备端口配置与主帧地址
若监听工具只能给出微秒级时间戳,建议连续采集至少 100 个基本周期,统计 t_delay 的最大值与抖动范围,而不是只看单帧,以避免偶发调度抖动造成误判。
修改 T_slot 或响应超时后必须重新采集,不能沿用旧数据判读;参数变更会直接改变从帧窗口位置,旧时间戳不再对应新配置。