RITM-CAN RX
Прием CAN сообщений.
Тип: CFunction
|
Путь в библиотеке:
|
Описание
| Для работы с блоком установите/обновите пакет поддержки блоков РИТМ. |
Блок RITM-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
Порты
Вход
#
RITM-CAN Setup
—
порт дескриптора порта
скаляр
Details
Блок приемника должен быть соединен с соответствующим блоком настройки порта RITM-CAN Setup.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Выход
#
Число сообщений
—
число принятых сообщений доступных для чтения из выхода Сообщения
скаляр
Details
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
Сообщения
—
принятое сообщение CAN
шина
Details
Принятое сообщение CAN в виде шины типа CAN_MESSAGE_BUS.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
Параметры
Параметры:
#
Интерфейс CAN: —
порт CAN для получения сообщений
CAN 1 | CAN 2 | CAN 3 | CAN 4 | CAN 5 | CAN 6 | CAN 7 | CAN 8
Details
Номера портов указаны на корпусе КПМ «РИТМ».
| Значения |
|
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
# Максимальное число сообщений: — максимальное число сообщений
Details
Максимальное число сообщений, передаваемое из буфера операционной системы в модель за один шаг расчета
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
# Шаг расчёта, с: — шаг расчета в секундах для приема сообщений CAN в приложение реального времени
Details
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
Фильтр:
# Filter ID: — фильтр принимаемых сообщений на уровне операционной системы
Details
Для отключения фильтра и приема всех сообщений задайте для параметров Filter ID: и Mask: значение 0. Подробное описание работы фильтра приводится в разделе Фильтр сообщений в блоке CAN RX.
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
# Mask: — битовая маска фильтра идентификаторов CAN-сообщений
Details
Задает, какие биты идентификатора принимаемого CAN-сообщения участвуют в фильтрации на уровне операционной системы. Сообщение принимается, если выполняется условие: CAN_ID & Mask == Filter_ID & Mask.
-
0в битеMask— соответствующий битCAN_IDне проверяется (пропускается); -
1в битеMask— соответствующий битCAN_IDдолжен совпасть с битомFilter_ID, иначе сообщение отбрасывается.
Для отключения фильтра и приема всех сообщений задайте для параметров Filter ID: и Mask: значение 0. Подробное описание работы фильтра приводится в разделе Фильтр сообщений в блоке CAN RX. Идентификатор CAN может быть длиной 11 бит (для расширенного формата кадра) или 11 бит (для стандартного формата кадра).
| Значение по умолчанию |
|
| Имя для программного использования |
|
| Настраиваемый |
Нет |
| Вычисляемый |
Да |
