CAPE-OPEN的未来:COBIA

前言

流程工业的运营公司通常会在领先的商业仿真技术之一上投入大量资金。然而,所有仿真工具都有其优缺点。这些通常反映了对仿真软件最初开发的具体工艺行业的关注。例如,为石油行业开发的仿真软件包可能在某些特殊化学系统建模方面存在薄弱;专注于气和油系统的建模环境可能无法处理多个液相和/或固体的形成。

尽管随着时间推移,仿真供应商不断提升和增强其建模技术的能力,但通常能力缺口依然存在。运营公司可以通过用其他地方改进的组件替换其工具中的相关组件来弥补这些能力缺口。这些改进的组件通常源自运营公司内部,包含与特定工艺相关的重要知识产权,而商业建模供应商不易获得这些。或者,改进的组件可能来自专注于细分领域建模的公司,例如热交换器的严谨建模,或热力学和物理性质的建模。

历史上,第三方组件集成到商业仿真环境时,通常需要编写专有软件接口,这些接口“包裹”新组件,使其能够与主机建模环境通信。开发此类接口的难易度因主机建模环境的“开放程度”以及相关通信协议的文档程度而有显著差异。随着建模环境新版本的采用,定制组件接口不可避免地难以维护。此外,一个环境的组件包装器无法与不同仿真厂商的替代环境兼容。用户添加子程序,无论是单元作还是热力学模型,都是组件集成的另一种方法,但在将子程序从一个模拟器迁移到另一个模拟器时也存在类似困难。

因此,开发标准化的即插即用能力有望带来多项显著的业务效益:

  • 由于接口的标准化,运营公司和软件供应商的维护成本降低。
  • 持续记录会员社区的经验教训及界面相关改进。
  • 能够在所有符合 CAPE-OPEN 标准的仿真环境及其他建模工具(如 MATLAB 和 Microsoft Excel)中应用一致的仿真组件。
  • 能够选择并整合技术上最合适的模型,以满足特定的建模任务,并达到所需的保真度。

市面上有多种商业仿真程序支持过程建模。通常,运营公司会使用一种或多种商业工具来支撑其建模活动。此外,许多运营公司还维护自己的内部软件,以模拟商业工具未完全覆盖的细分应用。每个仿真程序都提供一个环境,允许构建工艺流程图并整合工艺流体热力学。CAPE-OPEN 项目正式将此类建模程序称为过程建模环境(PME),要求 PME 用户能够轻松将 PME 与其他建模工具连接,无需开发定制接口。为此,PME 会配备一个 CAPE-OPEN “插件”,允许将任何 CAPE-OPEN 组件添加到建模环境中。

这也就引出了 CAPE-OPEN 协议。

CAPE-OPEN 简介

CAPE-OPEN 包含一系列规范,旨在扩展过程仿真技术的应用范围。CAPE-OPEN 规范规定了一套软件接口,允许给定过程建模环境(PME)与第三方过程建模组件(PMC)之间即插即用互作。

欧盟资助的 CAPE-OPEN 项目于 1997 年成立,此前 1995 年首次尝试失败。该项目参与者来自多家工艺工业运营公司(拜耳、巴斯夫、英国石油、杜邦、法国石油研究所、Elf阿基坦和帝国化学工业),以及 15 个合作伙伴,包括软件供应商(Aspen Technology、Hyprotech Ltd、QuantiSci 和 SimSci)以及学者(伦敦帝国理工学院、图卢兹国立理工学院和亚琛工业大学)。该项目的目标是展示一套标准规范接口的可行性,以实现建模环境与第三方建模组件之间的即插即用互作性。

继 1999 年 CAPE-OPEN 项目完成并成功实现即插即用互作概念验证后,提供了单元作(稳态)和热力学组件的接口规范。

第二个项目 Global CAPE-OPEN 伴随着一个非营利组织 CO-LaN 成立,旨在将界面规范转化为可供业界广泛使用的产品,负责维护和支持现有规范,并继续开发更多 CAPE-OPEN 接口规范。

然而第二个项目进展也不是很顺利,在 2000 年至 2015 年之间不温不火,开发也基本上趋于停滞,直到 2016 年,第三个项目 COBIA 问世。

一种新的中间件:CAPE-OPEN Binary Interop Architecture (CAPE-OPEN 二进制互操作架构),是 CAPE-OPEN 演进的下一步。COBIA 包括注册组件、二进制互作性标准以及中间件,作为软件组件之间的桥梁。

COBIA 被视为 CAPE-OPEN 通往未来的桥梁。

COBIA 简介

COBIA 全称为:CAPE-OPEN Binary Interop Architecture,在 CO-LaN 的畅想中,任何带有 CAPE-OPEN 接口的建模环境,无论是单元运算还是热力学软件,都能与任何 CAPE-OPEN 建模组件通信,无需编写额外的接口软件。

CAPE-OPEN 规范定义了过程仿真环境的软件接口,基于 Microsoft 标准 COM/DCOM 和通用对象请求代理架构(CORBA)。因此,CAPE-OPEN 规范支持基于 COM 和 CORBA 的模拟器。这些规范遵循面向对象的方法,并使用统一建模语言(UML)开发和规范。正式用例被开发以定义终端用户需求。用例总结了在 CAPE-OPEN 建模环境中安装和应用 CAPE-OPEN 组件时涉及的活动和交互。一旦开发完成,用例为测试新的 CAPE-OPEN 组件和环境提供了有效的程序。

简而言之,COBIA 是一个:

  1. C++ 库 (C++ Library) :它是一个用 C++ 语言编写的软件库。
  2. CAPE-OPEN 标准的实现 (Implementation of CAPE-OPEN specifications) :它的核心目标是为 CAPE-OPEN 规范提供一个易于使用的实现。
  3. 简化开发 (Simplifies Development) :COBIA 的主要目的是帮助开发者更容易地创建符合 CAPE-OPEN 标准的组件 (Process Modelling Components) 或集成这些组件的流程模拟环境 (Process Modelling Environments, PMEs)。
  4. 抽象底层技术 (Abstracts Underlying Technologies) :CAPE-OPEN 标准最初是基于二进制互操作技术(如 COM、CORBA 或 Java RMI)实现的。COBIA 的一个关键优势在于它 隐藏了这些底层技术的复杂性 ,使得开发者无需深入了解 COM/CORBA 等细节即可实现 CAPE-OPEN 接口。
  5. 跨平台 (Cross-Platform) :COBIA 最初为 Windows 平台设计,但通过使用 OLE-CORBA 桥接(例如 JacORB)或基于 Python 的实现,它也支持 Linux 等其他平台。
  6. 开源项目 (Open-Source Project) :COBIA 是一个开源项目,遵循 GPL v3 许可证,由 CAPE-OPEN 社区开发和维护。

第 6 点待定,因为截至 2025 年 6 月 4 日最新 v1.2.1.2 版本,CO-LaN 对 COBIA 的源代码依然有限制,只有 CO-LaN 会员才可以访问。)

总的来说,COBIA 是一个开源的 C++ 库,它封装了 CAPE-OPEN 标准的底层二进制互操作机制(如 COM/CORBA),从而极大地简化了开发者创建 CAPE-OPEN 兼容组件或流程模拟环境的复杂性。

现状与未来

COBIA 的开发被 CO-LaN 规划为三个阶段:

  • COBIA 项目的第一阶段为 COBIA 提供了概念验证。第一阶段展示了该功能,并提供了测试套件(PME),供任何方用于测试基于 COBIA 的 CAPE-OPEN 热力学兼容热力学软件包的实现。通过 COM/COBIA 互操作(COMBIA),测试套件的热力学服务器可通过 COM 设备 PME 访问,且COM PMC 可由测试套件中的物流对象部分加载。

  • COBIA 项目的第二阶段允许在 C++ 中开发 PME 和 PMC。IDL 解析器和存根代码生成器简化了 Windows 操作系统纯 C++ 环境中的开发,允许开发者创建和实现自定义接口。作为这一阶段的一部分,对应核心接口的 IDL 被形式化,并用于依赖 COBIA 实现 CAPE-OPEN 互作性的完整 PME 和 PMC 中。

  • COBIA 项目第三阶段在不同平台上实现了 COBIA 的应用(跨平台)。在迁移到其他平台时,需要开发针对目标平台(语言/操作系统)的平台专用代码。操作系统专用代码包括文件处理和字符串编码。语言特定代码包括非母语的存根生成器和编组。作为这一阶段的一部分,实现了 .NET 互操作性。

CO-LaN 在 2016 年 10 月完成第一阶段的迁移,在 2020 年 10 月正式发布 COBIA v1.2.0.0 版本,同月也联合 KBC、HTRI 公司发布了基于 COBIA 的兼容的软件,第三阶段自 2021 年 2 月开始,至今仍在继续开发,最新的动态是 2025 年 6 月 4 日发布了最新的 v1.2.1.2 版本,带来了一大波更新和问题修复。

开发指南

这部分暂时先不写了,因为一直忙的顾不上,主要是在开发自己的论坛和 CAPE-OPEN 的 .NET 兼容,不过看 COBIA 这样子,我估计是不用开发我的了,之后只需要用 CO-LaN 提供的 SDK 直接进行开发就行了。

不过还是贴上一些思路和示例吧:

COBIA 官方 Wiki:COBIA (CAPE-OPEN Binary Interop Architecture)

SDK 下载和开发日志:Downloads – COBIA

代码库(需要会员): COBIA Code Git

AmsterCHEM 的开发向导:AmsterCHEM - COBIA 类向导

Visual Studio COBIA 扩展: COBIA Class Wizard - Visual Studio Marketplace

比较重要的一个:

这是我在 Github 上找的一个 COBIA 开发的多流股换热器示例。

COBIA MultiStream Heat Exchanger:ahmedsabriz/COBIA-PMC: CAPE-OPEN Unit Operation using COBIA SDK

畅想:

我未来有计划通过 C# 和 Rust 开发一个 CAPE-OPEN 兼容层,降低了开发难度,又提高了安全性(做做梦)。

扩展阅读:

About CAPE-OPEN | the CAPE-OPEN Laboratories Network

ProcessNet 中的 CAPE-OPEN |CAPE-OPEN 实验室网络

CAPE-OPEN 二元互作架构(COBIA) |CAPE-OPEN 实验室网络

CORBA - 维基百科,自由的百科全书

统一建模语言 - 维基百科,自由的百科全书

COBIA (CAPE-OPEN Binary Interop Architecture)