主要内容

将DDS应用程序部署

DDS Blockset连接Simulink中建模的应用程序®通过为DDS供应商RTI和eProsima提供开箱即用的支持。要使用开箱即用的DDS,请在Simulink中创建并建模DDS应用程序,设置环境,并使用Embedded Coder®构建应用程序模型。构建创建导出的XML、生成的c++代码和一个应用程序可执行文件,您可以使用它直接连接到DDS网络。

构建和部署DDS应用程序

在DDS网络上部署应用程序:

  1. 确保您的模型已正确配置。验证模型端口是否为DDS正确配置和映射。有关更多信息,请参见交互式配置DDS接口

  2. 设置环境。DDS Blockset生成特定于您所选择的DDS供应商(RTI或eProsima)的可执行文件。要验证或更改供应商选择,可以使用“配置参数”对话框检查应用程序的工具链设置。要构建应用程序的可执行文件,请在具有受支持的c++编译器的受支持平台中设置环境。如果您的目标供应商是eProsima,则不需要额外的设置。如果您的目标供应商是RTI,您还必须安装RTI Connext。有关更多信息,请参见DDS块集系统要求

  3. 构建应用程序模型。在DDS选项卡上,单击构建

  4. 运行可执行文件并将应用程序连接到DDS网络。

生成文件概述

当您构建您的DDS应用程序模型时,以下文件夹和文件将在您当前的工作文件夹中生成:

  • 应用程序可执行文件——可部署用于将应用程序连接到DDS网络的可执行文件。

  • 嵌入式Coder构建文件夹——生成的c++代码文件。

  • Simulink项目文件夹(slprj)——模型仿真文件。

  • Simulink数据字典文件-相关的DDS字典(.sldd)文件。

  • DDS应用模型——应用程序的Simulink模型。

  • 导出的XML/IDL文件——DDS应用程序的XML/IDL规范。

您可以使用这些生成的文件来分析、部署和移植DDS应用程序。此外,您可以使用packNGo功能来重新定位和重建您的应用程序。

DDS应用程序的可移植性

要在另一个开发环境中重新定位、解包和重新构建您的DDS应用程序,可以使用packNGo。packNGo函数使您能够重新定位文件,以便您可以针对特定的目标环境重新编译或在开发环境中重新构建MATLAB®没有安装。默认情况下,该函数将文件打包为代码生成文件夹中的ZIP文件中的平面文件夹结构。在重新定位ZIP文件之后,使用标准ZIP实用程序来解压缩文件。

使用packNGo配置你的模型来构建:

  1. 打开“配置参数”对话框。

  2. 选择打包代码和工件

  3. 在工具条上,单击构建

有关更多信息,请参见packNGo(嵌入式编码)

实现细节和生成的c++代码

DDS的实现由对象管理组(OMG)标准指定,由几个供应商用几种不同的编程语言实现。的DDS Blockset提供与DDS供应商RTI和eProsima的开箱即用集成。具体来说,该块集支持RTI和eProsima提供的DDS标准的c++实现。如果您对这些供应商api感兴趣,请参阅供应商文档。

生成的c++代码的基本体系结构是,应用程序由消息类、供应商助手类和主文件组成。消息类使应用程序能够发送和接收数据。供应商助手类特定于供应商,并装入应用程序概要文件、注册数据类型、创建和初始化DDS实体,以及包装特定于供应商API的发送和接收消息类。然后,主文件执行应用程序逻辑。如果您想检查生成的c++代码,请查看Embedded Coder构建文件夹。

生成c++类名和命名空间自定义

如果您想为您的DDS应用程序定制生成的c++代码,您可以以交互方式或编程方式控制DDS应用程序模型生成的类名和名称空间。

从开放模型以交互方式配置生成代码的这些方面DDS选项卡上,单击代码接口中,选择类名和命名空间,并在打开的配置对话框中自定义名称。

要以编程方式配置类名和类名称空间,请使用Embedded Coder API函数getClassName(嵌入式编码)setClassName(嵌入式编码)getClassNamespace(嵌入式编码),setClassNamespace(嵌入式编码).有关更多信息,请参见配置类的命名空间(嵌入式编码)

调试和故障诊断

您可以排除以下几个常见的构建问题:

不正确的环境设置

  • 说明-如果您选择RTI作为您的供应商,但没有安装RTI Connext,则无法部署您的应用程序。

  • 操作—下载并安装RTI Connext

应用程序模型中导入和输出端口的映射缺失或无效

  • 说明—如果导入或输出端口未正确配置,则模型无法构建。

  • 动作——将应用程序模型中的导入和输出端口映射到DDS主题,并使用相应的DDS数据类型配置端口。

DDS定义的数据管理不一致

  • 说明—如果您将一个导入或输出端口映射到一个主题,然后删除或更改主题的数据类型,则模型不会构建。

  • 操作—验证DDS定义在相关的DDS字典中是可用的。

注意事项和限制

  • RTI Connext Micro适配器-系统的默认网络接口名称可能与RTI Micro适配器中使用的默认接口名称不同。RTIMicroAdapter.hpp.在这种情况下,参与者可能无法正确初始化。检查并更新用于名称的字符串,并手动重建可执行文件。

  • RTI Connext Micro DataReader和DataWriter容量限制—一个应用默认分配的DataReader (remote_reader_allocation)和DataReader (remote_writer_allocation)的数量为48。根据运行的其他DDS应用程序和您的网络条件,读取器和写入器的数量可能超过48个。您可以配置RTIMicroQosDefn.inl增加此限制,或者您可以更改为当前占用的阅读器和写入器较少的域。

  • 带有特殊字符的文件夹名称—如果与生成相关的文件夹路径包含以下内容,则生成过程可能会产生错误:

    • 不属于系统区域设置的Unicode字符。

    • 一种日文(多字节)字符,其中最后一个字节等于5度十六进制字符。make和编译器工具可能会错误地将最后一个字节解释为“\”(反斜杠)字符。

  • DDS目标规范-DDS Blockset是否不支持将从DDS应用程序模型生成的代码编译为非DDS应用程序

  • DDS定义——应用程序的DDS主题和QoS从与应用程序模型相关联的DDS字典中检索。确保这个字典在您的MATLAB路径上,以便适当地构建您的模型。

  • 代码生成数据类型——生成的c++代码不提供对某些数据类型的支持。代码生成不支持多维数组。

  • 安全—通信平台存在固有的安全风险。这些风险包括恶意用户试图监听或欺骗DDS通信的可能性。此外,晚加入的读取器可能会访问之前传输的数据。要加强对这些安全风险的保护,请下载并使用您的供应商的安全版本。包含的eProsima版本DDS Blockset不是安全版本。

相关的话题

外部网站

Baidu
map