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):

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

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

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

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

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

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

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

2. Пример 1: LIN-диагностика — автоматическое назначение адресов
Перед тестом свечения RGB-светильнику обычно нужно автоматически назначить адрес, и только затем проверять цвет, яркость, читать версию и т.д.
Исходные данные: по протоколу автоназначения адресов LIN требуется последовательно отправить несколько диагностических сообщений 0x3C; в TSMaster это делается в режиме Single Frame. Сообщения автоназначения адресов для RGB-светильника:
- однократная отправка:
7F 06 B5 FF 7F 01 02 FF - однократная отправка:
7F 06 B5 FF 7F 02 02 01 - однократная отправка:
7F 06 B5 FF 7F 03 02 FF - однократная отправка:
7F 06 B5 FF 7F 04 02 FF
Практика: создайте эти сообщения в режиме Single Frame и отправьте строки 1–4 однократно сверху вниз — автоназначение адресов RGB выполнено (рис. 9).

3. Пример 2: вставка кадра функцией inject_lin_message
Типовой сценарий: симулируемый главный узел выполняет таблицу планировщика, и нужно, не останавливая её, вставить другой LIN-кадр — например 0x3C. Это делает функция inject_lin_message.
- Шаг 1. Создайте новый редактор C-скрипта, выберите «Событие клавиши» — например, клавишу «A» для вставки кадра (рис. 10).
- Шаг 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, "");


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

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

4. Симуляция подчинённого / слушающего LIN-узла
4.1. Подготовка аппаратного подключения
При симуляции подчинённого узла подавать питание на LIN-карту TOSUN не требуется.
4.2. Отправка ответного сообщения подчинённым узлом
Когда LIN-карта TOSUN симулирует подчинённый узел, главный узел (ЭБУ) должен отправлять заголовки (Header) таблицы планировщика — только тогда ответные сообщения подчинённого узла уходят корректно.
В примере канал LIN 1 в TSMaster симулирует главный узел с таблицей планировщика, а канал LIN 2 — подчинённый узел, отвечающий сообщением 0x10 (Tech_Info_RGB_Slave).
- Шаг 1. На канале LIN 1 симулируйте главный узел: в его таблице направление заголовка ответного сообщения подчинённого узла — «приём» (рис. 14).
- Шаг 2. После развёртывания видно, что заголовок сообщения подчинённого узла отправлен, а данные пусты (рис. 15).
- Шаг 3. На канале LIN 2 симулируйте подчинённый узел: ответное сообщение
0x10(Tech_Info_RGB_Slave) с направлением «передача», измените содержимое данных (рис. 16). - Шаг 4. Нажмите «Развернуть»: в окне сообщений LIN видно, что подчинённый узел успешно отправил ответ
0x10, и главный узел его принял (рис. 17).



