与数据分发服务 (DDS) 中间件进行通信
本示例演示了如何在目标计算机上使用数据分发服务 (DDS) 中间件进行通信。Simulink® Real-Time™ DDS Send 模块和 DDS Receive 模块通过实时应用程序中的 dds 中间件传递消息。
要通过数据分发服务建立通信:
打开 Simulink 模型。
在 Simulink 编辑器中,转到“App”选项卡,选择“App”> Simulink Real-Time。
将 SLRT DDS 模块添加到模型中。
通过添加新的数据字典或关联现有字典来配置 SLRT DDS 模块。有关数据字典的信息,请参阅 DDS Dictionary (DDS Blockset)。
构建模型并生成实时应用程序。
连接到 DDS 应用程序,并在目标计算机上运行该实时应用程序。
注意:如果 RegisteredType 的名称与 TopicType 的名称不匹配,则实时应用程序将无法与 DDS 应用程序进行通信。
请根据此示例构建 slrt_ex_pendulum_100Hz_dds 模型,并将应用程序部署到目标计算机上。启动应用程序,并使用 Simulink 数据检查器观察 DDS Send 模块的数据如何被 DDS Receive 模块接收。
创建目标对象并连接
为默认目标计算机创建目标对象,并连接到目标计算机。在命令行窗口中,输入:
tg = slrealtime; connect(tg);
打开示例模型
打开模型。在命令行窗口中,输入:
model = 'slrt_ex_pendulum_100Hz_dds';
open_system(model);

为目标计算机配置模型
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF);
配置 DDS 通信的物理层
DDS Send 和 DDS Receive 模块可通过以太网接口在目标设备与开发计算机之间、目标设备与目标计算机之间,以及目标计算机与连接到同一网络的其他机器之间进行通信。您还可以通过“DDS 字典”App,利用服务质量 (QoS) 设置来指定网络限制。要配置以太网连接,请使用 Speedgoat 以太网配置工具。有关此实用工具的更多信息,请参阅 Speedgoat 文档。
构建模型并下载至目标计算机
要构建模型并下载实时应用程序,请输入:
evalc('slbuild(model)');
load(tg,model);
start(tg);
查看来自 DDS Send 和 DDS Receive 模块的信号
要查看信号,请打开“仿真数据检查器”。在命令行窗口中,输入:
Simulink.sdi.view();

关闭 App 和模型
关闭仿真数据检查器。在命令行窗口中,输入:
Simulink.sdi.close;
关闭打开的模型
在命令行窗口中,输入:
bdclose (model);
另请参阅
DDS Dictionary (DDS Blockset)
主题
- Import or Create DDS Definitions (DDS Blockset)
- Edit Domains, Topics, and Registered Types (DDS Blockset)