В TSMaster есть четыре типа фильтров сообщений: аппаратный фильтр, фильтр потока данных, оконный фильтр и программный фильтр. У каждого — своя область применения, свои преимущества и ограничения. Разбираем все четыре с примерами настройки и советами, какой фильтр выбрать под конкретную задачу.

Ключевые слова: TSMaster, фильтры сообщений, аппаратный фильтр, фильтр потока данных, оконный фильтр, программный фильтр, C-скрипт.

1. Четыре типа фильтров TSMaster

  • Аппаратный фильтр — фильтрация по битам данных на стороне железа. Ненужные сообщения блокируются ещё в устройстве, освобождая полосу для приёма остальных.
  • Фильтр потока данных — фильтрация потока данных шины, программная. Эффективен и удобен, но нужно чётко понимать, что именно фильтруется.
  • Оконный фильтр — фильтр для конкретного окна, программный. Настраивается просто, но действует только в пределах окна, а условия фильтрации ограничены.
  • Программный фильтр — фильтрация сообщений окна скриптом, программная. Условия гибкие и богатые, но требуется базовое умение программировать.

2. Аппаратный фильтр

Настройка CAN-фильтра на рис. 2-1 позволяет фильтровать стандартные кадры (11 бит) и расширенные (29 бит) по битам поля ID. У каждого бита три состояния (0 — блокировать, 1 — пропускать, x — любое), переключаемые кликом левой кнопки мыши. После настройки внизу в реальном времени отображается список пропускаемых идентификаторов. В левом нижнем углу диалога — справка с видео, посередине — проверка, пройдёт ли конкретный ID при текущих условиях, справа — подтверждение и отмена настроек.

Аппаратный фильтр
Рис. 2-1. Настройка аппаратного CAN-фильтра

Например, чтобы пропускать только сообщение 0x100 и блокировать все остальные идентификаторы, настройте фильтр как на рис. 2-2.

Пропуск только 0x100
Рис. 2-2. Пропускается только 0x100

А можно ли здесь запретить один конкретный ID? Да, но так как фильтрация идёт на аппаратном уровне по битам данных, запрет одного бита неизбежно заденет и часть других ID — это ограничение такого фильтра. Например, запрещая 0x100, как на рис. 2-3, мы блокируем все ID, у которых бит 09 равен 1.

Запрет 0x100
Рис. 2-3. Запрет 0x100 затрагивает соседние ID

Сколько всего существует вариантов фильтрации? У каждого бита 3 состояния: у стандартного кадра ID занимает 11 бит, у расширенного — 29 бит. Значит, число комбинаций фильтрации: для стандартного кадра — 311, для расширенного — 329.

3. Фильтр потока данных

3.1. Процесс настройки

Фильтр потока данных — это, по сути, направление движения сообщений: от источника данных слева (шина, к которой привязан проект) сообщения идут в окна «Информация о сообщениях», «Запись шины» и другие модули только после прохождения фильтра. Поэтому эти модули получают не обязательно все сообщения шины (рис. 3-1 – 3-4).

Поток данных
Рис. 3-1. Схема потока данных
Настройка потока
Рис. 3-2. Настройка фильтра потока данных
Фильтр канала
Рис. 3-3. Фильтр по каналу и идентификаторам
Готовый фильтр
Рис. 3-4. Готовая конфигурация фильтра

3.2. Значение цветов модулей

Модули в схеме окрашены по-разному, и у цветов есть смысл:

  • белое окно — пропускаются все данные;
  • зелёное окно — пропускаются данные, удовлетворяющие условию;
  • красное окно — все данные заблокированы.

Пример на рис. 3-5: на канале 1 настроен пропускающий фильтр для сообщения 0x100, применённый к окну информации о сообщениях CAN/CAN FD, модулю записи шины и окну графиков. Из двух периодических сообщений (0x100 и 0x101), отправленных из окна передачи, в окне информации виден только 0x100 на канале 1.

Пример работы фильтра
Рис. 3-5. Пример работы фильтра потока данных

Преимущества этого фильтра — эффективность, наглядность и возможность повторного использования; недостаток — более сложная настройка по сравнению с простым просмотром (для таких задач удобнее оконный фильтр из следующего раздела). Подробно фильтр потока данных описан в руководстве «TSMaster. Быстрый старт» в справке программы.

4. Оконный фильтр

Самый распространённый и простой в настройке фильтр: в нужном окне достаточно нажать кнопку с воронкой. Подходит для наблюдения за частью сообщений на работающей шине или при воспроизведении — настройка проста и удобна. Но из-за этой простоты возможности ограничены: область действия — одно окно, условий фильтрации немного, а записываемый поток и содержимое окна могут расходиться (в таких случаях используйте фильтр потока данных). Оконный фильтр обычно применяют для быстрого просмотра или в комбинации с другими фильтрами (рис. 4-1).

Оконный фильтр
Рис. 4-1. Настройка оконного фильтра

5. Программный фильтр

5.1. Процесс настройки

На рис. 5-1 и 5-2 показаны шаги настройки программного фильтра. Эта функция появилась в свежих версиях TSMaster, поэтому перед использованием обновите программу до последней версии через справку.

Настройка программного фильтра
Рис. 5-1. Настройка программного фильтра, шаг 1
Настройка программного фильтра
Рис. 5-2. Настройка программного фильтра, шаг 2

5.2. Преимущества

Когда стоит использовать программный фильтр? Сначала поймём, чем он отличается от остальных трёх:

  • фильтрация выполняется на программном уровне, условия можно детализировать вплоть до отдельного бита данных;
  • подходит для редких, особых случаев отбора;
  • конфигурация полностью настраивается под свою задачу и допускает повторное использование;
  • комбинируется с другими фильтрами — высокая совместимость.

5.3. Сложности

Программный фильтр — это, по сути, фильтр, который вы пишете сами: нужно знать синтаксис C-скриптов и соответствующие структуры, порог входа выше, чем у остальных фильтров. Но благодаря готовым примерам достаточно базового знания синтаксиса C-скриптов, чтобы фильтр заметно повысил эффективность работы и помог в решении ключевых задач.

5.4. Пример

Настроим программный фильтр и покажем, как отфильтровать сообщения окна по своим условиям (рис. 5-3).

Пример фильтра
Рис. 5-3. Пример условия программного фильтра

На примере окна информации о сообщениях: сначала откройте программный фильтр этого окна в разделе «Анализ» (рис. 5-4).

Открытие фильтра
Рис. 5-4. Открытие программного фильтра окна сообщений

Откройте скрипт программного фильтра, напишите условие отбора и скомпилируйте (рис. 5-5).

Скрипт фильтра
Рис. 5-5. Скрипт условия фильтрации

Запустите проект, примите сообщения и наблюдайте — фильтр работает (рис. 5-6).

Результат фильтрации
Рис. 5-6. Фильтр в действии

Видно, что все условия программного фильтра применились. В примере фильтровались канал, ID и биты данных структуры сообщения; так же можно отбирать по типу кадра, направлению приёма/передачи, длине данных (DLC), даже по изменению скорости передачи, значениям сигналов и периоду сообщений (с допуском) (рис. 5-7).

Другие условия
Рис. 5-7. Другие доступные условия отбора

Это были четыре типа фильтров TSMaster. Для разных сценариев подходят разные фильтры: выбирайте один или комбинируйте несколько по принципу повторяемости и удобства — так вы быстрее решите рабочие задачи.

Фильтрация передачи
Рис. 5-8. Идея фильтрации передаваемых сообщений

Бонус: всё вышесказанное касалось фильтров приёма. А как фильтровать передачу? Идея: через событие «перед отправкой» (pre-transmit) в C-скрипте отправлять ненужные сообщения в несуществующий канал — например, канал CH3 на рис. 5-8 фактически отсутствует.