Engee 文档

CAN RX

它用于接收CAN消息。

类型: EngeeFunction

图书馆中的路径:

/Interfaces/CAN/CAN RX

资料描述

要使用该块,请安装/更新支持包。 设备

CAN RX 它用于接收CAN消息。

CAN RX块中的消息过滤器

接收到的CAN消息的标识符的长度可以是29位(对于扩展帧格式)或11位(对于标准帧格式)。 CAN消息通过过滤器,并且仅当标识符的所有位都通过过滤器时才被接受。 如果消息标识符的至少一个比特未通过过滤器,则丢弃该消息。 设置 Filter ID:Mask: 允许您根据接收到的CAN消息的标识符的单个位设置过滤器。

如果满足以下条件,则消息将通过筛选器:

CAN ID & Mask == Filter ID & Mask,

其中CAN ID是接收到的CAN消息的标识符。

换句话说,过滤器可以以下列规则的形式表示
  • 如果值为 Mask: 如果单个位为零,则不过滤此位。 也就是说,该位在过滤器中不被检查并通过过滤器。

  • 如果值为 Mask: 对于单个比特,它等于一,则通过该比特的值执行滤波。:

    • 如果位是从CAN ID和位是从 Filter ID: 如果它们匹配,则该位通过滤波器。

    • 如果位是从CAN ID和位是从 Filter ID: 如果它们不同,则该位不通过滤波器。


过滤器操作示例:

让下面的消息过滤器设置。:

FilterID = 0b0100;
Mask     = 0b0110;

具有CAN标识符0x4、0x5和0xC的消息通过过滤器并被接受:

CAN_ID = [0b0100 0b0101 0b1100];
can_msg_passed = bitand(CAN_ID, Mask) == bitand(FilterID, Mask)
can_msg_passed =

  1×3 logical array

   1   1   1

带有CAN标识符`0X1`’0x2’和'0x6’的消息不会通过过滤器,将被丢弃:

CAN_ID = [0b0001 0b0010 0b0110];
can_msg_passed = bitand(CAN_ID, Mask) == bitand(FilterID, Mask)
can_msg_passed =

  1×3 logical array

   0   0   0

港口

输出

# 信息数量 — 收到的信息数
标量

Details

不超过参数值 Число сообщений: .如果操作系统缓冲区中还有更多信息,它们将在下一步计算时传输到模型中。

数据类型

UInt32.

复数支持

# 信息 — 类型为 CAN_MESSAGE_BUS 的已接收报文数组
向量

Details
数据类型

Float64`。

复数支持

参数

Параметры

# Port: — 用于接收信息的 CAN 端口

Details
默认值

"can0"

程序使用名称

m_port

可调谐

可计算

# Число сообщений: — 一个计算步骤中从操作系统缓冲区传输到模型的最大报文数

Details
默认值

1

程序使用名称

m_messages

可调谐

可计算

# Filter ID: — 在操作系统层面对收到的信息进行过滤。

Details

要禁用过滤器并接收所有报文,请指定 Filter ID:Mask: 为 "0"。过滤器操作的详细说明见 CAN RX块中的消息过滤器.

默认值

0x00

程序使用名称

m_filter

可调谐

可计算

# Mask: — 实时应用中接收 CAN 报文的计算步骤(以秒为单位

Details
默认值

0x00

程序使用名称

m_mask

可调谐

可计算