С развитием промышленной автоматизации системам требуется эффективный и гибкий обмен данными, но разные протоколы и форматы сообщений создают проблемы совместимости. Программный шлюз TSMaster решает их через настройку в графическом интерфейсе без кода: гибкий маппинг и пересылку сообщений. В статье — две ключевые функции программного шлюза: пересылка сообщений и пересылка в обход события pre-transmit.

Ключевые слова: программный шлюз, пересылка сообщений, внедрение ошибок, Rolling Counter.

1. Обзор

Модуль программного шлюза — инструмент маппинга и пересылки сообщений с настройкой через графический интерфейс, без программирования. Он поддерживает создание списков пересылки сообщений с гибкой настройкой исходного и целевого каналов и пересылает сообщения в реальном времени. А с помощью генератора сигналов можно изменять данные в целевом канале — поддерживается несколько режимов сигналов. Модуль подходит для внедрения ошибок в сообщения, отправки изменяющихся сигналов Rolling Counter и других сценариев.

2. Типовые применения

Пример из промышленной автоматизации: на производственной линии автозавода программный шлюз соединяет разные устройства и датчики, собирает производственные данные в реальном времени и пересылает их в систему мониторинга. Одновременно через генератор сигналов он может симулировать ошибочные данные и внедрять их в процесс пересылки — для проверки реакции оборудования на сбои. Кроме того, шлюз умеет добавлять изменение сигнала Rolling Counter при отправке, что улучшает согласованную работу устройств (рис. 2-1).

Программный шлюз
Рис. 2-1. Типовое применение программного шлюза

3. Реализация функций программного шлюза

Рассматриваем две функции:

  • пересылка сообщений;
  • пересылка сообщений в обход события pre-transmit.

3.1. Пересылка сообщений

3.1.1. Подготовка проекта

Задача: сообщение с ID 0x64, отправленное каналом 2, принимается каналом 1, пересылается каналом 3 и принимается каналом 4.

Файлы: пример DBC — CAN_FD_Powertrain.dbc.

Расположение модуля: TSMaster → «Тест» → «Инструменты тестирования» → «Программный шлюз».

3.1.2. Порядок настройки пересылки

  1. Шаг 1. В окне передачи сообщений добавьте один или несколько кадров: можно добавить сырое сообщение напрямую или выбрать сообщение из базы данных, с указанием канала сообщения (рис. 3-1).
  2. Шаг 2. В добавленном сообщении выберите один или несколько сигналов и задайте тип генератора сигнала: синус, пила/импульс, диапазон значений, переключение, случайный, пользовательский или системная переменная. Если генератор не задан, сигнал остаётся в состоянии по умолчанию — «нет» (рис. 3-2).
  3. Шаг 3. В окне программного шлюза тем же способом добавьте сообщение с тем же ID и активируйте соответствующие сигналы. Без генератора сигналы пересылаемого сообщения не меняются; с генератором — отправляются по его настройкам. Также задайте исходный и целевой каналы сообщения. Например, если сообщение с ID 0x64 отправляется из окна передачи каналом 2 и принимается каналом 1, то в шлюзе исходный канал — канал 1, а целевой — канал 3 или 4 (рис. 3-3).
Добавление сообщения
Рис. 3-1. Добавление передаваемого сообщения
Генератор сигнала
Рис. 3-2. Настройка генератора сигнала
Настройка шлюза
Рис. 3-3. Настройка пересылки в программном шлюзе

3.1.3. Результат пересылки

После отправки в окне информации о сообщениях видны и нормально отправленные, и пересланные сообщения. Например, сигнал Engspeed сообщения с ID 0x64 отправляется каналом 2 в режиме «диапазон значений» и принимается каналом 1. Затем канал 3 пересылает принятое каналом 1 сообщение 0x64 в режиме «синус», и канал 4 его принимает — требуемый эффект достигнут (рис. 3-4 – 3-6).

Схема шлюза
Рис. 3-4. Принципиальная схема программного шлюза
Результат пересылки
Рис. 3-5. Сообщения после пересылки
Осциллограмма сигнала
Рис. 3-6. Осциллограмма сигнала

3.2. Пересылка в обход события pre-transmit

3.2.1. Порядок настройки

  1. Шаг 1. После настройки пересылки добавьте в C-мини-программе событие pre-transmit, изменяющее значение сигнала Engspeed сообщения с ID 0x64 (рис. 3-7).
  2. Шаг 2. Активируйте в программном шлюзе обход события pre-transmit (рис. 3-8).
Событие pre-transmit
Рис. 3-7. Добавление события pre-transmit
Обход pre-transmit
Рис. 3-8. Активация обхода события pre-transmit

3.2.2. Результат

До активации обхода значение сигнала Engspeed всегда равно 10 — величине, заданной в событии pre-transmit. После активации обхода на осциллограмме видно, что значение Engspeed сообщения 0x64 на каналах 3 и 4 вернулось к синусоиде, заданной в программном шлюзе, — эффект достигнут (рис. 3-9).

Результат обхода
Рис. 3-9. Пересылка в обход события pre-transmit

4. Сокращения

DBCDatabase CAN
CANController Area Network
CAN FDCAN with Flexible Data-Rate
IDIdentifier