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

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

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

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




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

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

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


5.2. Преимущества
Когда стоит использовать программный фильтр? Сначала поймём, чем он отличается от остальных трёх:
- фильтрация выполняется на программном уровне, условия можно детализировать вплоть до отдельного бита данных;
- подходит для редких, особых случаев отбора;
- конфигурация полностью настраивается под свою задачу и допускает повторное использование;
- комбинируется с другими фильтрами — высокая совместимость.
5.3. Сложности
Программный фильтр — это, по сути, фильтр, который вы пишете сами: нужно знать синтаксис C-скриптов и соответствующие структуры, порог входа выше, чем у остальных фильтров. Но благодаря готовым примерам достаточно базового знания синтаксиса C-скриптов, чтобы фильтр заметно повысил эффективность работы и помог в решении ключевых задач.
5.4. Пример
Настроим программный фильтр и покажем, как отфильтровать сообщения окна по своим условиям (рис. 5-3).

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

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

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

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

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

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