В разработке и тестировании автомобильных ЭБУ совместная симуляция — ключевой способ повысить эффективность тестирования и обеспечить стабильность системы. TSMaster как комплексный инструмент симуляции и тестирования в сочетании с профессиональными возможностями ECUTEST позволяет строить эффективные автоматизированные тесты. В статье — как импортировать плагин TSMasterAPI и разбор основных API-функций.
Ключевые слова: TSMasterAPI, ECUTEST, API, SIL, совместная симуляция.
1. Плагин TSMasterAPI
Для пользователей ECUTEST TSMaster предоставляет интерфейсы программного управления ПО TSMaster и аппаратурой; в ECUTEST видны соответствующие имена интерфейсов. Интерфейс управления UI TSMaster на верхнем уровне для SIL-симуляции называется TOSUN: TSMaster SIL Kit; интерфейс управления аппаратными продуктами TOSUN для SIL-симуляции — TOSUN: Hardware SIL Kit (рис. 1-1).

1.1. Импорт TSMasterAPI
1.1.1. Развёртывание плагина. При установке TSMaster официально предоставляется среда плагина ECUTEST: пользователь выбирает, устанавливать ли плагин, — тем же способом, что и среды C++\Python (рис. 1-2). Если хочется получить плагин как можно раньше, можно запросить пакет плагина у TOSUN и вручную поместить его в ПО ECUTEST (рис. 1-3).


1.1.2. Импорт плагина в рабочую область. При создании workspace в ECUTEST отметьте «Show workspace settings» → «Copy tutorial files» → в выпадающем списке выберите «TSMasterAPI» → «OK» — в рабочей области появятся «TOSUN: TSMaster SIL Kit» и «TOSUN: Hardware SIL Kit» (рис. 1-4).

1.2. TOSUN: TSMaster SIL Kit
1.2.1. Создание test bench configuration. Сначала создайте «test bench configuration» → «create new tool host» → «Local» — в окне tool host появится «TOSUN: TSMaster SIL Kit». Щёлкните правой кнопкой «TOSUN: TSMaster SIL Kit» → «Add tool» → в поле «TSMaster_project_path» укажите путь к проекту TSMaster и сохраните.
- Шаг 1. Создайте «test bench configuration» (рис. 1-5).
- Шаг 2. «Create new tool host» (рис. 1-6).
- Шаг 3. «TOSUN: TSMaster SIL Kit» → «Add tool» (рис. 1-7).
- Шаг 4. «Сохранить» (рис. 1-8).
- Шаг 5. «Запустить» (рис. 1-9).
- Шаг 6. «Connect tool» (рис. 1-10).
- Шаг 7. Вызов интерфейсов (рис. 1-11).







1.3. TOSUN: Hardware SIL Kit
1.3.1. Создание test bench configuration. Создайте «test bench configuration» → «create new tool host» → «Local» — в окне tool host появится «TOSUN: Hardware SIL Kit». Щёлкните правой кнопкой → «Add tool» → в поле «TSMaster_App_Name» укажите имя приложения TSMaster и сохраните. Шаги те же: создание конфигурации (рис. 1-5), tool host (рис. 1-6), Add tool (рис. 1-12), сохранение (рис. 1-8), запуск (рис. 1-13), Connect tool (рис. 1-14), вызов интерфейсов (рис. 1-15).




2. Описание интерфейсов TSMasterAPI
2.1. TOSUN: TSMaster SIL Kit
| Функция | Описание | Параметры | Возвращаемое значение | Пример |
|---|---|---|---|---|
start_simulation() | RPC-клиент запускает симуляцию на стороне сервера TSMaster; вызывается после создания RPC-клиента | нет | ==0 — успех; другие значения — неудача | start_simulation() |
simulation_is_running() | Возвращает, запущена ли симуляция на сервере TSMaster; вызывается после создания RPC-клиента | нет | ==0 — успех; другие значения — неудача | ret = simulation_is_running() |
stop_simulation() | RPC-клиент останавливает симуляцию TSMaster; вызывается после создания RPC-клиента | нет | ==0 — успех; другие значения — неудача | stop_simulation() |
get_sysvar_value(SysvarName: str) -> (errorcode, double) | Получение значения системной переменной; вызывается после активации RPC-клиента | SysvarName — имя системной переменной | Ret[0] — код ошибки (==0 успех); Ret[1] — значение сигнала | ret, value = get_sysvar_value('Var0') |
set_sysvar_value(SysvarName: str, value: double) -> errorcode | Установка значения системной переменной; вызывается после активации RPC-клиента | SysvarName — имя переменной; Value — устанавливаемое значение | ==0 — успех; другие значения — неудача | set = set_sysvar_value('Var0', 100) |
get_cansignal_value(cansignalName: str) -> (errorcode, double) | Получение значения CAN-сигнала; вызывается после активации RPC-клиента | cansignalName — адрес сигнала | Ret[0] — код ошибки (==0 успех); Ret[1] — значение сигнала | ret, value = get_cansignal_value('0/CAN_FD_Powertrain/Engine/ABSdata/CarSpeed') |
set_cansignal_value(cansignal: str, value: double) -> errorcode | Установка значения CAN-сигнала; вызывается после активации RPC-клиента | cansignalName — адрес сигнала; Value — устанавливаемое значение | ==0 — успех; другие значения — неудача | set_cansignal_value('0/CAN_FD_Powertrain/Engine/ABSdata/CarSpeed', 100) |
get_linsignal_value(linsignalName: str) -> (errorcode, double) | Получение значения LIN-сигнала; вызывается после активации RPC-клиента | LinsignalName — адрес сигнала | Ret[0] — код ошибки (==0 успех); Ret[1] — значение сигнала | ret, value = get_linsignal_value('0/LIN_Powertrain/Engine/ABSdata/CarSpeed') |
set_linsignal_value(linsignal: str, value: double) -> errorcode | Установка значения LIN-сигнала; вызывается после активации RPC-клиента | LinsignalName — адрес сигнала; Value — устанавливаемое значение | ==0 — успех; другие значения — неудача | set_linsignal_value('0/LIN_Powertrain/Engine/ABSdata/CarSpeed', 100) |
get_frsignal_value(frsignalName: str) -> (errorcode, double) | Получение значения FlexRay-сигнала; вызывается после активации RPC-клиента | frsignalName — адрес сигнала | Ret[0] — код ошибки (==0 успех); Ret[1] — значение сигнала | ret, value = get_frsignal_value('0/FR_Powertrain/Engine/ABSdata/CarSpeed') |
set_frsignal_value(frsignal: str, value: double) -> errorcode | Установка значения FlexRay-сигнала; вызывается после активации RPC-клиента | frsignalName — адрес сигнала; Value — устанавливаемое значение | ==0 — успех; другие значения — неудача | set_frsignal_value('0/FR_Powertrain/Engine/ABSdata/CarSpeed', 100) |
2.2. TOSUN: Hardware SIL Kit
| Функция | Описание | Параметры | Возвращаемое значение | Пример |
|---|---|---|---|---|
set_hardware_config() -> error_code | Конфигурация аппаратного устройства для текущей программы; вызывается до подключения, при неизменной конфигурации каналов можно не выполнять | нет | ==0 — успех; другие значения — неудача | set_hardware_config() |
connect() -> error_code | Подключение аппаратного устройства; вызывается после настройки аппаратных каналов | нет | ==0 — успех; другие значения — неудача | connect() |
disconnect() -> error_code | Отключение аппаратного устройства | нет | ==0 — успех; другие значения — неудача | disconnect() |
send_msg(AMsg: TLIBCAN | TLIBCANFD | TLIBLIN | TLIBFlexRay) -> error_code | Однокадровая отправка сообщения; вызывается после подключения аппаратуры | AMsg — объект сообщения | ==0 — успех; другие значения — неудача | AMsg = TLIBCAN(0x123) |
send_cyclic_can_msg(AMsg: TLIBCAN | TLIBCANFD, ATime) -> error_code | Циклическая отправка сообщений CAN/CAN FD; вызывается после подключения аппаратуры | AMsg — объект сообщения; ATime — период в мс (1 = 1 мс, 100 = 100 мс) | ==0 — успех; другие значения — неудача | AMsg = TLIBCAN(0x123) |
recv_can_msg(AChnidx, ACount, IsIncludeTx) -> AMsgList | Приём сообщений CAN; вызывается после подключения аппаратуры | AChnidx — канал приёма; ACount — максимальное число сообщений; IsIncludeTx — включать ли отправленные сообщения | AMsgList — список принятых сообщений | AMsgs = recv_can_msg(0, 100, False) |
recv_lin_msg(AChnidx, ACount, IsIncludeTx) -> AMsgList | Приём сообщений LIN; вызывается после подключения аппаратуры | AChnidx — канал приёма; ACount — максимальное число сообщений; IsIncludeTx — включать ли отправленные сообщения | AMsgList — список принятых сообщений | AMsgs = recv_lin_msg(0, 100, False) |
recv_flexray_msg(AChnidx, ACount, IsIncludeTx) -> AMsgList | Приём сообщений FlexRay; вызывается после подключения аппаратуры | AChnidx — канал приёма; ACount — максимальное число сообщений; IsIncludeTx — включать ли отправленные сообщения | AMsgList — список принятых сообщений | AMsgs = recv_flexray_msg(0, 100, False) |