返回首页

分布式控制系统

内置于 Lacerta 平台的监控级 DCS

核心理念

Lacerta DCS 的基本理念

DCS 基础

  • 容错集群与集群服务
  • 高效互联
  • 统一数据模型与对象结构
  • 响应式架构与订阅机制
  • 内置场景与计算风格

DCS 功能

  • 运行复杂的分散式逻辑
  • 设备远程控制
  • 功能组控制
  • 提高自动化程度
  • 减少操作员介入

监控级 DCS 能做什么

协调主机。 监控级 DCS 处理上层分布式控制任务——首先是协调主机,即集群客户端。

并非调节器的替代品。 它不执行诸如调节器之类的经典自动控制任务,但可以控制允许一定延迟的次要过程。

PLC 兼容性。 它与远程 I/O 模块无缝协作,并可协调集群客户端的设备节点(如 PLC),前提是具备所需的接口和 API。

监控级 DCS 拓扑

监控级 DCS 集群节点(R)通过(相对于集群的)客户端互联对接主机(C)。

DCS 组件对接示意图

核心
8
主机
16
集群互连
2
主机互连
2
分段
IC 01IC 02IC 03IC 04IC 05IC 06R01R02R03R04R05R06R07R08C01C02C03C04C05C06C07C08C09C10C11C12C13C14C15C16

物理实现方式

Lacerta DCS 如何对接 PLC 与远程 I/O 设备

集散控制系统层级

控制器互连远程 IO 互连集散控制系统互连集群互连R01R02C01C02C03C04C01 I/OC02 I/OC03 I/OC04 I/ORemote I/O 01Remote I/O 02Remote I/O 03Remote I/O 04

两级 DCS

监控级 DCS 的主机(客户端)本身可以是经典 DCS。

监控级 DCS(上层)

  • 协调下层 DCS 设备
  • 协调对接的子系统
  • 服务器上的复杂逻辑
  • 允许显著延迟

下层 DCS(下层)

  • 设备控制
  • 协调对接的 PLC
  • DCS 节点上的适度逻辑
  • 保证低延迟

统一的端到端 DCS

  • 协调所有设备
  • 统一命名空间
  • 统一编程语言
  • 端到端诊断

两级 DCS 的端到端逻辑

算法分布在端到端 DCS 的所有节点上,并在需要时提供并行化。

算法在节点间的流转

控制器互连远程 IO 互连集散控制系统互连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

两级 DCS 能做什么

多级算法

  • 算法由单一描述定义
  • 其各部分在不同节点上运行
  • 算法在集群之间拆分
  • 不同层级逻辑的分配
  • 端到端诊断

任意深度的 I/O

  • 在任意层级访问 I/O
  • 支持远程 I/O
  • 统一的访问与处理风格
  • 多重读取访问
  • 输出保护与锁定

两个运行环境,一种语言

  • 服务器上的 Lacerta DCS
  • 控制器上的 Multicontrol DCS
  • 端到端开发环境,统一语言
  • 一种语言,通用语法
  • 在节点之间迁移逻辑

Lacerta 监控级 DCS 与 Multicontrol 下层 DCS 实现端到端对接。俄罗斯软件登记册第 33304 号。