С развитием промышленной автоматизации системам требуется эффективный и гибкий обмен данными, но разные протоколы и форматы сообщений создают проблемы совместимости. Программный шлюз TSMaster решает их через настройку в графическом интерфейсе без кода: гибкий маппинг и пересылку сообщений. В статье — две ключевые функции программного шлюза: пересылка сообщений и пересылка в обход события pre-transmit.
Ключевые слова: программный шлюз, пересылка сообщений, внедрение ошибок, Rolling Counter.
1. Обзор
Модуль программного шлюза — инструмент маппинга и пересылки сообщений с настройкой через графический интерфейс, без программирования. Он поддерживает создание списков пересылки сообщений с гибкой настройкой исходного и целевого каналов и пересылает сообщения в реальном времени. А с помощью генератора сигналов можно изменять данные в целевом канале — поддерживается несколько режимов сигналов. Модуль подходит для внедрения ошибок в сообщения, отправки изменяющихся сигналов Rolling Counter и других сценариев.
2. Типовые применения
Пример из промышленной автоматизации: на производственной линии автозавода программный шлюз соединяет разные устройства и датчики, собирает производственные данные в реальном времени и пересылает их в систему мониторинга. Одновременно через генератор сигналов он может симулировать ошибочные данные и внедрять их в процесс пересылки — для проверки реакции оборудования на сбои. Кроме того, шлюз умеет добавлять изменение сигнала Rolling Counter при отправке, что улучшает согласованную работу устройств (рис. 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. В окне передачи сообщений добавьте один или несколько кадров: можно добавить сырое сообщение напрямую или выбрать сообщение из базы данных, с указанием канала сообщения (рис. 3-1).
- Шаг 2. В добавленном сообщении выберите один или несколько сигналов и задайте тип генератора сигнала: синус, пила/импульс, диапазон значений, переключение, случайный, пользовательский или системная переменная. Если генератор не задан, сигнал остаётся в состоянии по умолчанию — «нет» (рис. 3-2).
- Шаг 3. В окне программного шлюза тем же способом добавьте сообщение с тем же ID и активируйте соответствующие сигналы. Без генератора сигналы пересылаемого сообщения не меняются; с генератором — отправляются по его настройкам. Также задайте исходный и целевой каналы сообщения. Например, если сообщение с ID 0x64 отправляется из окна передачи каналом 2 и принимается каналом 1, то в шлюзе исходный канал — канал 1, а целевой — канал 3 или 4 (рис. 3-3).



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



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


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

4. Сокращения
| DBC | Database CAN |
| CAN | Controller Area Network |
| CAN FD | CAN with Flexible Data-Rate |
| ID | Identifier |