CAN FD Unpack
从 CAN FD 报文中解包单个信号

库:
      Vehicle Network Toolbox / 
      CAN FD Communication
   
      C2000 Microcontroller Blockset / 
      Target Communication
   
      Simulink Real-Time / 
      CAN / 
      CAN-FD MSG blocks
   
描述
CAN FD Unpack 模块在每个时间步使用指定的输出参数将 CAN FD 报文解包为信号数据。数据作为单个信号输出。
要使用此模块,您还需要 Simulink® 软件的许可证。
CAN FD Unpack 模块支持:
- Simulink 加速模式。您可以加快 Simulink 模型的执行速度。有关详细信息,请参阅加速 (Simulink)。 
示例
Simulink CAN FD 通信快速入门
此示例说明如何在 Simulink® 中使用 MathWorks® 虚拟 CAN FD 通道来设置 CAN FD 报文的传输和接收。虚拟通道以环回配置形式连接。
记录并回放 CAN FD 报文
以下示例说明如何使用 Simulink® 中的 MathWorks® 虚拟 CAN FD 通道记录和回放 CAN FD 报文。您可以更新此模型以连接到您的系统上支持的硬件。
端口
输入
此模块有一个输入端口 Msg。CAN FD Unpack 模块接收指定的输入 CAN 报文,并将其信号数据解包到单独的输出。
该模块支持以下输入信号数据类型:single、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64 和 boolean。该模块不支持定点数据类型。
输出
CAN FD Unpack 模块默认有一个输出端口。数据输出端口的数量是动态的,取决于您为模块指定的要输出的信号数。例如,如果您的模块有四个信号,那么它就会有四个以信号名称为标签的输出端口。
对于手动或数据库指定的信号,默认输出信号数据类型为 double。要指定其他类型,请使用 Signal Specification (Simulink) 模块。该模块可支持以下输出信号数据类型:single、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64 和 boolean。该模块不支持定点类型。
可以通过参数输出端口窗格中的选项添加其他输出端口。
参数
- raw data:将数据输出为一个 uint8 向量数组。如果选择此选项,则只需指定报文的字段。其他信号参数字段不可用。此选项仅在模块上创建一个输出端口。- 转换公式为: 其中- physical_value = raw_value * Factor + Offset - raw_value是解包的信号值,- physical_value是缩放的信号值。
- manually specified signals:您可以指定数据信号。如果选择此选项,请使用- Signals表来手动创建信号报文。模块上的输出端口数取决于您指定的信号数。例如,如果指定四个信号,则模块具有四个输出端口。
- CANdb specified signals:您可以指定包含数据信号的 CAN 数据库文件。如果选择此选项,请选择 CANdb 文件。模块上的输出端口数取决于 CANdb 文件中指定的信号数。例如,如果 CANdb 文件中的所选报文有四个信号,则您的模块有四个输出端口。
- ARXML specified signals:允许您为信号定义指定 ARXML 文件。这将禁用一些远程选项。从 ARXML 文件中读取数据后,您可以切换到- manually specified signals来进一步修改该表。- 有关详细信息,请参阅Simulink 中对 CAN 的 ARXML 文件支持。 
编程用法
| 模块参数: DataFormat | 
| 类型: string|character vector | 
| 值: 'raw data'|'manually specified signals'|'CANdb specified signals''ARXML specified signals' | 
| 默认值: 'raw data' | 
如果您将要输出的数据格式参数指定为 CANdb specified signals 或 ARXML specified signals,则此选项可用。点击浏览以在您的系统上找到数据库文件。数据库文件中指定的报文和信号定义填充对话框的报文部分。数据库文件中指定的信号会填充信号表。包含非字母数字字符(如等号、& 符号等)的文件名不是有效的数据库文件名。您可以在数据库名称中使用句点。在使用之前,请重命名具有非字母数字字符的数据库文件。 
编程用法
| 模块参数: CANdbFile | 
| 类型: string|character vector | 
如果您为数据输入为字段指定数据库,并在数据库文件字段中指定数据库文件,则此选项可用。您可以选择要查看的报文。然后,信号表会显示所选报文的详细信息。
编程用法
| 模块参数: MsgList | 
| 类型: string|character vector | 
指定报文的名称。默认值为 Msg。如果您选择输出原始数据或手动指定信号,则此选项可用。
编程用法
| 模块参数: MsgName | 
| 类型: string|character vector | 
指定报文标识符是 Standard 还是 Extended 类型。默认值为 Standard。标准标识符是 11 位标识符,扩展标识符是 29 位标识符。如果您选择输出原始数据或手动指定信号,则此选项可用。对于数据库指定的信号,标识符类型从数据库继承类型。
编程用法
| 模块参数: MsgIDType | 
| 类型: string|character vector | 
| 值: 'Standard (11-bit identifier)'|'Extended (29-bit identifier)' | 
| 默认值: 'Standard (11-bit identifier)' | 
指定您的报文 ID。对于标准标识符,此数字必须是 0 到 2047 之间的整数,对于扩展标识符,此数字必须是 0 到 536870911 之间的整数。如果指定 –1,则模块将解包您所指定长度的报文。您还可以使用 hex2dec 函数指定十六进制值。如果您选择输出原始数据或手动指定信号,则此选项可用。
编程用法
| 模块参数: MsgIdentifier | 
| 类型: string|character vector | 
| 值: '0'到'536870911' | 
指定报文的长度。对于 CAN 报文,该值可以是 0-8 个字节;对于 CAN FD,该值可以是 0-8、12、16、20、24、32、48 或 64 个字节。如果您使用数据库指定的信号作为输出数据,数据库文件定义您的报文长度。如果您选择输出原始数据或手动指定信号,则此选项可用。
注意:当接收到长度与封装或网络描述文件中指定的值不同的帧时,该帧将被丢弃。
编程用法
| 模块参数: MsgLength | 
| 类型: string|character vector | 
| 值: '0'到'8'、'12'、'16'、'20'、'24'、'32'、'48'、'64' | 
| 默认值: '8' | 
向信号表中添加信号。
编程用法
无
从信号表中删除所选信号。
编程用法
无
如果您选择手动指定信号或使用数据库文件定义信号,则会出现此表。
如果您使用的是数据库文件,则文件中的数据会填充此表,您不能编辑字段。要编辑信号信息,请切换到指定的信号。
如果您已选择手动指定信号,请在此表中手动创建信号。您创建的每个信号都具有以下值:
- 名称
- 为信号指定说明性名称。模型中的 Simulink 模块将显示此名称。默认值为 - Signal [row number]。
- 开始位
- 指定数据的开始位。开始位是从报文数据的开头计数的最低有效位。对于 CAN,开始位必须是 0 到 63 之间的整数,对于 CAN FD,开始位必须是 0 到 511 之间的整数(同时还需在报文的位数内)。(请注意,报文长度以字节为单位指定。) 
- 长度(位)
- 指定信号在报文中占用的位数。长度必须是 1 到 64 之间的整数。报文中所有信号长度的总和不能超过报文长度中的位数;也就是说,所有信号的累积长度必须在报文的长度内。(注意,报文长度以字节为单位,信号长度以位为单位。) 
- 字节顺序
- 选择以下任一选项: - LE:其中字节顺序为 little-endian 格式 (Intel®)。在这种格式中,您从最低有效位到最高有效位进行计数,并在超出字节边界时会进入下一更高的字节。例如,如果以 little-endian 格式打包数据的一个字节,并且开始位为 20,则数据位表类似于下图所示。- 从最低有效位到最高地址计数的 Little-Endian 字节顺序 
- BE:其中字节顺序为 big-endian 格式 (Motorola®)。在这种格式中,您从最低有效位到最高有效位进行计数,并在超出字节边界时会进入下一更低的字节。例如,如果以 big-endian 格式打包数据的一个字节,并且开始位为 20,则数据位表类似于下图所示。- 从最低有效位到最低地址计数的 Big-Endian 字节顺序 
 - 有关详细信息,请参阅 CAN 帧结构、字节顺序和位计数。 
- 数据类型
- 指定信号如何解释分配的位中的数据。从下列各项中选择: - signed(默认值)
- unsigned
- single
- double- 注意:如果某 - double信号与报文字节边界不完全对齐,要使用 Embedded Coder® 生成代码,则必须选中“配置参数”对话框的硬件实现窗格中的设备详细信息下的支持 long long。
 
- 多路复用类型
- 指定模块在每个时间步从报文中解包信号的方式: - 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。对于数据库指定的信号,从数据库中读取这些设置。对于手动指定的信号,您可以指定信号的最小和最大物理值。默认情况下,这些设置不会对超过它们的信号值进行裁剪。
编程用法
| 模块参数: SignalInfo | 
| 类型: string|character vector | 
选择此选项可输出 CAN 报文标识符。此端口的数据类型为 uint32。
编程用法
| 模块参数: IDPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
选择此选项可输出报文时间戳。此值指示收到报文的时间,测量值为模型仿真开始以来经过的秒数。此选项会向模块添加一个新的输出端口。此端口的数据类型为 double。
编程用法
| 模块参数: TimestampPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
选择此选项可输出报文错误状态。此选项会向模块添加一个新的输出端口。该端口上的输出值 1 表明传入报文是错误帧。如果输出值为 0,则没有错误。此端口的数据类型为 uint8。
编程用法
| 模块参数: ErrorPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
选择此选项可输出报文远程帧状态。此选项会向模块添加一个新的输出端口。此端口的数据类型为 uint8。
编程用法
| 模块参数: RemotePort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
选择此选项可输出报文的长度(以字节为单位)。此选项会向模块添加一个新的输出端口。此端口的数据类型为 uint8。
编程用法
| 模块参数: LengthPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
选择此选项可输出报文接收状态。如果模块接收到新报文,则状态为 1,如果没有收到,则状态为 0。此选项会向模块添加一个新的输出端口。此端口的数据类型为 uint8。
编程用法
| 模块参数: StatusPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
(对于 CAN 协议禁用。)选择此选项可输出报文比特率开关。此选项向模块添加新输出端口,指示 CAN FD 报文比特率开关是否已设置。此端口的数据类型为 boolean,指示报文数据相位的比特率与仲裁相位的比特率相比是更快 (true) 还是与之相同 (false)。
有关 BRS 的详细信息,请参阅 CAN FD - 基本工作原理。
编程用法
| 模块参数: BRSPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
(对于 CAN 协议禁用。)选择此选项可输出报文错误状态。此选项会向模块添加一个新的输出端口。此端口的数据类型为 boolean,表示 CAN FD 报文错误状态指示标志是否已设置。
有关 ESI 的详细信息,请参阅 CAN FD - 基本工作原理。
编程用法
| 模块参数: ESIPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
(对于 CAN 协议禁用。)选择此选项可输出报文数据长度。此选项会向模块添加一个新的输出端口。此端口的数据类型为 double。
编程用法
| 模块参数: DLCPort | 
| 类型: string|character vector | 
| 值: 'off'|'on' | 
| 默认值: 'off' | 
扩展功能
C/C++ 代码生成
 使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
版本历史记录
在 R2018a 中推出为了支持 ARXML 文件定义,以下参数已更新:
- 要输出的数据格式 - 有新选项 - ARXML specified signals。
- CANdb 文件 - 在模块封装中已重命名为数据库文件。其编程名称仍为 - CANdbFile。
另请参阅
模块
- CAN FD Configuration | CAN FD Pack | CAN FD Receive | CAN Unpack | CAN Unpack (Simulink Real-Time)
函数
主题
- 支持的模块功能
- 设计模型以实现有效加速 (Simulink)
- 合成接口 (Simulink)
- CAN 帧结构、字节顺序和位计数
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
