На главную

Распределённая система управления

РСУ верхнего уровня, встроенная в платформу «Лацерта»

Основные идеи

Базовые идеи, заложенные в РСУ «Лацерта»

Основа РСУ

  • Отказоустойчивый кластер и кластерные сервисы
  • Эффективный интерконнект
  • Единая модель данных и структура объектов
  • Реактивная архитектура, механика подписки
  • Встроенные сценарии и стиль вычислений

Функции РСУ

  • Обслуживание сложной децентрализованной логики
  • Дистанционное управление устройствами
  • Функционально-групповое управление
  • Повышение уровня автоматичности
  • Снижение вовлечённости оператора

Что может РСУ верхнего уровня

Координация хостов. РСУ верхнего уровня решает задачи распределённого управления верхнего уровня — прежде всего координацию хостов, то есть клиентов кластера.

Не замена регулятору. Классические задачи автоматического управления, например регуляторы, она не решает — но может управлять второстепенными процессами, где допустима приемлемая задержка.

Совместимость с ПЛК. Прекрасно взаимодействует с модулями удалённого ввода/вывода и позволяет координировать узлы устройств клиентов кластера, например ПЛК, при наличии необходимых интерфейсов и API.

Топология РСУ верхнего уровня

Узлы кластера РСУ (R) верхнего уровня сопрягают хосты (C) с помощью клиентского (относительно кластера) интерконнекта.

Схема сопряжения компонентов РСУ

Ядра
8
Хосты
16
IC кластера
2
IC хостов
2
Сегментирование
IC 01IC 02IC 03IC 04IC 05IC 06R01R02R03R04R05R06R07R08C01C02C03C04C05C06C07C08C09C10C11C12C13C14C15C16

Как это устроено физически

Как РСУ «Лацерта» сопрягает ПЛК и устройства удалённого ввода/вывода

Уровни РСУ

IC контроллеровIC Remote IOIC РСУIC кластераR01R02C01C02C03C04C01 I/OC02 I/OC03 I/OC04 I/ORemote I/O 01Remote I/O 02Remote I/O 03Remote I/O 04

Двухуровневая РСУ

В качестве хостов (клиентов) РСУ верхнего уровня может быть классическая РСУ.

РСУ верхнего уровня (РСУ ВУ)

  • Координация устройств РСУ НУ
  • Координация сопряжённых подсистем
  • Сложная логика на серверах
  • Допускает существенную задержку

РСУ нижнего уровня (РСУ НУ)

  • Управление устройствами
  • Координация сопряжённых ПЛК
  • Умеренная логика на узлах РСУ
  • Гарантия низкой задержки

Единая сквозная РСУ

  • Координация всех устройств
  • Единое пространство имён
  • Единый язык программирования
  • Сквозная диагностика

Сквозная логика двухуровневой РСУ

Алгоритм распределяется по всем узлам сквозной РСУ. При этом обеспечивается параллелизация, если необходимо.

Прохождение алгоритма по узлам

IC контроллеровIC Remote IOIC РСУR01R02C01C02AI01AO01AI03AO03AI02AO02AI04AO04

Распределённый алгоритм

-------------------------------------------- @node C01
src = {AI01_0, AI01_1, AI03_2, AI03_3}        -- LIO ×2, LIO C02 ×2
dst = {AO01_0, AO01_1}                        -- LIO
x = read(src)                                 -- OP01 R
y = {f01(x), f02(x)}                          -- OP02 C
write(dst, y)                                 -- OP03 W
-------------------------------------------- @node C02
src = {AI03_0, AI03_1, AI01_2, AI01_3}        -- LIO ×2, LIO C01 ×2
dst = {AO03_0, AO03_1}                        -- LIO
x = read(src)                                 -- OP04 R
y = {f03(x), f04(x)}                          -- OP05 C
write(dst, y)                                 -- OP06 W
-------------------------------------------- @node R01
src = {AI02_0, AI02_1, AI04_2, AI04_3}        -- RIO ×2, RIO R02 ×2
dst = {AO02_0, AO02_1, AO04_2, AO04_3}        -- RIO
x = read(src)                                 -- OP07 R
y = {f05(x), f06(x), f07(x), f08(x)}          -- OP08 C
write(dst, y)                                 -- OP09 W
-------------------------------------------- @node R02
src = {AI04_0, AI04_1, AI02_2, AI02_3}        -- RIO ×2, RIO R01 ×2
dst = {AO04_0, AO04_1, AO02_2, AO02_3}        -- RIO
x = read(src)                                 -- OP10 R
y = {f09(x), f10(x), f11(x), f12(x)}          -- OP11 C
write(dst, y)                                 -- OP12 W
-------------------------------------------- @node C01
src = {AI01_2, AI01_3}                        -- LIO ×2
dst = {AO01_2, AO01_3}                        -- LIO
x = read(src)                                 -- OP13 R
z = {R02.ai04_0, R02.ai04_1}                  -- OP13 R  кеш R02
y = {f13(x, z), f14(x, z)}                    -- OP14 C
write(dst, y)                                 -- OP15 W
-------------------------------------------- @node C02
src = {AI03_2, AI03_3}                        -- LIO ×2
dst = {AO03_2, AO03_3}                        -- LIO
x = read(src)                                 -- OP16 R
z = {R01.ai02_0, R01.ai02_1}                  -- OP16 R  кеш R01
y = {f15(x, z), f16(x, z)}                    -- OP17 C
write(dst, y)                                 -- OP18 W

Управление таймингами

Если логика управления допускает параллельные алгоритмы без блокировок, это вполне можно реализовать.

Тайминги по узлам

публикацияAI01AI02AI03AI04R01OP07 [R]OP07 · R · AI02 · RIO, AI04 · RIO R02OP08 [C]OP08 · C · f05, f06, f07, f08OP09 [W]OP09 · W · AO02 · RIOOP07 [R]OP07 · R · AI02 · RIO, AI04 · RIO R02OP08 [C]OP08 · C · f05, f06, f07, f08OP09 [W]OP09 · W · AO02 · RIOR02OP10 [R]OP10 · R · AI04 · RIO, AI02 · RIO R01OP11 [C]OP11 · C · f09, f10, f11, f12OP12 [W]OP12 · W · AO04 · RIO, публикует ai04OP10 [R]OP10 · R · AI04 · RIO, AI02 · RIO R01OP11 [C]OP11 · C · f09, f10, f11, f12OP12 [W]OP12 · W · AO04 · RIO, публикует ai04C01OP01 [R]OP01 · R · AI01 · LIO, AI03 · LIO C02OP02 [C]OP02 · C · f01, f02OP03 [W]OP03 · W · AO01 · LIOOP13 [R]OP13 · R · AI01_2/3 · LIO, кеш R02.ai04OP14 [C]OP14 · C · f13, f14OP15 [W]OP15 · W · AO01_2/3 · LIOOP01 [R]OP01 · R · AI01 · LIO, AI03 · LIO C02OP02 [C]OP02 · C · f01, f02OP03 [W]OP03 · W · AO01 · LIOC02OP04 [R]OP04 · R · AI03 · LIO, AI01 · LIO C01OP05 [C]OP05 · C · f03, f04OP06 [W]OP06 · W · AO03 · LIOOP16 [R]OP16 · R · AI03_2/3 · LIO, кеш R01.ai02OP17 [C]OP17 · C · f15, f16OP18 [W]OP18 · W · AO03_2/3 · LIOOP04 [R]OP04 · R · AI03 · LIO, AI01 · LIO C01OP05 [C]OP05 · C · f03, f04OP06 [W]OP06 · W · AO03 · LIO0102030405060708090100110120130140150

Что может двухуровневая РСУ

Многоуровневый алгоритм

  • Алгоритм задаётся одним описанием
  • Его части обслуживают разные узлы
  • Алгоритм разделяется между кластерами
  • Распределение логики разного уровня
  • Сквозная диагностика

Ввод/вывод любой глубины

  • Доступ к вводу/выводу на любом уровне
  • Поддержка Remote I/O
  • Единый стиль доступа и обработки
  • Множественный доступ к чтению
  • Защита и блокировка вывода

Две среды, один язык

  • РСУ «Лацерта» на серверах
  • РСУ Мультиконтроль на контроллерах
  • Сквозная среда разработки, единый язык
  • Единый язык, универсальный синтаксис
  • Перенос логики между узлами

РСУ верхнего уровня «Лацерта» имеет сквозное сопряжение с РСУ нижнего уровня «Мультиконтроль». Запись в реестре ПО Минцифры № 33304.