CAN RX
Страница в процессе разработки. |
Используется для приема CAN сообщений.
Описание
Блок 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: отличаются, то этот бит не проходит через фильтр.
-
Пример работы фильтра:
Пусть задан следующий фильтр сообщений 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
Порты
Выход
#
Число сообщений
—
число принятых сообщений
скаляр
Details
Не более значения параметра Число сообщений:. Если в буфере операционной системы находится больше сообщений, то они будут переданы в модель при следующем шаге расчета.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
Сообщения
—
массив принятых сообщений типа CAN_MESSAGE_BUS
вектор
Details
Типы данных |
|
Поддержка комплексных чисел |
Нет |
Параметры
Параметры
# Порт: — порт CAN для получения сообщений
Details
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
# Число сообщений: — максимальное число сообщений передаваемое из буфера операционной системы в модель за 1 шаг расчета
Details
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
# Filter ID: — фильтр принимаемых сообщений на уровне ОС.
Details
Для отключения фильтра и приема всех сообщений задайте Filter ID: и Mask: как 0
. Подробное описание работы фильтра приводится в разделе Фильтр сообщений в блоке CAN RX.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
# Mask: — шаг расчета в секундах для приема сообщений CAN в приложение реального времени
Details
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |