LIN (Local Interconnect Network) — недорогой протокол последовательной связи на базе UART/SCI (Universal Asynchronous Receiver-Transmitter / Serial Communication Interface). Применяется в автомобилях, бытовой технике, офисном оборудовании. В статье — подробный порядок работы с функциями симуляции главного и подчинённого LIN-узлов в TSMaster на оборудовании TOSUN.

Ключевые слова: LIN, LDF, главный узел, подчинённый узел, таблица планировщика, inject_lin_message.

1. Симуляция главного LIN-узла на оборудовании TOSUN

1.1. Подготовка аппаратного подключения

В режиме симуляции главного узла LIN-аппаратуре TOSUN требуется внешнее питание — так уровень сигнала LIN-шины совпадает с уровнем тестируемого устройства. Схема подключения (рис. 1):

Схема подключения LIN
Рис. 1. Схема подключения для симуляции главного узла

1.2. Порядок действий в TSMaster

Дальнейшие шаги показаны на примере, где TSMaster симулирует главный LIN-узел, а подчинённым узлом выступает LED-светильник.

1.2.1. Импорт базы данных LDF

Добавьте LDF-файл светильника через базу данных. После добавления видно, что в LDF среди «узлов» есть master и RGB_Slave, а также заданы таблица планировщика главного узла, сообщения и сигналы (рис. 2).

Узлы в LDF-файле
Рис. 2. Узлы и таблица планировщика в LDF

1.2.2. Создание окна передачи LIN и настройка главного узла

Отметьте «Режим главного узла», выберите таблицу планировщика Run_normal и симулируемый узел master — обе строки сообщений таблицы будут отмечены. Теперь можно нажать «Развернуть» и запустить таблицу планировщика (рис. 3).

Настройка главного узла
Рис. 3. Настройка главного узла в окне передачи LIN

Внимание: следите за направлением сообщений главного и подчинённого узлов в таблице планировщика (рис. 4):

  • направление сообщений симулируемого главного узла — «передача»;
  • направление ответных сообщений подчинённого узла — «приём».

То есть сообщение 0x02 — управляющее, от главного узла к RGB-подчинённому, направление «передача»; сообщение 0x10 — обратная связь от RGB-подчинённого к главному, направление «приём».

Направления сообщений
Рис. 4. Направления сообщений в таблице планировщика

1.2.3. Мониторинг сообщений LIN

В штатном случае после запуска таблицы планировщика в окне сообщений LIN видно содержимое обоих сообщений — значит, подчинённый узел обменивается данными с главным и отвечает (рис. 5).

Мониторинг сообщений LIN
Рис. 5. Штатный обмен: данные сообщений на шине

Нештатный случай: если данные ответа подчинённого узла пусты, узел не отвечает — проверьте правильность подключения LIN-шины и питание подчинённого узла (рис. 6).

Подчинённый узел не отвечает
Рис. 6. Подчинённый узел не отвечает: данные пусты

1.2.4. Изменение содержимого управляющего сообщения главного узла

В окне передачи LIN выберите сообщение главного узла, например 0x02, и измените сырое или физическое значение сигналов — так сообщению присваиваются новые значения (рис. 7).

Изменение значений сигналов
Рис. 7. Изменение значений сигналов сообщения

Меняя значения сигналов трёх цветов RGB, можно получать разные цвета свечения — примеры на рис. 8.

Свечение RGB-светильника
Рис. 8. Свечение RGB-светильника при разных значениях сигналов

2. Пример 1: LIN-диагностика — автоматическое назначение адресов

Перед тестом свечения RGB-светильнику обычно нужно автоматически назначить адрес, и только затем проверять цвет, яркость, читать версию и т.д.

Исходные данные: по протоколу автоназначения адресов LIN требуется последовательно отправить несколько диагностических сообщений 0x3C; в TSMaster это делается в режиме Single Frame. Сообщения автоназначения адресов для RGB-светильника:

  1. однократная отправка: 7F 06 B5 FF 7F 01 02 FF
  2. однократная отправка: 7F 06 B5 FF 7F 02 02 01
  3. однократная отправка: 7F 06 B5 FF 7F 03 02 FF
  4. однократная отправка: 7F 06 B5 FF 7F 04 02 FF

Практика: создайте эти сообщения в режиме Single Frame и отправьте строки 1–4 однократно сверху вниз — автоназначение адресов RGB выполнено (рис. 9).

Single Frame: автоназначение адресов
Рис. 9. Автоназначение адресов через Single Frame

3. Пример 2: вставка кадра функцией inject_lin_message

Типовой сценарий: симулируемый главный узел выполняет таблицу планировщика, и нужно, не останавливая её, вставить другой LIN-кадр — например 0x3C. Это делает функция inject_lin_message.

  1. Шаг 1. Создайте новый редактор C-скрипта, выберите «Событие клавиши» — например, клавишу «A» для вставки кадра (рис. 10).
  2. Шаг 2. Пример кода:

TLIN f0 = {0,0x0,0x1,8,0x3C,0x0,0,0,{0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
com.inject_lin_message(&f0);
app.wait(10, "");

Событие клавиши для вставки кадра
Рис. 10. Событие клавиши «A» для вставки кадра
Код вставки кадра
Рис. 11. Пример кода вставки кадра
  1. Шаг 3. Скомпилируйте и запустите C-скрипт. При работающей развёрнутой таблице планировщика нажмите «A» — в окне сообщений LIN видно отправку кадра 0x3C (рис. 12).
Отправка кадра 0x3C
Рис. 12. Вставленный кадр 0x3C в окне сообщений

Совет — быстрое создание C-кода LIN-кадра: создайте новый LIN-кадр в таблице планировщика, щёлкните правой кнопкой и выберите «копировать как C-скрипт» — код кадра попадёт в скрипт (рис. 13).

Копирование кадра как C-скрипта
Рис. 13. Копирование кадра как C-скрипта

4. Симуляция подчинённого / слушающего LIN-узла

4.1. Подготовка аппаратного подключения

При симуляции подчинённого узла подавать питание на LIN-карту TOSUN не требуется.

4.2. Отправка ответного сообщения подчинённым узлом

Когда LIN-карта TOSUN симулирует подчинённый узел, главный узел (ЭБУ) должен отправлять заголовки (Header) таблицы планировщика — только тогда ответные сообщения подчинённого узла уходят корректно.

В примере канал LIN 1 в TSMaster симулирует главный узел с таблицей планировщика, а канал LIN 2 — подчинённый узел, отвечающий сообщением 0x10 (Tech_Info_RGB_Slave).

  1. Шаг 1. На канале LIN 1 симулируйте главный узел: в его таблице направление заголовка ответного сообщения подчинённого узла — «приём» (рис. 14).
  2. Шаг 2. После развёртывания видно, что заголовок сообщения подчинённого узла отправлен, а данные пусты (рис. 15).
  3. Шаг 3. На канале LIN 2 симулируйте подчинённый узел: ответное сообщение 0x10 (Tech_Info_RGB_Slave) с направлением «передача», измените содержимое данных (рис. 16).
  4. Шаг 4. Нажмите «Развернуть»: в окне сообщений LIN видно, что подчинённый узел успешно отправил ответ 0x10, и главный узел его принял (рис. 17).
Таблица главного узла
Рис. 14. Таблица планировщика главного узла: заголовок — «приём»
Заголовок отправлен, данных нет
Рис. 15. Заголовок отправлен, данные пусты
Настройка подчинённого узла
Рис. 16. Подчинённый узел: сообщение 0x10, направление «передача»
Ответ подчинённого узла
Рис. 17. Ответ 0x10 успешно отправлен и принят главным узлом