Aspen HYSYS自动化

作者 叶师兄 · 版本 2.3.0 · 更新于 2026-10-19 15:27 ·281 KB

通过原生 COM 接口自动化 Aspen HYSYS V11,从零搭建并求解简单流程、严格精馏塔、胺包吸收塔及含循环反应的全流程,并落盘 .hsc 工况文件。

AspenHYSYS化工流程模拟COM自动化精馏塔Python
将提示词发送给你的 AI,即可安装该 Skill
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_6eed38f8/aspen-hsysy-automation。

✓已通过基础校验

名称、分类、版本与作者信息完整,安装包与文档齐备。

✓可直接使用

提供 Markdown 文档与配置示例,下载后按文档说明使用即可。

Skill 详情

Aspen HYSYS 自动化(V11 原生 COM 配方)

Aspen HYSYS 自动化(V11 原生 COM 配方)

全部结论在 Aspen HYSYS V11.0 (37.0) 上用 hysys.tlb 类型库 + 真实工况逐节点实测。
全部结论在 Aspen HYSYS V11.0 (37.0) 上用 hysys.tlb 类型库 + 真实工况逐节点实测。
动手前先读 references/v11_com_recipes.md——那里是验证过的配方,本文件是索引 + 铁律。
动手前先读 references/v11_com_recipes.md——那里是验证过的配方,本文件是索引 + 铁律。
逐版本原始证据(实验输出、对照变体、旧结论推翻记录)在 references/changelog.md,日常不必读。
逐版本原始证据(实验输出、对照变体、旧结论推翻记录)在 references/changelog.md,日常不必读。

0.0 ★ 能力边界(先看清能做什么)

0.0 ★ 能力边界(先看清能做什么)

能不能 内容 证据
Can or Cannot Content Evidence
✅ 简单模块从零搭建并连通:混合器/泵/加热/冷却/闪蒸/三相分离/阀/三通/管段/压缩机/膨胀机/组分分流器/Gibbs/循环/SET/BALANCE/电子表格 examples/02 真机全链路收敛
✅ 简单模块从零搭建并连通:混合器/泵/加热/冷却/闪蒸/三相分离/阀/三通/管段/压缩机/膨胀机/组分分流器/Gibbs/循环/SET/BALANCE/电子表格 examples/02 真机全链路收敛
✅ 严格塔(精馏/吸收/萃取)从零搭成可收敛塔:入口必须是 LoadColumnTemplate(<真实 .col/.tpl 文件路径>),它一次建好塔板段/冷凝器/再沸器 + 内部流股 + 子求解器 + 进料产品端口(+ 列规格);随后修进料端口(§3.8.4)。v2.3.0 已做到与 GUI 手工工况逐位一致 苯-甲苯 30 板塔从零收敛(examples/18);乙苯-苯乙烯 68 板真空塔从零搭出,顶/底组成与教程 .hsc 偏差 0.0(examples/26,§3.8.7)
✅ 严格塔(精馏/吸收/萃取)从零搭成可收敛塔:入口必须是 LoadColumnTemplate(<真实 .col/.tpl 文件路径>),它一次建好塔板段/冷凝器/再沸器 + 内部流股 + 子求解器 + 进料产品端口(+ 列规格);随后修进料端口(§3.8.4)。v2.3.0 已做到与 GUI 手工工况逐位一致 苯-甲苯 30 板塔从零收敛(examples/18);乙苯-苯乙烯 68 板真空塔从零搭出,顶/底组成与教程 .hsc 偏差 0.0(examples/26,§3.8.7)
✅ 胺包(酸性气体-化学溶剂)吸收塔从零搭成并求解:走 MEA-Absorber.tpl 模板 + cf.Pressures=<list> 压力剖面 + 母流程直读产品。曾经被误判为"COM 不可解",v2.1.0 已推翻 天然气脱硫脱碳塔从零收敛,H₂S/CO₂ 脱除率 99.6%/98.0%(examples/24,columns.md §3.2)
✅ 胺包(酸性气体-化学溶剂)吸收塔从零搭成并求解:走 MEA-Absorber.tpl 模板 + cf.Pressures=<list> 压力剖面 + 母流程直读产品。曾经被误判为"COM 不可解",v2.1.0 已推翻 天然气脱硫脱碳塔从零收敛,H₂S/CO₂ 脱除率 99.6%/98.0%(examples/24,columns.md §3.2)
✅ 整条工艺(含塔 + 循环 + 反应)从空白工况从零搭成并收敛 第八章三案例全部达标(§3.9),examples/19~23
✅ 整条工艺(含塔 + 循环 + 反应)从空白工况从零搭成并收敛 第八章三案例全部达标(§3.9),examples/19~23
✅ 反应集:在空白模板阶段继承自带目标反应的捐献工况 → 会话里只改参数 13 个对照变体定案(§3.9.7)
✅ 反应集:在空白模板阶段继承自带目标反应的捐献工况 → 会话里只改参数 13 个对照变体定案(§3.9.7)
⚠️ cf.Operations.Add 手工装配塔内结构:能造出三个对象名,但未接入塔内部网络(cond.LiquidStream 直接 E_FAIL、求解后产品全 -32767) 6 轮实证(§3.8.1)
⚠️ cf.Operations.Add 手工装配塔内结构:能造出三个对象名,但未接入塔内部网络(cond.LiquidStream 直接 E_FAIL、求解后产品全 -32767) 6 轮实证(§3.8.1)
⚠️ 对含塔工况用 COM 改进料:视工况而定。异丙苯全流程改苯进料正常重收敛(examples/17);个别工况(三氯乙烷萃取 .hsc)会失效(examples/13)→ 改完做 §3.8.3 三项校验 examples/13 / examples/17
⚠️ 对含塔工况用 COM 改进料:视工况而定。异丙苯全流程改苯进料正常重收敛(examples/17);个别工况(三氯乙烷萃取 .hsc)会失效(examples/13)→ 改完做 §3.8.3 三项校验 examples/13 / examples/17
✅ 含塔流程「打开即用」:打开 GUI 已收敛的含塔工况 → 读取/另存/改非塔侧 examples/13 / examples/15
✅ 含塔流程「打开即用」:打开 GUI 已收敛的含塔工况 → 读取/另存/改非塔侧 examples/13 / examples/15
✅ 简捷塔 shdistop「打开即用」:打开 GUI 已配好的含简捷塔工况 → 读产品 / 重解 / 另存 乙苯-苯乙烯双塔跑通(examples/25,§3.10)
✅ 简捷塔 shdistop「打开即用」:打开 GUI 已配好的含简捷塔工况 → 读产品 / 重解 / 另存 乙苯-苯乙烯双塔跑通(examples/25,§3.10)
✅ 简捷塔「骨架继承」(v2.3.0 新增):从含简捷塔的工况剥离其余单元 → 得到「只剩简捷塔 + 必要流股」的骨架 → 之后任意改进料/负荷,纯度自动保持(塔本体的回收率类规格仍不可改) 乙苯-苯乙烯骨架进料 ×1.5 → 顶/底产品精确 ×1.5、纯度逐位不变(§3.10.6)
✅ 简捷塔「骨架继承」(v2.3.0 新增):从含简捷塔的工况剥离其余单元 → 得到「只剩简捷塔 + 必要流股」的骨架 → 之后任意改进料/负荷,纯度自动保持(塔本体的回收率类规格仍不可改) 乙苯-苯乙烯骨架进料 ×1.5 → 顶/底产品精确 ×1.5、纯度逐位不变(§3.10.6)
❌ 简捷塔的列级规格 COM 不可读写(塔板数/进料板/回流比/关键组分回收率/操作压力)——运行时接口就是通用 _IOperation v2.3.0 三层证据:① 反向 GetTypeInfo(0) = _IOperation(严格塔 = ColumnOp);② Classification = 8 = oc_ShortCutColumn(严格塔 = 9 = oc_SubFlowsheet);③ 可解析成员 19 vs 35。另:GetUserVariable / OpenStorage / Moniker 三条私有存储通道全死(§3.10.1)
❌ 简捷塔的列级规格 COM 不可读写(塔板数/进料板/回流比/关键组分回收率/操作压力)——运行时接口就是通用 _IOperation v2.3.0 三层证据:① 反向 GetTypeInfo(0) = _IOperation(严格塔 = ColumnOp);② Classification = 8 = oc_ShortCutColumn(严格塔 = 9 = oc_SubFlowsheet);③ 可解析成员 19 vs 35。另:GetUserVariable / OpenStorage / Moniker 三条私有存储通道全死(§3.10.1)
❌ 不能靠 COM 从零定义一座可求解的简捷塔:Add(name,'shdistop') 建得出对象,但规格填不进去 §3.10
❌ 不能靠 COM 从零定义一座可求解的简捷塔:Add(name,'shdistop') 建得出对象,但规格填不进去 §3.10

结论:「简单流程」与「严格塔」都能用 COM 从零搭(塔走 .col 模板入口,§3.8.4)。
结论:「简单流程」与「严格塔」都能用 COM 从零搭(塔走 .col 模板入口,§3.8.4)。
另:「空白工况」不能靠 SimulationCases.Add() 造,要"捡"一张干净现成 .hsc 当模板(§3.8.5)。
另:「空白工况」不能靠 SimulationCases.Add() 造,要"捡"一张干净现成 .hsc 当模板(§3.8.5)。

⚡ 九条铁律(先记住,能省 90% 的调试)

⚡ 九条铁律(先记住,能省 90% 的调试)

  1. Operations.Add(名字, 内部类型名) 是两个参数,类型名是 HYSYS 内部小写串
  2. Operations.Add(名字, 内部类型名) 是两个参数,类型名是 HYSYS 内部小写串
  3. 从零建工况不能 SimulationCases.Add()(新工况里物性包拿不到组分 →
  4. 从零建工况不能 SimulationCases.Add()(新工况里物性包拿不到组分 →
  5. 热负荷/压力路径各设备不同:heaterop/coolerop 用 Duty(且先挂 EnergyStream);
  6. 热负荷/压力路径各设备不同:heaterop/coolerop 用 Duty(且先挂 EnergyStream);
  7. ★ 任何「模拟」任务都必须落盘 .hsc(含求解结果),否则无法在 HYSYS 里复核。
  8. ★ 任何「模拟」任务都必须落盘 .hsc(含求解结果),否则无法在 HYSYS 里复核。
  9. ★ 已连接单元不可在 .hsc 内改接:单元一旦接好 FeedStream/ProductStream(或 mixer 的
  10. ★ 已连接单元不可在 .hsc 内改接:单元一旦接好 FeedStream/ProductStream(或 mixer 的
  11. ★ 不要写 mixerop.EqualizePressures(头号静默杀手):两股进料压力不同时写它 →
  12. ★ 不要写 mixerop.EqualizePressures(头号静默杀手):两股进料压力不同时写它 →
  13. ★ 反应集只能「继承」不能「新建」:ReactionSets.Add() 建的对象**一律抛
  14. ★ 反应集只能「继承」不能「新建」:ReactionSets.Add() 建的对象**一律抛
  15. ★ 裸建单元必须显式写「零压降」:fs.op('E-100','heaterop') 裸建时 PressureDrop
  16. ★ 裸建单元必须显式写「零压降」:fs.op('E-100','heaterop') 裸建时 PressureDrop
  17. ★ 塔 CurrentIteration 恒 0 = "塔拒绝迭代",先查两件事:
  18. ★ 塔 CurrentIteration 恒 0 = "塔拒绝迭代",先查两件事:

0. 环境

0. 环境

pip install pywin32
  • 仅 Windows;HYSYS V8+ 为 64 位 → 必须 64 位 Python。
  • 仅 Windows;HYSYS V8+ 为 64 位 → 必须 64 位 Python。
  • 冷启动约 30 s:DispatchEx 后必须轮询 app.Version 直到可读。
  • 冷启动约 30 s:DispatchEx 后必须轮询 app.Version 直到可读。
  • 脚本崩溃会残留 AspenHysys.exe,下次跑前先清:
  • 脚本崩溃会残留 AspenHysys.exe,下次跑前先清:

0.1 ★ 换机器第一件事:定位 HYSYS

0.1 ★ 换机器第一件事:定位 HYSYS

不要硬编码 ProgID 和安装路径。 先跑探测:

不要硬编码 ProgID 和安装路径。 先跑探测:

python scripts/hysys_discovery.py             # 人类可读报告
python scripts/hysys_discovery.py --json      # 给脚本消费
python scripts/hysys_discovery.py --refresh   # 忽略缓存重扫

三级探测(可信度从高到低):① 注册表 ProgID HKCR\HYSYS.Application[.Vxx.y] → CLSID →

LocalServer32 → exe(唯一能确定 COM 连得上);② 卸载项(识别内部版本号 V11=37.0);

③ 文件系统 Program Files\AspenTech、X:\Aspen V* 找 AspenHysys.exe(兜底诊断)。
结果缓存 7 天(skill 目录 .hysys_installs.json)。

三级探测(可信度从高到低):① 注册表 ProgID HKCR\HYSYS.Application[.Vxx.y] → CLSID →

LocalServer32 → exe(唯一能确定 COM 连得上);② 卸载项(识别内部版本号 V11=37.0);

③ 文件系统 Program Files\AspenTech、X:\Aspen V* 找 AspenHysys.exe(兜底诊断)。
结果缓存 7 天(skill 目录 .hysys_installs.json)。

HysysClient 默认就开着自动探测,正常写代码不用管: HysysClient 默认就开着自动探测,正常写代码不用管:
h = HysysClient(visible=False)          # 自动挑最优版本
h = HysysClient(version=11)             # 锁定 V11
h = HysysClient(progid="HYSYS.Application.V12.0")
h.install_report()                      # 打印版本/路径/ProgID/兼容提示

连接失败会自动换候选 ProgID 重试。⚠️ 若报告里全是 [未注册],说明装了但 COM 没注册:
手工启动一次 HYSYS,或在安装目录执行 AspenHysys.exe /RegServer。
版本兼容(compat_notes(major)):V8/V9 类型名与 V10+ 基本一致;V12+ 若 op.Duty 取不到
改用 op.DutyValue 或 op.EnergyStream.HeatFlow;V15 未逐节点实测,遇不匹配照 recipes §4.1 逐个试。

连接失败会自动换候选 ProgID 重试。⚠️ 若报告里全是 [未注册],说明装了但 COM 没注册:
手工启动一次 HYSYS,或在安装目录执行 AspenHysys.exe /RegServer。
版本兼容(compat_notes(major)):V8/V9 类型名与 V10+ 基本一致;V12+ 若 op.Duty 取不到
改用 op.DutyValue 或 op.EnergyStream.HeatFlow;V15 未逐节点实测,遇不匹配照 recipes §4.1 逐个试。

1. 快速开始

1. 快速开始

```python
from hysys_client import HysysClient
from basic_modules import Flowsheet

with HysysClient(r"C:\Cases\demo.hsc", visible=False) as h:
fb = Flowsheet(h)
h.solver(False) # 批量改动前

下载后解压即可使用

文件

文件名
c7188df3bfeaf5eeac6909bfe3f904d2.zip
包大小
281 KB
SHA256
4e868f1df24867110b87abedb7e2bfc27a127457474fe8e96477e99cb5f99836
来源
本地
存储
COS

评论

暂无评分,欢迎发表第一条评价

还没有评论,来抢沙发吧

    版本历史

    1. v2.3.0最新2026-10-19
    梦马论坛-以梦为马,不负韶华

    化工人的交流乐园

    联系我们

    • 投诉建议 相关侵权、举报、投诉及建议等,请发 E-mail:admin@meng.horse
    返回顶部