Документация Engee

RITM-CAN RX

Прием CAN сообщений.

Тип: CFunction

Путь в библиотеке:

/RITM/RITM CAN/RITM-CAN RX

Описание

Для работы с блоком установите/обновите пакет поддержки блоков РИТМ.

Блок RITM-CAN RX используется для приема CAN сообщений.

Фильтр сообщений в блоке CAN RX

Длина идентификатора принимаемого сообщения CAN может быть 29 бит (для расширенного формата кадра) или 11 бит (для стандартного формата кадра). Сообщение CAN проходит через фильтр и принимается, только если все биты идентификатора прошли через фильтр. Если хотя бы один бит идентификатора сообщения не прошел через фильтр, то сообщение отбрасывается. Значения параметров Filter ID: и Mask: позволяют задать фильтр с учетом отдельных битов идентификатора принимаемого сообщения CAN.

Сообщение проходит через фильтр, если выполняется следующее условие:

CAN ID & Mask == Filter ID & Mask,

где CAN ID — идентификатор принимаемого сообщения CAN.

Другими словами, работу фильтра можно представить в виде следующих правил:

  1. Если значение Mask: для отдельного бита равно нулю, то этот бит не фильтруется. То есть, в фильтре этот бит не проверяется и проходит через фильтр.

  2. Если значение 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.

Типы данных

Float64

Поддержка комплексных чисел

Нет

Выход

# Число сообщений — число принятых сообщений доступных для чтения из выхода Сообщения
скаляр

Details
Типы данных

UInt32

Поддержка комплексных чисел

Нет

# Сообщения — принятое сообщение CAN
шина

Details

Принятое сообщение CAN в виде шины типа CAN_MESSAGE_BUS.

Типы данных

BusSignal

Поддержка комплексных чисел

Нет

Параметры

Параметры:

# Интерфейс CAN: — порт CAN для получения сообщений
CAN 1 | CAN 2 | CAN 3 | CAN 4 | CAN 5 | CAN 6 | CAN 7 | CAN 8

Details

Номера портов указаны на корпусе КПМ «РИТМ».

Значения

CAN 1 | CAN 2 | CAN 3 | CAN 4 | CAN 5 | CAN 6 | CAN 7 | CAN 8

Значение по умолчанию

CAN 1

Имя для программного использования

m_interfaceCAN

Настраиваемый

Нет

Вычисляемый

Да

# Максимальное число сообщений: — максимальное число сообщений

Details

Максимальное число сообщений, передаваемое из буфера операционной системы в модель за один шаг расчета

Значение по умолчанию

1

Имя для программного использования

m_maxMsgNum

Настраиваемый

Нет

Вычисляемый

Да

# Шаг расчёта, с: — шаг расчета в секундах для приема сообщений CAN в приложение реального времени

Details
Значение по умолчанию

-1

Имя для программного использования

m_smplT

Настраиваемый

Нет

Вычисляемый

Да

Фильтр:

# Filter ID: — фильтр принимаемых сообщений на уровне операционной системы

Details

Для отключения фильтра и приема всех сообщений задайте для параметров Filter ID: и Mask: значение 0. Подробное описание работы фильтра приводится в разделе Фильтр сообщений в блоке CAN RX.

Значение по умолчанию

0x00

Имя для программного использования

m_canId

Настраиваемый

Нет

Вычисляемый

Да

# 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 бит (для стандартного формата кадра).

Значение по умолчанию

0x00

Имя для программного использования

m_canMask

Настраиваемый

Нет

Вычисляемый

Да