Продолжаем знакомство с модулем автоматизации TSMaster. В разработке, если одна и та же логика многократно используется в разных сценариях, первое, что приходит в голову, — оформить её в функцию для переиспользования. В статье — методы переиспользования модулей автоматизации: параметризация и вынос в библиотеку.

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

1. Управление сигналом передачи: формирование импульса

  1. Шаг 1. Откройте папку проекта, найдите папку database в папке Demo и перетащите демонстрационный файл базы в TSMaster. Откройте симуляцию шины, отметьте автозапуск и все узлы, чтобы симуляция работала автоматически. Откройте окна Trace и график, перетащите интересующий сигнал передачи (gear) в график.
  2. Шаг 2. Перейдите в модуль автоматизации и нажмите Enter, чтобы добавить действие (рис. 1).
  3. Шаг 3. Первое действие — ожидание 1 с: задайте 1000 мс, сообщение не заполняйте (тогда окно READ не появляется). Второе действие — установить передачу на 2: выберите свойство чтения/записи сигнала, правой кнопкой укажите наш CAN-сигнал передачи, подтвердите и задайте значение 2. Третье действие — ожидание 3 с: скопируйте первое действие (копировать/вставить) и замените 1000 на 3000. Четвёртое — передача в 0: скопируйте действие «gear = 2» под wait и замените 2 на 0. Последнее — снова ожидание 1 с.
  4. Шаг 4. Нажмите F9 для запуска. В графике отчётливо видно изменение передачи 0 → 2 (пауза 3 с) → 0 (рис. 2).
Последовательность действий
Рис. 1. Последовательность действий формирования импульса
Импульс сигнала передачи
Рис. 2. Импульс сигнала передачи в графике

2. Изменение ширины и высоты импульса

Функция — это не только вызов: содержимое нужно параметризовать, например изменять ширину и высоту импульса.

  1. Шаг 1. Вернитесь в модуль и добавьте две переменные — высоту и ширину. В списке переменных добавьте две переменные типа double, назовите их time и value (коротко t и v); умолчание time — 3000 (те самые 3 с), value — 2 (рис. 3).
  2. Шаг 2. Откройте страницу свойств и щёлкните по пустому месту блок-схемы — выбраны свойства модуля. Внизу есть раздел «параметры уровня модуля»: щёлкните правой кнопкой и добавьте группу параметров. Переименуйте первую группу в «short», правой кнопкой по ней — «добавить параметр»: в диалоге уже выбраны наши две переменные, нажмите OK — добавлены два подчинённых параметра, которые можно произвольно менять как параметры уровня модуля (рис. 4).
  3. Шаг 3. Например, в «short» задайте время 1000 мс и v = 3. Добавьте вторую группу: правой кнопкой по первой — «копировать выбранное», вставьте в пустом месте, переименуйте в «long», задайте t = 5000 и v = 5. Созданы две группы параметров — короткая и длинная задержки (рис. 5).
  4. Шаг 4. Переключитесь на представление модуля: внизу появились два параметризованных входа — короткая и длинная задержки. Теперь свяжите код с параметрами: вернитесь к действию «gear = 2», откройте двойным щелчком — значение проверки зашито как 2; выберите локальную переменную value — gear стал динамическим. Имя действия можно поменять, например «set gear». Время ожидания свяжите с локальной переменной t — обе переменные привязаны к программе (рис. 6).
  5. Шаг 5. Выберите «short» и нажмите F9 — программа выполнится с короткой задержкой (1 с, пик 3). Выберите «long» в списке модулей и нажмите F9 — программа выполнится с длинной задержкой (5 с, максимум 5). Это и есть параметризация модуля (рис. 7). Наборов параметров может быть сколько угодно — так одна и та же логика в тестах управляется разными входными данными.
Переменные модуля
Рис. 3. Добавление переменных time и value
Группа параметров
Рис. 4. Добавление группы параметров модуля
Две группы параметров
Рис. 5. Группы параметров short и long
Привязка параметров
Рис. 6. Привязка действий к локальным переменным
Запуск с разными параметрами
Рис. 7. Запуск с параметрами short и long

3. Переиспользование модуля автоматизации

  1. Шаг 1. Оформите модуль как библиотеку. Переименуйте модуль в «set gear». В списке модулей правой кнопкой создайте подмодуль «caller» — вызывающий модуль. На странице модулей щёлкните правой кнопкой по «set gear» и переместите его в библиотеку кода: внизу разверните «статическую библиотеку кода» — там появился «set gear». Плюс статической библиотеки: её нельзя случайно изменить — добавленный код хранится постоянно и доступен для вызова из модулей выше (рис. 8).
  2. Шаг 2. Свяжите вызов с библиотекой. Вернитесь в точку входа функции caller, нажмите Ctrl+Enter, создайте группу действий, выберите её, откройте свойства и справа найдите функцию связи с подмодулем — свяжите с библиотекой «set gear». Группа действий связана с библиотечным файлом.
  3. Шаг 3. Параметры библиотеки. Две переменные внутри модуля библиотеки автоматически не создаются — в модуле caller добавьте переменные с теми же именами: две переменные double t и v. Их значения можно менять произвольно — так реализуется параметризация библиотеки. Например, t = 500 и v = 1; запустите caller — после выполнения gear станет 1, а длительность задержки — 500 мс (рис. 9).
  4. Шаг 4. Многократный вызов. Просто скопируйте группу действий (Ctrl+C, Ctrl+V) и снова нажмите F9 — увидите повторные вызовы; в каждом вызове можно менять переменные, чтобы результаты отличались. Например, t = 3000, v = 5, F9 — новая программа выполняется с другими параметрами. Так реализованы модуль и полная параметризация (рис. 10).
Перенос в библиотеку кода
Рис. 8. Перенос модуля в статическую библиотеку кода
Вызов библиотеки
Рис. 9. Вызов библиотечного модуля из caller
Многократный вызов
Рис. 10. Многократный вызов с разными параметрами