当前位置:首页>python>CC+DS-V4-flash 通过Python操纵专业化工软件小试牛刀

CC+DS-V4-flash 通过Python操纵专业化工软件小试牛刀

  • 2026-10-11 10:08:20
CC+DS-V4-flash 通过Python操纵专业化工软件小试牛刀
本文仅代表本人业余阅读与思考后观点,与现服务及服务过的公司无关,与文中涉及的单位亦无利益相关, 如无明示也不构成任何推荐意见,仅供讨论及拍砖
上周写过一篇笔记,引起朋友圈不少共鸣~~作为自测”AI年龄“不到35~~如果有这个类似心理年龄、健康年龄的指数的话,我相信这不是“登味”,而是对“超英赶美”AI热浪的一点冷思考。建立在物理化学、代数方程 、常微分方程乃至PDE方程的“三传一反”的化学工程技术 ,暂时还没法被再大的大语言模型取代。
“永远年轻、永远热泪盈眶”--我的一个中学同学的签名,我的“心理年龄”大约也还很年轻,保持不成熟也是一件不容易的事。但在健身房测试仪上的“健康年龄”比生理年龄还要大上2年,也是让人无可奈何的KPI不合格。
Claude Code 不能取代 Aspen Plus,但可以成为资深化工工程师的高效助手
这半年工作之余一直在用Mac Air干专业相关AI,确实极其方便--和iPhone/iPad无缝同步。但是糟糕的是主要工程专业软件都不支持。为了不纸上谈兵,安装了最新的claude desktop并用开发者模式连在deepseek v4上 (cc for windows要去下载.msix文件230多MB安装).....看能否试通agents操纵专业工程软件这条路。
我就问一这么一句话:
"I have AspenPlus HYSYS installed in this computer, now I want to "operate" it by you, how to do it?"
CC在deepseek-v4 flash模型加持下反复的trail-error, 基本上自主工作了将近四个小时(当中手动点了“approve"十数次),写代码、自动运行代码、修正错误~~把该踏的坑都踏完了,终于可以操纵Hysys, 我让CC把经验写成一个总结。避免别人也踏坑,也写出了一个挺不错的指南来。~~我还是有一点惊讶的。这确实相当于一个211的化工硕士,我让他去查HYSYS资料把这件事情做成。
用LLM总结解释模拟的结果,应该更不是难事,有时间再试一下。试想以后的动态模拟,建好这些步骤后可以用自然语言说:”FV201 在5分钟后提高20%开度,系统稳定性如何,现有PID参数合适否?”,对现场操作员是何等的帮助?
我还试了另一个煤的灰化学软件,也是只输入两句话,也是自动跑了2个多小时,这次CC自动分析文件格式,采用的方式是直接编写类似INPUT文件 ,调用主程序运行。当然这个软件有“internal batch processing”功能, 还过CC仍然建议采用“external Python loop", 这个软件生成的结果是复杂的固体相图,一堆莫来石、尖晶石之类的专有名词---一般的化学工程师很难理解 ,LLM去理解最终的结果并评估风险也很轻松。~~我问CC是否行数万次不同灰份的计算,通过用“小模型”关联Input-Output就可以”distill"并且将“小模型”快速部署到工厂现场指导现场操作员。CC马上开始写出代码!而且“体贴”地说,这个计算量很大,也许要“反向工程 ”这个软件的DLL调用接口!这是“火工头陀”的水平。
我曾一直对DS的“通用能力”或“泛化能力”不太恭维,这次可以算是专业性的完整的试用-- 完全可用且远超预期,近6个小时V4-flash的TOKEN消耗不到0.5RMB!!! 作为“大脑” 算是非常NB的。 ~~Deepseek确实是AI尤其在我们国内的拐点时刻。
下面完全是DeepSeek V4-flash根据他的四个多小时的运行过程写的,我大写的服了。

Aspen HYSYS V14 + Python 自动化完全指南

一篇基于实测"排坑"的 HYSYS COM 接口操作指南, 告诉你什么能跑、什么不能跑、怎么才能跑起来。


写在前面

HYSYS 是个强大的流程模拟工具,但如果每次调参都要手动点界面,那就太折磨了。 用 Python 写脚本去操控 HYSYS,听起来很美,但网上的资料要么过时、要么不全。 这篇文章是我自己踩了一圈坑之后整理出来的实战笔记——每一步都跑通过。


1. 环境准备

bash复制

# 安装 Python(如果还没装)winget install Python.Python.3.13# 安装 COM 桥接库pip install pywin32# 注册 COM 组件python Scripts/pywin32_postinstall.py -install

⚠️ Python 和 HYSYS V14 都必须是 64 位(默认就是,不用特别配置)。


2. 最重要的一条铁律:必须用模板

这是花时间最多、踩得最深的一个坑。

HYSYS V14 的 COM 接口根本不能从头创建可用的案例。如果你调用 SimulationCases.Add(),表面上能创建一个空白案例,但只要一试图添加物料流,COM 服务器就会直接崩溃,报 RPC_E_SERVERFAULT。

正确的做法:永远从一个已有物性包的 .hsc 模板文件出发。

创建模板(只需做一次)

  1. 打开 HYSYS → File → New → Create
  2. 自动弹出 "Simulation Basis Manager"
  3. 在 Fluid Packages 下点击 Add... → 选 e.g. Peng-Robinson → Add
  4. 切换到 Components 标签 → Add → 添加 Methane、Ethane、Propane 等
  5. 点击红色 Enter Simulation Environment 按钮
  6. 保存
    到 C:\Users\你的用户名\Documents\Claude\template.hsc

一次配置,终身复用。后面所有脚本都会复制这个模板再操作。


3. 最小可运行脚本

python复制

import pythoncomimport win32com.clientimport shutil, os# ── 初始化 COM ──pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)app = win32com.client.gencache.EnsureDispatch("HYSYS.Application.V14.0")app.Visible =True# 显示 HYSYS 界面(设 False 则后台运行)# ── 从模板创建案例 ──TEMPLATE =r"C:\Users\zjmch\Documents\Claude\template.hsc"case_path =r"C:\Users\zjmch\Documents\Claude\my_case.hsc"if os.path.exists(case_path):    os.remove(case_path)shutil.copy2(TEMPLATE, case_path)case= app.SimulationCases.Open(case_path)fs =case.Flowsheet# ── 添加物料流 ──feed = fs.MaterialStreams.Add("Feed")feed.Temperature.SetValue(150,"C")feed.Pressure.SetValue(500,"kPa")feed.MolarFlow.SetValue(100,"kgmole/h")# ── 设置组成 ──feed.ComponentMolarFractionValue.SetValue("Methane",0.5)feed.ComponentMolarFractionValue.SetValue("Ethane",0.5)# ── 添加闪蒸罐 ──vapour = fs.MaterialStreams.Add("Vapour")liquid = fs.MaterialStreams.Add("Liquid")sep = fs.Operations.Add("Separator","Flash Drum")sep.FeedConnection(0).Attach("Feed")sep.VapourProductConnection(0).Attach("Vapour")sep.LiquidProductConnection(0).Attach("Liquid")# ── 运行求解 ──case.Solver.CanSolve =Truecase.Solver.Run()# ── 读取结果 ──print(f"气相出口温度 = {vapour.Temperature.GetValue('C'):.1f} °C")print(f"气相出口压力 = {vapour.Pressure.GetValue('kPa'):.1f} kPa")print(f"液相出口温度 = {liquid.Temperature.GetValue('C'):.1f} °C")# ── 清理退出 ──case.Save()case.Close()app.Quit()


4. 属性名对照表(精确版)

这些是从 HYSYS V14 类型库中自动生成的官方名称,别去猜。

属性(流股)
类型
使用示例
Temperature
RealVariable
.SetValue(150, "C")
 / .GetValue("C")
Pressure
RealVariable
.SetValue(500, "kPa")
MolarFlow
RealVariable
.SetValue(100, "kgmole/h")
 — 不是MoleFlow!
MassFlow
RealVariable
.SetValue(1000, "kg/h")
VapourFraction
RealVariable
.GetValue("")
MassEnthalpy
RealVariable
.GetValue("kJ/kg")
MolarEnthalpy
RealVariable
.GetValue("kJ/kgmole")
MolecularWeight
RealVariable
.GetValue("")
name
字符串
.name
(小写!)
ComponentMolarFractionValue
RealFlexVariable
.SetValue("Methane", 0.5)

💡 不确定属性名的时候,直接翻生成的文件:

C:\Users\xxx\AppData\Local\Programs\Python\Python313\Lib\site-packages\  win32com\gen_py\DFC1C58B-AE9F-11CF-8EB2-0020AF119B90x0x3x1\ProcessStream.py

5. 单元操作 API

每种设备有不同的连接方式,这里列几个常用的。

闪蒸罐 / 分离器

python复制

op = fs.Operations.Add("Separator","闪蒸罐")op.FeedConnection(0).Attach("进料")op.VapourProductConnection(0).Attach("气相出口")op.LiquidProductConnection(0).Attach("液相出口")

加热器 / 冷却器

python复制

op = fs.Operations.Add("Heater","加热器")op.FeedConnection(0).Attach("进料")op.ProductConnection(0).Attach("出料")op.DeltaTemperature.SetValue(50,"C")# 或者用 op.Duty.SetValue(...)

阀门

python复制

op = fs.Operations.Add("Valve","阀门")op.FeedConnection(0).Attach("进料")op.ProductConnection(0).Attach("出料")op.DeltaPressure.SetValue(200,"kPa")

混合器

python复制

op = fs.Operations.Add("Mixer","混合器")op.FeedConnection(0).Attach("进料1")op.FeedConnection(1).Attach("进料2")op.ProductConnection(0).Attach("出料")


6. 读取已有案例的数据

如果你有一个现成的 .hsc 文件,COM 接口的读取功能非常稳定:

python复制

case= app.SimulationCases.Open("已有案例.hsc")fs =case.Flowsheet# 读取物性包信息fp = fs.FluidPackageprint(f"物性包: {fp.PropertyPackageName}")# 遍历所有物料流for i inrange(fs.MaterialStreams.Count):    s = fs.MaterialStreams.Item(i)print(f"流股 {i}: {s.name}")# 遍历所有设备for i inrange(fs.Operations.Count):    op = fs.Operations.Item(i)print(f"设备 {i}: {op.name}")# 读取流股数据s = fs.MaterialStreams.Item(0)# 或者 Item("Feed Gas")T = s.Temperature.GetValue("C")P = s.Pressure.GetValue("kPa")


7. 已知限制一览

操作
状态
备注
连接 HYSYS
✅ 正常
Dispatch
 或 EnsureDispatch 均可
打开已有 .hsc
✅ 正常
读写皆可
添加物料流
✅ 正常
仅限
基于模板的案例
设置流股属性
✅ 正常
温度、压力、流量、组成
读取计算结果
✅ 正常
求解器运行后读取
从头创建案例
❌ 失败
SimulationCases.Add()
 创建的案例不可用
EndBasisChange
⚠️ 不稳定
有时即使改成功了也返回 E_FAIL
SimulationCases.Count
⚠️ 不一致
不总能反映实际打开的案例数

8. 常见错误速查

错误信息
HRESULT
大概率原因
RPC_E_SERVERFAULT0x80010105
COM 服务器崩溃——没有用模板,或案例未正确初始化
E_FAIL0x80004005
未指定错误——常见于 EndBasisChange 但实际没任何改动
E_INVALIDARG0x80070057
参数错误——属性名写错了或值类型不对
属性找不到
N/A
大小写不对——去查类型库生成的文件

9. 完整封装脚本

仓库里的 hysys_controller.py 是一个完整的封装类 HysysController,包含上面所有确认可用的 API 模式。直接 import 就能用。


写在最后

说实话,HYSYS V14 的 COM 接口体验并不算好——文档匮乏、错误信息晦涩、从零创建案例的功能基本是坏的。

但一旦摸清楚它的脾气,走通"模板 + 打开已有文件"这条路线,日常的自动化需求基本都能满足:

  • ✅ 批量修改输入条件、批量跑模拟
  • ✅ 自动提取结果、生成报告
  • ✅ 集成到优化流程中反复调参

如果你也在折腾 HYSYS 自动化,希望这篇文章能帮你少走点弯路。 有问题或新发现,欢迎交流 🙌

最新文章

随机文章