CAN RX
用于接收 CAN 信息。
类型: EngeeFunction
图书馆中的路径:
|
说明
CAN RX 用于接收 CAN 报文。
CAN RX 块中的报文过滤器
要接收的 CAN 报文的标识符长度可以是 29 位(扩展帧格式)或 11 位(标准帧格式)。CAN 报文通过滤波器后,只有在标识符的所有位都通过滤波器时才能接收。如果报文标识符中至少有一位未通过过滤器,则报文将被丢弃。通过设置 过滤器 ID: 和 掩码 ,可以根据接收到的 CAN 报文的各个标识符位来设置过滤器。
如果满足以下条件,报文将通过过滤器:
CAN ID & Mask == Filter ID & Mask,
其中 CAN ID 是接收到的 CAN 报文的标识符。
换句话说,过滤器的运行可以用以下规则来表示:
-
如果 掩码 中某个位的值为零,则不对该位进行过滤。也就是说,该位不在过滤器中进行检查,而是通过过滤器。
-
如果 掩码 中某位的值为 1,则通过该位的值对该位进行过滤:
-
如果 CAN ID 的位和 过滤器 ID: 的位匹配,则该位通过过滤器。
-
如果 CAN ID 的位和 过滤器 ID: 的位不同,则该位不会通过筛选。
-
*过滤器工作原理示例:
请定义以下 CAN 报文过滤器:
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
参数
Параметры
# 端口: — 用于接收信息的 CAN 端口
Details
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# Число сообщений: — 一个计算步骤中从操作系统缓冲区传输到模型的最大报文数
Details
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 过滤器 ID: — 在操作系统层面对收到的信息进行过滤。
Details
要禁用过滤器并接收所有报文,请指定 过滤器 ID: и 掩码 为 "0"。过滤器操作的详细说明见 CAN RX 块中的报文过滤器.
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
# 掩码 — 实时应用中接收 CAN 报文的计算步骤(以秒为单位
Details
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |