基于COM技术的MATLAB与HYSYS通信

2022-09-10

引言

HYSYS软件是世界著名油气加工模拟软件工程公司开发的大型专家系统软件。该软件分动态和稳态两大部分。其动态和稳态主要用于油田地面工程建设设计和石油石化炼油工程设计计算分析。其动态部分可用于指挥原油生产和储运系统的运行[1]。MATLAB是matrix和laboratory两个词的组合, 意为矩阵工厂, 是由美国Math Works公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将集成了数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能。本文介绍如何利用MATLAB进行HY-SYS二次开发, 从而为过程模拟与优化提供便利。

MATLAB与HYSYS数据交互

com技术原理

在利用Mat LAB及其工具箱分析HYSYS工况模拟数据时, 大量的数据需要在两者间反复多次传输, 依靠手工输入不仅效率极低, 而且很难保证不产生输入错误。基于COM技术的HY-SYS控制, 国内有些零星报道, 但没有关于Mat LAB与HYSYS通信的报道。本文在参照帮助文件Aspen HYSYS Customization Guide[1], 使用基于COM组件的程序设计方法实现了MatLAB对HYSYS的控制。

组件化程序设计方法[2]继承并发展了面向对象程序设计方法。依据组件化设计方法, 一个大的应用程序通常由多个称为组件的模块构成, 各个组件间均有一些接口, 各组件通过这些接口通信完成实际任务。这样设计的模块在功能上具有一定的独立性, 但又能协同工作, 各模块可并行同时开发, 开发完毕组装即可得到完整的应用系统, 便于软件的开发、维护与重用。Object Linking and Embedding, 即对象连接与嵌入, 简称OLE技术。OLE不仅是桌面应用程序集成, 而且还定义和实现了一种允许应用程序作为软件“对象” (数据和对数据进行操作的函数的集合) 彼此进行“连接”的机制, 这种连接机制和协议称为组件对象模型 (COM) 。

Active X组件, 可以分为以下六种类型:自动化服务器、自动化控制器、Active X控件、Active X文档、COM对象、Active X容器[3]。自动化 (Automation) 不是独立于COM的, 而是建立在COM基础上的。一个自动化服务器实际上就是一个实现了IDispatch接口的COM组件。而一个自动化控制器则是一个通过IDispatch接口与自动化服务器进行通信的COM客户。自动化控制器不会直接调用自动化服务器实现的那些函数, 而是通过IDispatch接口中的成员函数实现对服务器中函数的间接调用[4]。自动化服务器是一种可以由其它应用程序编程驱动的组件。自动化控制器是那些使用和操纵自动化服务器的应用程序, 它们不但可以在进程内访问自动化服务器, 而且可以在本地或远程方式访问自动化服务器。

HYSYS组件对象模型及其调用

HYSYS中开放了超过340个Automation对象, 这些对象集合包含了超过5000种属性和方法。在使用Automation对象时, 确定合适的对象, 获取感兴趣的属性和方法较困难。HYSYS自动化接口的主要对象成树状结构, 跟对象为Application, 下设Unit Conversion Set Manage及Simulation Cases对象, 这些对象进一步细分直到每一个流程, 每一个设备, 每个电子表格。因此可以通过Matlab active X库函数连接到HYSYS, 并逐级调用这些对象。

Mat LAB与HYSYS进行数据传递过程中需以HYSY电子表格 (spreadsheet) 为中介。下图即为Mat LAB与HYSYS通信时使用的电子表单 (Spreadsheet) , 图中将每个对象的相关参数放置在一起, 便于识别。在数据量更大的情况下, 可以专门添加注释单元格以表明对应单元格所显示变量的类型。利用HYSYS电子表格, 可以访问HYSYS流程模拟中所有的过程变量, 还可以根据计算需要添加公式、函数以及逻辑操作, 显示出其强大的功能。变量的导入或导出意味着数据可以在模拟环境与电子表格间自由传递, 模拟环境中的任何改变立刻能够反应在电子表格中, 反之亦然。模拟环境中任何单元格的内容可以导入到电子表格当中, 任何电子表单元格的内容也可导出给模拟环境中的规定变量, 但是任何电子表单元格的内容不能同时导入导出。HY-SYS电子表可以进行数学及逻辑运算, 功能与普通电子表相似, 熟悉EXCEL的用户很快就可掌握。

结语

HYSYS在石油化工模拟、仿真领域已获广泛应用。HYSYS拥有开放的工业设计标准, 越来越多的研究者基于此二次开发, 利用其组件或拓展其功能。为将HYSYS的强大仿真、模拟能力与MATLAB强大的数值分析、优化能力结合起来, 本文介绍了基于COM技术的MATLAB与HYSYS通信机制。

COM技术使开发的工业标准软件开发成为可能, 便于软件重复使用, 升级和功能拓展。文中介绍了COM组件技术的原理。运用此原理, 分析了ANSYS组件对象模型的对象层次结构。本文所介绍的原理和方法对使用MATLAB进行HYSYS的二次开发具有参考价值。

摘要:本文介绍了COM技术的原理, 分析了HYSYS的组件对象层次模型, 介绍了MATLAB调用HYSYS的主要技术。本文对使用MATLAB进行HYSYS二次开发具有参考价值。

关键词:COM,MATLAB,HYSYS,二次开发

参考文献

[1] Hysys A.Aspen HYSYS customization guide[J].Aspen Technology Inc., Burlington, MA, USA.2010.

[2] 潘爱民.COM原理与应用[M].清华大学出版社, 1999.

[3] 杨晓红, 朱庆生.组件化程序设计方法及组件标准[J].重庆大学学报 (自然科学版) .2001 (06) :120-123.

[4] 沈小燕, 王乘.COM/DCOM接口技术及其在MATLAB中的应用[J].计算机工程与设计.2002, 23 (8) :58-61.

上一篇:图书资料建设的高效化探究下一篇:希腊神话与中国神话的比较