Пример синхронизации с некратными шагами синхронизации

Пусть пакет проектов содержит два проекта: A и B.

Пусть заданы следующие параметры расчета проектов::
  • в группе "Основные параметры":
    • проект A:
      • "Минимальный шаг" = "Максимальный шаг" = 0.5
      • "Шаг синхронизации задачи" = 3
    • проект B:
      • "Минимальный шаг" = "Максимальный шаг" = 0.01
      • "Шаг синхронизации задачи" = 2
  • в группе "Управление расчетом" для проектов A, B:
    • "Записывать сигналы только на шаге синхронизации в синхронизирующем потоке" = "Да"
    • "Режим записи сигналов при синхронном обмене" = "Отложенная на шаг синхронизации"
Схематическое представление синхронизации этих проектов в составе пакета проектов по шагам представляется следующим образом:
  1. В начальный момент времени t0 текущие модельные времена обоих проектов совпадают и равны t0. Текущее время пакета совпадет с модельными временами всех проектов и равно t0 (Рисунок 1).


    Рис. 1. Первый круг синхронизации
  2. На первом этапе проект A обгоняет проект B. Проект A пропустит свой следующий цикл расчета, ожидая проект B. Таким образом, модельное время проекта A равно t3, а модельное время проекта B равно t2. Текущее время пакета равно t2 (Рисунок 2).


    Рис. 2. Второй круг синхронизации
  3. На втором круге синхронизации проект B осуществляет расчет до времени t4 и обгоняет проект A (Рисунок 3). Так как проект A пропускал цикл расчета, его модельное время не учитывается при расчете текущего времени пакета. Таким образом, текущее время пакета равно t4. На следующем этапе проект A будет совершать расчет до своего будущего шага синхронизации, равного сумме текущего времени пакета и шага синхронизации проекта А, то есть до времени t7.


    Рис. 3. Третий круг синхронизации
  4. Так как модельное время проекта A меньше текущего пакетного времени, а модельное время проекта B совпадает с ним, то оба проекта совершают очередной цикл расчета, причем проект B досчитывает до времени t6, а проект А до времени t7 и обгоняет B (Рисунок 4). Текущее время пакета равно t6.


    Рис. 4. Четвертый круг синхронизации
  5. Далее проект А опять пропускает цикл расчета, а проект В совершает расчет. На данном этапе решатель проекта B не смог подобрать шаг таким образом, чтобы выйти на заданный шаг синхронизации t8, проект B достигает времени t8-Δt. Данная ситуация не является желательной, но в общем случае в SimInTech допускается возможность для проекта завершить цикл расчёта с временем, отличающимся в большую или меньшую сторону от его заданного шага синхронизации. Текущее время пакета равно t8-Δt (Рисунок 5).


    Рис. 5. Пятый круг синхронизации
  6. Оба проекта совершают расчет. Проект А совершает расчет до времени t11-Δt и достигает конечного времени расчета, пакетный расчет останавливается. Проект B досчитывает до времени t10-Δt, не достигнув конечного времени расчета (Рисунок 6).


    Рис. 6. Шестой круг синхронизации
    Для данного примера изменение параметров "Режим записи сигналов при синхронном обмене" на значение "Сразу после расчета" также приведет к получению значений с будущих шагов, в том числе и для проекта A.