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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1. Описание

Выбранный маппинг можно переключить в режим «маппинг выражением» и редактировать выражение: результат пользовательской формулы будет записываться в системную переменную. Аргументами могут быть константы, системные переменные, сигналы 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. ② установите режим «маппинг выражением»;
  3. ③ кнопкой «плюс» добавьте аргументы (рядом — кнопки удаления аргумента, справки по выражениям и копирования C-кода текущего выражения);
  4. ④ отредактируйте выражение вычисления;
  5. ⑤ назначьте аргументам выражения значения: константа, системная переменная, сигнал FlexRay, CAN или LIN.

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

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

Настроенный список маппинга можно сохранить в файл конфигурации и импортировать (рис. 2-3): «Сохранить конфигурацию» — экспорт текущих пар маппинга в локальный файл; «Импорт конфигурации» — загрузка списка маппинга из 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.