You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB R2023b Simulink DDS Blockset无数据接收问题排查求助

排查步骤与解决方案

1. 信号命名一致性检查

你提到结构体中的信号名为headligthOn(注意拼写:ligth少了一个t),但发布的信号是headlightOn,命名不匹配会导致DDS主题的数据结构无法对齐,订阅端无法正确解析数据,最终返回默认值0。请确保所有环节的信号名称完全一致:

  • 总线对象里的信号名
  • Simulink模型发布/接收块关联的信号名
  • DDS主题类型定义中的字段名

2. Fast DDS发现机制验证

默认Fast DDS使用UDP多播实现节点发现,需确认:

  • 发布/订阅进程(或机器)处于同一网络段,防火墙未阻止Fast DDS默认UDP端口(7400-7500)
  • 用Fast DDS工具验证主题是否被发现,在命令行运行:
    fastdds discovery -i 0
    
    若未看到HeadlightControl主题,需修改Fast DDS的XML配置文件,强制使用单播或调整多播地址。

3. DDS主题QoS配置匹配

发布端与订阅端的QoS参数必须完全匹配,重点检查:

  • 可靠性(Reliability):发布端用Reliable时,订阅端不能设为BestEffort
  • 持久性(Durability):若发布端设为Transient Local,订阅端需对应配置,否则晚启动的订阅端收不到初始数据
  • 主题名:DDS主题名区分大小写,需确保两端完全一致

4. 发布端数据输出验证

  • 在发布端模型中添加Scope块,确认headlightOn信号确实有非0的输出变化
  • 构建发布端模型后,单独运行生成的可执行文件,用fastdds monitor工具查看数据是否真的被发布:
    fastdds monitor
    
    若监控工具能看到信号值变化,问题出在订阅端配置;若看不到,说明发布端未正确输出数据。

5. 总线类型的DDS映射验证

用MATLAB命令导出总线对应的DDS IDL文件,确认字段定义正确:

ddsdatatype(HeadlightControl, 'FileName', 'HeadlightControl.idl')

查看生成的IDL文件,确认字段名、布尔类型(对应DDS的boolean)是否正确,再对比订阅端的IDL定义,确保完全一致。

6. 同一进程运行的特殊检查

若两个模型在同一MATLAB进程中运行,需修改Fast DDS的XML配置,开启进程内通信:

<profiles>
    <participant profile_name="intraprocess_profile">
        <rtps>
            <intraprocess_delivery>true</intraprocess_delivery>
        </rtps>
    </participant>
</profiles>

然后在Simulink的DDS配置中选择该profile。


内容的提问来源于stack exchange,提问作者Can Ömercikoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:12:40