Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

CAN Pack

将单个信号打包到 CAN 报文中

  • CAN Pack block

库:
Vehicle Network Toolbox / CAN Communication
Embedded Coder / Embedded Targets / Host Communication
Embedded Coder Support Package for Texas Instruments C2000 Processors / Target Communication
Simulink Real-Time / CAN / CAN MSG blocks

说明

CAN Pack 模块在仿真期间以指定的间隔将信号数据加载到一条 CAN 报文中。

要使用此模块,您必须有 Simulink® 软件的许可证。

CAN Pack 模块支持:

  • Simulink Accelerator™ 快速加速模式。您可以加快 Simulink 模型的执行速度。

  • 模型引用。您的模型可以包含其他 Simulink 模型作为模块化组件。

有关详细信息,请参阅设计模型以实现有效加速 (Simulink)

提示

  • 此模块可用于编码最多 8 个字节的 J1939 参数组的信号。但是,要使用 J1939 报文,最好使用 J1939 Communication 模块库中的模块,而不是此模块。请参阅 J1939 通信

端口

输入

全部展开

CAN Pack 模块默认有一个输入端口。模块输入的数量是动态的,取决于您为模块指定的信号数量。例如,如果您的报文有四个信号,则该模块可以有四个输入端口。

该模块支持以下输入信号数据类型:single、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64 和 boolean。该模块不支持定点数据类型。

生成代码以将模型部署到目标。如果信号信息包含大于 32 位长度的有符号或无符号整数,则不支持代码生成。

提示

即使您有不包含信号的零长度报文,您仍必须向输入端口提供虚拟数据以便定义采样时间。在这种情况下,数据值本身会被忽略。

输出

全部展开

该模块有一个输出端口 CAN Msg。CAN Pack 模块接受指定的输入信号并将其打包为一个 CAN 报文。输出数据类型由作为总线输出参数设置确定。

参数

全部展开

  • raw data:以 uint8 向量数组形式输入数据。如果选择此选项,则只需指定报文的字段。所有其他信号参数字段都不可用。此选项仅在模块上打开一个输入端口。

    转换公式为:

    raw_value = (physical_value - Offset) / Factor
    其中 physical_value 是信号的原始值,raw_value 是打包的信号值。

  • manually specified signals:允许您指定数据信号定义。如果选择此选项,请使用信号表创建信号。模块输入的数量取决于您指定的信号数量。

  • CANdb specified signals:允许您指定包含报文和信号定义的 CAN 数据库文件。如果选择此选项,请选择 CANdb 文件。模块输入的数量取决于 CANdb 文件中为所选报文指定的信号数量。

  • ARXML specified signals:允许您为信号定义指定 ARXML 文件。这将禁用一些远程选项。从 ARXML 文件中读取数据后,您可以切换到 manually specified signals 来进一步修改该表。

编程用法

模块参数:DataFormat
类型:string | character vector
值:'raw data' | 'manually specified signals' | 'CANdb specified signals'
默认值:'raw data'

如果在数据输入为列表中指定了通过 CANdb 文件输入数据,则此选项可用。点击浏览以找到系统上的 CANdb 文件。CANdb 文件中指定的报文列表将填充对话框的报文部分。CANdb 文件还会填充所选报文的信号表。

包含非字母数字字符(如等号、& 符号等)的文件名不是有效的 CAN 数据库文件名。您可以在数据库名称中使用句点。在使用 CAN 数据库文件之前,请命名那些带有非字母数字字符的名称。

编程用法

模块参数:CANdbFile
类型:string | character vector

如果在数据输入为字段中指定了通过 CANdb 文件输入数据,并在 CANdb 文件字段中选择了 CANdb 文件,则此选项可用。选择要在信号表中显示信号详细信息的报文。

编程用法

模块参数:MsgList
类型:string | character vector

指定 CAN 报文的名称。默认值为 CAN Msg。如果您选择输入原始数据或手动指定信号,则此选项可用。如果您选择使用来自 CANdb 文件的信号,则此选项不可用。

编程用法

模块参数:MsgName
类型:string | character vector

指定 CAN 报文标识符是 Standard 还是 Extended 类型。默认值为 Standard。标准标识符是 11 位标识符,扩展标识符是 29 位标识符。如果您选择输入原始数据或手动指定信号,则此选项可用。对于 CANdb specified signals标识符类型从数据库继承类型。

编程用法

模块参数:MsgIDType
类型:string | character vector
值:'Standard (11-bit identifier)' | 'Extended (29-bit identifier)'
默认值:'Standard (11-bit identifier)'

指定 CAN 报文 ID。对于标准标识符,此数字必须是 0 到 2047 之间的正整数,对于扩展标识符,此数字必须是 0 到 536870911 之间的正整数。您还可以使用 hex2dec 函数指定十六进制值。如果您选择输入原始数据或手动指定信号,则此选项可用。

编程用法

模块参数:MsgIdentifier
类型:string | character vector
值:'0''536870911'

指定 CAN 报文的长度,范围为 0 到 8 个字节。如果使用 CANdb specified signals 作为数据输入,将由 CANdb 文件定义报文的长度。如果不是,则该字段默认为 8。如果您选择输入原始数据或手动指定信号,则此选项可用。

编程用法

模块参数:MsgLength
类型:string | character vector
值:'0''8'
默认值:'8'

将 CAN 报文指定为远程帧。

编程用法

模块参数:Remote
类型:string | character vector
值:'off' | 'on'
默认值:'off'

选择此选项可使模块将 CAN 报文作为 Simulink 总线信号输出。有关 Simulink 总线对象的详细信息,请参阅合成接口 (Simulink)

编程用法

模块参数:BusOutput
类型:string | character vector
值:'off' | 'on'
默认值:'off'

向信号表中添加一个新信号。

编程用法

从信号表中删除所选信号。

编程用法

如果您选择手动指定信号或使用 CANdb 文件定义信号,则会出现此表。

如果您使用的是 CANdb 文件,则文件中的数据会填充此表,您不能编辑字段。要编辑信号信息,请切换到手动指定的信号。

如果您已选择手动指定信号,请在此表中创建信号。您创建的每个信号都具有以下值:

名称

为信号指定说明性名称。模型中的 Simulink 模块将显示此名称。默认值为 Signal [row number]

开始位

指定数据的开始位。开始位是从报文数据的开头计数的最低有效位。开始位必须是 0 到 63 之间的整数。

长度(位)

指定信号在报文中占用的位数。长度必须是 1 到 64 之间的整数。

字节顺序

选择以下任一选项:

  • LE:其中字节顺序为 little-endian 格式 (Intel®)。在这种格式中,从最低有效位到最高有效位进行计数。例如,如果以 little-endian 格式打包数据的一个字节,并且开始位为 20,则数据位表类似于下图所示。

    从最低有效位到最高地址计数的 Little-Endian 字节顺序

  • BE:其中字节顺序为 big-endian 格式 (Motorola®)。在这种格式中,从最低有效位到最高有效位进行计数。例如,如果以 big-endian 格式打包数据的一个字节,并且开始位为 20,则数据位表类似于下图所示。

    从最低有效位到最低地址计数的 Big-Endian 字节顺序

数据类型

指定信号如何解释分配的位中的数据。从下列各项中选择:

  • signed(默认值)

  • unsigned

  • single

  • double

多路复用类型

指定模块在每个时间步将信号打包到 CAN 报文中的方式:

  • Standard:在每个时间步打包信号。

  • 多路选择器:打包多路选择器信号,即模式信号。对每条报文,只能指定一个多路选择器信号。

  • 多路复用:如果在运行时多路选择器信号(模式信号)的值与为此信号配置的多路复用值匹配,则打包信号。

例如,一条报文包含下列具有以下类型和值的信号。

信号名称多路复用类型多路复用值
Signal-A标准不适用
Signal-B多路复用1
Signal-C多路复用0
Signal-D多路选择器不适用

在此示例中:

  • 模块在每个时间步中打包 Signal-A(标准信号)和 Signal-D(多路选择器信号)。

  • 如果 Signal-D 的值在特定时间步为 1,则模块在该时间步中将 Signal-B 与 Signal-A 和 Signal-D 一起打包。

  • 如果 Signal-D 的值在特定时间步为 0,则模块在该时间步中将 Signal-C 与 Signal-A 和 Signal-D 一起打包。

  • 如果 Signal-D 的值不是 1 或 0,则模块不会在该时间步中打包任一复用信号。

多路复用值

仅当您选择多路复用类型Multiplexed 时,此选项才可用。您提供的值必须与运行时的多路选择器信号值匹配,模块才会打包多路复用信号。多路复用值必须是正整数或零。

因子

指定将物理值(信号值)转换为报文中打包的原始值时要应用的因子值。有关详细信息,请查看数据输入为参数转换公式。

偏移量

指定将物理值(信号值)转换为报文中打包的原始值时要应用的偏移量值。有关详细信息,请查看数据输入为参数转换公式。

最小值最大值

定义一个信号值范围。默认设置分别为 -Inf(负无穷)和 Inf。对于 CANdb 指定的信号,将从 CAN 数据库中读取这些设置。对于手动指定的信号,您可以指定信号的最小和最大物理值。默认情况下,这些设置不会对超过设置的信号值进行裁剪。

编程用法

模块参数:SignalInfo
类型:string | character vector

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2009a 中推出