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

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

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


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


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


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


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


    Рис. 5. Пятый круг синхронизации
  6. Далее схема расчета повторяется: проект B совершает еще 2 цикла расчета, пока не догонит проект A (Рисунок 6, Рисунок 7). В момент времени t6 модельные времена обоих проектов совпадают, текущее время пакета равно t6.


    Рис. 6. Шестой круг синхронизации


    Рис. 7. Седьмой круг синхронизации
    Схема расчета повторяется пока пакетный расчет не будет остановлен по достижении конечного времени расчета хотя бы одним из проектов.

Влияние параметров на синхронизацию проектов в пакете проектов

Если для тех же проектов A и B изменить параметр "Режим записи сигналов при синхронном обмене" на значение "Сразу после расчета", то схематическое представление синхронизации этих проектов в составе пакета проектов не изменится, но запись рассчитанных значений в базу данных осуществляется на других шагах:
  1. На первом этапе проекты произведут запись в базу данных сразу после окончания расчета, то есть проект A запишет данные, рассчитанные на шаге t3, а проект B значения, рассчитанные на шаге t1.
  2. На следующем круге проект B начнет свой расчет, используя уже значения проекта A с шага t3, то есть будет использовать данные из будущего. Именно поэтому важно, чтобы шаги синхронизации проектов в пакете были согласованы между собой и параметры проектов были заданы корректно.
  3. Затем проект B догонит проект А, их модельные времена совпадут и будут равны t3. Проект В запишет данные, рассчитанные на шаге t3, которые будут использоваться проектом A на его следующем цикле расчета до времени t6.
  4. Проект В будет использовать данные проекта А, рассчитанные на шаге t3, при расчете до времени t4, а затем данные, записанные на шаге t6, то есть из будущего.
Если дополнительно изменить параметр "Записывать сигналы только на шаге синхронизации в синхронизирующем потоке" на значение "Нет", запись рассчитанных значений в базу данных будет осуществляться на всех шагах:
  1. Уже на первом этапе проект B будет использовать данные, рассчитанные проектом A на шагах до t3, то есть будет использовать данные из будущего. Проект B будет использовать эти данные пока не догонит A и пока проект A не начнет очередной цикл расчета.
  2. Далее, после шага t3, проект B будет использовать данные, рассчитанные проектом A на шагах до t6, пока опять не догонит проект A. Схема расчета будет повторяться до достижения конечного времени расчета.