Пример синхронизации с некратными шагами синхронизации
Пусть пакет проектов содержит два проекта: A и B.
Пусть заданы следующие параметры расчета проектов::
в группе "Основные параметры":
проект A:
"Минимальный шаг" = "Максимальный шаг" = 0.5
"Шаг синхронизации задачи" = 3
проект B:
"Минимальный шаг" = "Максимальный шаг" = 0.01
"Шаг синхронизации задачи" = 2
в группе "Управление расчетом" для проектов A, B:
"Записывать сигналы только на шаге синхронизации в синхронизирующем потоке" =
"Да"
"Режим записи сигналов при синхронном обмене" = "Отложенная на шаг
синхронизации"
Схематическое представление синхронизации этих проектов в составе пакета проектов по шагам
представляется следующим образом:
В начальный момент времени t0 текущие модельные времена обоих проектов совпадают
и равны t0. Текущее время пакета совпадет с модельными временами всех проектов и
равно t0 (Рисунок 1).
Рис. 1. Первый круг синхронизации
На первом этапе проект A обгоняет проект B. Проект A пропустит свой
следующий цикл расчета, ожидая проект B. Таким образом, модельное время проекта
A равно t3, а модельное время проекта B равно t2. Текущее
время пакета равно t2 (Рисунок 2).
Рис. 2. Второй круг синхронизации
На втором круге синхронизации проект B осуществляет расчет до времени t4 и
обгоняет проект A (Рисунок 3). Так как проект A пропускал цикл расчета, его
модельное время не учитывается при расчете текущего времени пакета. Таким образом, текущее
время пакета равно t4. На следующем этапе проект A будет совершать расчет до
своего будущего шага синхронизации, равного сумме текущего времени пакета и шага
синхронизации проекта А, то есть до времени t7.
Рис. 3. Третий круг синхронизации
Так как модельное время проекта A меньше текущего пакетного времени, а модельное
время проекта B совпадает с ним, то оба проекта совершают очередной цикл расчета,
причем проект B досчитывает до времени t6, а проект А до времени
t7 и обгоняет B (Рисунок 4). Текущее время пакета равно t6.
Рис. 4. Четвертый круг синхронизации
Далее проект А опять пропускает цикл расчета, а проект В совершает расчет.
На данном этапе решатель проекта B не смог подобрать шаг таким образом, чтобы выйти
на заданный шаг синхронизации t8, проект B достигает времени t8-Δt.
Данная ситуация не является желательной, но в общем случае в SimInTech допускается
возможность для проекта завершить цикл расчёта с временем, отличающимся в большую или
меньшую сторону от его заданного шага синхронизации. Текущее время пакета равно
t8-Δt (Рисунок 5).
Рис. 5. Пятый круг синхронизации
Оба проекта совершают расчет. Проект А совершает расчет до времени t11-Δt
и достигает конечного времени расчета, пакетный расчет останавливается. Проект B
досчитывает до времени t10-Δt, не достигнув конечного времени расчета (Рисунок 6).
Рис. 6. Шестой круг синхронизацииДля данного примера изменение параметров "Режим записи сигналов при синхронном
обмене" на значение "Сразу после расчета" также приведет к получению значений
с будущих шагов, в том числе и для проекта A.