Модуль сигнального маппинга TSMaster сопоставляет переменные базы данных с системными переменными: после маппинга системная переменная эквивалентна переменной базы, и её чтение/запись равносильны чтению/записи переменной базы данных. Разбираем прямой маппинг, маппинг выражениями и практический пример пересчёта оборотов двигателя в скорость автомобиля.

Ключевые слова: сигнальный маппинг, системные переменные, маппинг выражениями, TSMaster.

Модуль маппинга в системе
Рис. 1-1. Место модуля сигнального маппинга в программе

Цель модуля — отделить логику верхнего прикладного уровня от переменных базы данных нижнего уровня. Если прикладной уровень работает с переменными базы напрямую, то при любом изменении базы из-за жёсткой связанности придётся править верхнеуровневые разработки — панели, тестовые скрипты; для крупных проектов это неприемлемо. С модулем маппинга верхний уровень работает не с переменными базы, а с замапленными системными переменными: при изменении базы достаточно заново замапить переменные на те же системные переменные, не трогая приложение.

1. Прямой маппинг

1.1. Путь к модулю

Модуль находится по пути «Simulation» → «Environment» → «Signal Mapping». Открыв его, нажмите кнопку активации в левом верхнем углу модуля (рис. 1-2).

Активация модуля
Рис. 1-2. Активация модуля сигнального маппинга

Выберите сигнал базы данных для маппинга — на примере базы CAN (рис. 1-3):

  1. Шаг 1. Выберите сигнал сообщения базы данных канала 1.
  2. Шаг 2. Выберите нужный сигнал, например «EngSpeed».
  3. Шаг 3. Правой кнопкой мыши выберите «Auto Map» («Создать маппинг автоматически»).
  4. Шаг 4. В списке целевых системных переменных маппинга автоматически создаётся целевая системная переменная — по умолчанию тип «Direct Mapping» (прямой маппинг).
  5. Шаг 5. После создания маппинга в «Simulation» → «System Variables» → «User Variables» («Список пользовательских переменных») автоматически появляется одноимённая системная переменная (рис. 1-4).
Создание маппинга
Рис. 1-3. Автоматическое создание маппинга сигнала
Системная переменная
Рис. 1-4. Созданная системная переменная

1.2. Три направления маппинга

Прямой маппинг — это сопоставление «один к одному». Направление можно выбрать из трёх вариантов под разные задачи (рис. 1-5):

  • двусторонняя передача (Bidirectional) — изменение системной переменной синхронизируется в сигнал, изменение сигнала — в системную переменную;
  • только из сигнала в системную переменную (Signal to SysVar) — изменение сигнала синхронизируется в системную переменную, обратная синхронизация не выполняется;
  • только из системной переменной в сигнал (SysVar to Signal) — изменение системной переменной синхронизируется в сигнал, обратная синхронизация не выполняется.
Направления маппинга
Рис. 1-5. Выбор направления маппинга

Порядок действий: ① выберите целевую системную переменную в записи списка маппинга; ② нажмите «Direction» («Направление маппинга»); ③ выберите направление; ④ нажмите «Set» («Установить»).

2. Маппинг выражениями

2.1. Описание

Выбранный маппинг можно переключить в режим «маппинг выражением» (Expression Mapping) и редактировать выражение: результат пользовательской формулы будет записываться в системную переменную. Аргументами могут быть константы, системные переменные, сигналы FlexRay, CAN и LIN.

TSMaster предоставляет список математических функций и выражений:

abs, acos, asin, atan, atan2, ceil, cos, cosh, e, exp, fac, floor, ln, log, log10, max, min, ncr, npr, pi, pow, sign, sin, sinh, sqrt, tan, tanh

Примеры выражений:

  • sqrt(x1n1.5 + x2n2.5)
  • x1 * 3 + x2 / 1.2 – 11.9
  • (1/(x1+1)+2/(x2+2)+3/(x3+3))
  • (x1 > 50) & ((x2 <30) |(x3 = 1)

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

Выберите пару маппинга и установите режим маппинга выражением; справа в окне редактируется метод вычисления (рис. 2-1):

Маппинг выражением
Рис. 2-1. Настройка маппинга выражением
  1. ① выберите целевую системную переменную маппинга;
  2. ② установите режим «Expression Mapping» (маппинг выражением);
  3. ③ кнопкой «+» добавьте аргументы (рядом — кнопки удаления аргумента, справки по выражениям и копирования C-кода текущего выражения);
  4. ④ отредактируйте формулу вычисления;
  5. ⑤ назначьте аргументам выражения значения: константа, системная переменная, сигнал FlexRay, CAN или LIN.

«Check Mapping» («Проверить маппинг») — после добавления и настройки списка маппинга выполните проверку, чтобы избежать недействительных связей. Кнопка «Configuration» автоматически активирует RBS-отправку соответствующих сигналов: если опция включена, сигналы из списка маппинга будут симулироваться и отправляться в режиме RBS (рис. 2-2).

RBS-отправка
Рис. 2-2. Автоактивация RBS-отправки сигналов

Настроенный список маппинга можно сохранить в файл конфигурации и импортировать (рис. 2-3): «Save Configuration» — экспорт текущих пар маппинга в локальный файл; «Import Configuration» — загрузка списка маппинга из ini-файла.

Сохранение конфигурации
Рис. 2-3. Сохранение и импорт конфигурации маппинга

3. Пример: пересчёт оборотов двигателя в скорость

Между скоростью автомобиля и оборотами двигателя есть известная зависимость: скорость (км/ч) = обороты × 60 × 3,14 × диаметр шины / (1000 × главная передача × передаточное число включённой передачи). Диаметр шины, главную передачу и передаточные числа берут из документации автомобиля; зная обороты двигателя, сигнальный маппинг вычислит скорость: CarSpeed = обороты × 60 × 3,14 × 0,724 / (1000 × 3,683 × 0,672).

Создайте в сигнальном маппинге целевую системную переменную CarspeedMappingFromEngSpeed, установите маппинг выражением и свяжите x1 с сигналом оборотов двигателя EngSpeed (рис. 3-1):

CarspeedMappingFromEngSpeed = x1*60*3.14*0.724/(1000*3.683*0.672)

Выражение скорости
Рис. 3-1. Выражение пересчёта скорости

После настройки выражения измените отправляемое значение EngSpeed на 1000 об/мин — маппинг автоматически вычислит скорость 55,1 км/ч (рис. 3-2).

Скорость 55.1
Рис. 3-2. EngSpeed = 1000 об/мин → 55,1 км/ч

Точно так же при EngSpeed = 2000 об/мин получим около 110,2 км/ч (рис. 3-3).

Скорость 110.2
Рис. 3-3. EngSpeed = 2000 об/мин → 110,2 км/ч

Системные переменные, полученные маппингом, напрямую доступны модулям Panel, тестирования сигналов, сравнения сигналов, C-мини-программам и графикам. Сигнальный маппинг — один из механизмов связи модулей TSMaster между собой, и его грамотное применение заметно повышает эффективность разработки проектов на базе TSMaster.