主要内容

Simulink 中对 CAN 的 ARXML 文件支持

R2026b

模块增强功能

与 DBC 文件相比,CAN Pack 和 CAN Unpack 模块支持更广泛的 ARXML 文件结构。一个可以在 ARXML 文件中建模但在 DBC 文件中没有对应项的重要元素就是协议数据单元 (PDU)。

原则上,一个帧可以包含多个 PDU,但具体到 CAN,AUTOSAR 标准限制一个帧只能载送一个 PDU。为了确定帧中每个信号的参数值,CAN Pack 和 CAN Unpack 模块使用文件中可用的 PDU 信息。但是,此信息不会显示在模块封装上。

模块的功能

下图显示使用从示例 ARXML 文件中读取的数据配置的 CAN Pack 模块的封装。CAN Unpack 模块封装类似于 CAN Pack。

CAN Pack mask for ARXML

在文件解析后,该模块按如下方式处理信息。

  • 提取 CanFrameTriggerings 列表,每个 CanFrameTriggering 提供对应帧的 CAN 标识符值和 CAN 寻址模式(标识符类型,即标准或扩展)。

  • 帧名称(出现在报文列表中以及名称字段中)是包含支持的 PDU 类型的文件中任何帧的名称。仅支持 ISignalIPdus,因此会跳过任何其他 PDU 类型,对应的帧也不会出现在下拉列表中。如果在文件中发现不支持的 PDU,该模块将在诊断查看器中抛出警告。

  • 文件中的每个 CanFrame 元素都以字节为单位提供长度。

  • 系统不会从文件中读取远程帧标志,因此该选项保持激活状态以便在封装中手动指定。

信号表填写如下。

  • 每个 CanFrame 还提供所谓的 PduToFrameMapping,从其中可获得 PDU 的起始位和字节顺序。此信息用于确定每个信号相对于帧的起始位和字节顺序的值。

  • 系统会从 PduToFrameMapping 中恢复 ISignalIPdu,并从中获取其 ISignalToIPduMappings 信息,后者提供 PDU 中每个信号的字节顺序和起始位置。每个 ISignalToIPduMapping 又引用一个 ISignal,并从中提取信号名称和位长度。这些信息可用来填写信号表的前四列。请注意,起始位是 PDU 起始位(相对于帧)和信号起始位(相对于 PDU)的组合,它取决于字节顺序。

  • 数据类型列中的值按如下方式确定:

    • 如果 ISignal 提供非空 networkRepresentationProps 字段,该字段定义 baseType,则 baseType 用于根据标准中的规则确定数据类型。

    • 否则,模块回调会尝试根据 CompuMethods 中提供的信息推断数据类型。

    • 如果无法确定数据类型,则会默认设置值 signed 并抛出警告。

  • 信号表的最后 4 列是根据与每个 ISignal 相关联的 SystemSignal 所引用的 CompuMethod 中的可用信息确定的。

    • 仅支持线性缩放(即,物理值 = 因子 * 内部值 + 偏移量)。

    • 如果 CompuMethods 缺失或不完整,模块将设置与没有上限或下限的标识关系对应的默认值,并抛出警告。

一般情况下,如果数据缺失或不完整,该模块将抛出警告,并建议切换到 Manually specified signals 以修改推断的值或设置为默认值。这样,即使提供的文件不完整,工作流也不会中断。

限制

  • 仅支持 ISignalIPdus。

  • 使用 ARXML 文件时不支持多路复用。相应地,“多路复用类型”将设置为“标准”,“多路复用值”将设置为“0”。

  • IDENTICAL、LINEAR、SCALE_LINEAR 的 CompuMethods 和空类别:

    • 如果类别为 SCALE_LINEAR,则仅支持具有单个区间的情况(即等效于 LINEAR);否则,将使用默认值并抛出警告。

    • 如果未指定类别,则假定它为 LINEAR。如果内容与假设不一致,则使用默认值并抛出警告。

另请参阅

模块