1. 项目背景与整体设计思路
1.1 为什么是 Trnsys:从一次真实的“翻车”经历说起
我最早接触 Trnsys 是在做某商业综合体的暖通方案比选时。当时空调负荷计算用的是 DeST,全年能耗预测用的是 EnergyPlus,结果两个软件算出来的冷负荷相差接近 20%。甲方要的是一个确定性的答案,而我们的模拟结果却是一个“区间”,评审专家一句“你们这个数到底能不能落地”,直接把项目卡住了。
后来我花了大半年时间把 Trnsys 用进实际项目里,才发现问题不全在软件算得不准,而在于我当时用错了工具。DeST 擅长逐时负荷和房间热过程模拟,EnergyPlus 擅长围护结构热平衡和房间热响应,但这两个工具在处理“系统级”的动态耦合——比如制冷主机部分负荷性能曲线、冷却塔与冷机的联动、水系统蓄能策略、地源热泵的土壤热平衡——都相当吃力。Trnsys 从一开始就不是单纯算负荷的软件,它是个模块化瞬态仿真平台。你会把冷水机组、水泵、冷却塔、水箱、管路、控制器、气象数据全部搭成一个“可以运行的系统”,让它们之间互相影响,每一秒都在交换信息。
换句话说,DeST 和 EnergyPlus 更像是一个“计算出答案”的工具,而 Trnsys 是一个“模拟出行为”的工具。如果你要回答“这套系统全年运行下来,冷机能效比是多少”或“不同控制策略下,水泵能耗相差多大”,Trnsys 是目前最合适的平台之一。
1.2 Trnsys 能做什么、适合谁来用
Trnsys 的全称是 Transient System Simulation Program,由美国威斯康星大学麦迪逊分校太阳能实验室开发,后来由 Thermal Energy System Specialists(TESS)持续维护扩展。最初它主要是为太阳能热水系统服务的,后来逐渐扩展成为覆盖暖通空调、建筑热过程、可再生能源、电力需求响应等多种瞬态物理过程的通用仿真平台。
它的核心价值是“瞬态”,也就是系统状态随时间变化的连续过程。暖通系统里很多问题本质上是瞬态的:房间温度不是恒定 24 度,而是随着太阳辐射、人员进出、设备启停而波动;冷机不是一直满负荷运行,而是在部分负荷工况下喘振、降频、启停;水系统也不是一开就稳定,而是存在水力失调和热力延迟。传统的稳态计算往往只能用“设计工况”去做设备选型,但实际运行时系统 90% 以上的时间都处于部分负荷或瞬态过渡工况。Trnsys 恰恰能把这些过程仿真出来。
适合的人群大概分三类:
- 暖通系统工程师,尤其是做系统方案比选、能源站优化、控制策略验证的,Trnsys 能提供一个“虚拟实验台”;
- 建筑节能咨询机构或科研院所,做全年能耗模拟、既有建筑改造效果评估、可再生能源利用率分析的;
- 高校研究生,特别是在做地源热泵、蓄冷蓄热、太阳能耦合、多能互补这类需要多系统耦合的课题时,Trnsys 的模块化思路几乎就是为你准备的。
1.3 项目定位:从“会用软件”到“会做系统仿真”
这项探索的定位不是教大家怎么点按钮,而是帮助读者建立一套系统仿真的方法论——从物理模型到仿真模型,从设备参数到控制逻辑,从单点校核到全年动态分析。我会按实际项目的推进顺序来拆解:先讲 Trnsys 的核心逻辑和建模思路,再讲设备组件和参数配置的关键点,接着用完整案例展示从零搭一个暖通系统仿真模型的过程,最后整理常见的坑和排查经验。
2. 核心原理与建模准备
2.1 模块化思想:搭积木一样“搭系统”
Trnsys 最大的特点就是模块化。你不需要写大段程序描述一个系统的物理方程,而是调用现成的组件(Component),把它们用连线连接起来,构成一个完整系统。每个组件背后都对应一个数学模型,这个模型可能是基于理论推导的,也可能是基于厂商实验数据拟合的。
组件之间通过“信息流”和“物流”两种方式交互。信息流传递比如温度设定值、控制信号、运行状态等;物流传递比如流体质量流量、热量等。举一个简单的例子:你需要模拟一台冷水机组,那么在 Trnsys 中,这个冷机组件会有输入口接收冷冻水回水参数和冷却水进水参数,会有输出口输出冷冻水供水温度和消耗的电功率。你需要在其他组件中把水泵的流量信号、冷却塔的出水温度信号接过来,冷机的输出再送到水泵和末端,这样就形成一个闭环。
这种“搭积木”思维的好处是透明。每次仿真的物理过程非常清晰,哪条线代表流量,哪条线代表温度,哪条线代表控制信号,一目了然。出了问题也容易定位,比如冷却塔出水温度偏高,你可以顺着线路逆向追溯,找到是气象条件、风机控制还是水量分配的问题。
2.2 时间步长与求解器:为什么 Trnsys 的计算结果“会波动”
Trnsys 采用的是显式时间推进求解。也就是说,系统在某个时刻的状态是由上一个时刻的状态和输入条件推算出来的,不迭代求解非线性方程组。这种方法的优点是稳定性好、实现简单、适合处理强非线性系统;缺点是你必须把仿真时间步长设置得足够小,否则结果会失真甚至发散。
Trnsys 的默认仿真步长是 1 小时,这适合全年能耗模拟,但如果你要仿真水泵启停、冷机调节、阀门动作这类小时间尺度动态行为,1 小时步长会导致系统来不及响应,结果完全失真。我在做蓄能水罐相关仿真时,曾吃过这个亏——用 1 小时步长导致水罐进出水温度完全混合均匀,蓄冷能力被严重高估。后来把步长调整到 6 分钟甚至 1 分钟,曲线才逐渐合理。
实际操作中,一般全年能耗评估用 15 分钟到 1 小时步长足够;控制器响应和启停策略分析用 1 到 6 分钟;如果涉及冷机启动过程、阀门动态、水泵变频响应这类亚分钟级别的动态,可能需要 1 秒级步长。但步长越小计算量越大,需要根据仿真目的做取舍。
2.3 气象数据与建筑设计:仿真的“输入边界”
说到气象数据,常见的是典型气象年(TMY)数据。我建议直接采用当地典型气象年(如中国标准气象数据 CSWD 或国际通用的 IWEC 数据),里面包含干球温度、湿球温度、太阳辐射、风速风向等全年 8760 小时数据。Trnsys 自带气象数据读取组件,可以把 TMY 格式文件导入,并按时间序列逐时驱动模型。
建筑围护结构的参数则通过描述热特性来输入,比如墙体传热系数(U 值)、窗户太阳得热系数(SHGC)、屋面反射率等。这里必须强调,Trnsys 的建筑热过程模型比 EnergyPlus 简洁,它采用热网络法处理房间热平衡,如果你的研究重点在建筑负荷本身,建议把负荷在专用软件里算好,把逐时负荷序列作为输入导入 Trnsys 再做系统仿真,这样最合理。
2.4 版本选择与环境配置
目前 Trnsys 的最新版本是 18,相比 17 版本主要改进集中在界面交互、3D 建筑建模导入(通过 TRNSYS3D 插件配合 SketchUp 使用)、以及部分组件库的更新。对老用户来说,核心组件架构变化不大,但新版本对高分辨率屏幕的支持明显改善。
安装配置时有几个注意点:
- 先装 Visual Studio C++ 运行库再装 Trnsys,避免部分扩展组件编译报错;
- 如果用到 Python 或 Excel 交互,需要保证环境变量里能够正确识别相关路径;
- TRNSYS 安装目录尽量避免出现中文或空格,否则部分 TESS 组件库加载时容易报错。
3. 组件选型与参数配置要点
3.1 常用组件库分类
Trnsys 自带的标准库(Standard Library)已经覆盖了大多数暖通核心部件:Type 2 温差控制器、Type 3 水泵 / 风机、Type 4 水箱(单/多节点)、Type 5 换热器、Type 6 辅助加热器、Type 14 时间控制器、Type 69 天空温度计算、Type 109 气象数据读取、Type 56 多区域建筑等。
TESS 库则更加丰富,按应用领域分成若干子库:GHP(地源热泵专用)、HVAC(暖通空调组件)、Storage(蓄能水箱/冰蓄冷)、Solar(太阳能集热器)、Electrical(光伏/燃料电池)、Loads and Structures(建筑负荷与结构)。对于暖通制冷系统,最常用的可能包括 Type 112 制冷机、Type 116 复杂冷水机组模型、Type 666 简单冷机模型、Type 709 冷却塔模型等。
核心原则是:能用内置库解决的,不要自建模型;组件模型越复杂,参数需求越多,调试难度也越大。你不需要一开始就追求全细节,从简单可靠起步,逐步叠加复杂性。
3.2 冷机与水系统建模的参数准备
冷机建模的重点在于性能曲线。Trnsys 中的冷机组件通常要求输入一组性能数据,用来生成部分负荷下的 COP 曲线。工程上最直接的做法是收集厂商选型报告里不同冷却水进水温度、不同冷冻水出水温度下的 COP 和制冷量数据,整理成二维或三维表格。
实际操作中我一般用这样的工作流:
- 从厂商选型软件中导出 5 到 10 个工况点的性能参数;
- 整理成 Trnsys 组件要求的输入文件(.dat 格式或直接在组件参数表中填写);
- 特别关注部分负荷率(PLR)在 0.2 到 0.5 之间的性能数据,因为系统全年有大量时间运行在这个区间;
- 用厂家数据的额定工况与 Trnsys 内置修正模型做校核,误差控制在 3% 以内。
水泵建模相对简单,核心是设定额定流量、额定功率和部分负荷性能系数。如果模拟变频泵,需要接入控制信号,让流量根据末端需求动态变化。变频泵的功率并非与流量线性相关,一般可用这个规律近似估算:功率占比 = 流量占比的 1.7 到 2.3 次方。不同泵效率差异较大,实际应以水泵性能曲线为准。
冷却塔建模需要注意湿球温度的敏感性。冷却塔出水温度极限逼近湿球温度,如果气象数据中湿球温度高于预期,塔出水温度也会随之升高,导致冷机冷凝温度升高、COP下降。在做系统搭配时,不能只看设计工况,还要用全年逐时数据验证冷却塔是否满足需求。
3.3 控制器与策略搭建
仿真中最大的工作量往往不在设备建模,而在控制逻辑。Trnsys 提供多种控制器组件,从基础的温差控制器、时间控制器到可编程的方程控制器。对于复杂策略,我建议用 Type 166 或直接嵌入公式组件实现判断逻辑。
有一个很实用的技巧——用“可调参数”控制策略的组合开关。比如你想对比三种不同的冷冻水供水温度设定(7 度、9 度、11 度)对系统能耗的影响,可以把设定温度设成一个全局参数,然后用方程组件将它输出给冷机控制器。这样你只改一个数,就能跑完整年的方案对比,不用动模型结构。
3.4 仿真结果显示与数据后处理
Trnsys 自带的在线图形显示器和离线结果导出工具已经能满足基本需求,但对于更专业的分析,我建议将结果输出到 Excel 或 CSV,再用 Python(pandas + matplotlib)或专业数据处理软件做可视化。
关键输出结果建议至少包含:逐时系统总电耗、冷机功耗与 COP、水泵功耗、冷却塔风机电耗、系统供回水温度、蓄能装置蓄放能状态、室内温度波动等。全年能耗逐时曲线的可视化能让你迅速发现系统在哪些时段运行异常,比如频繁启停、冷机低效区间过长等。
4. 实操过程与关键环节实现
4.1 案例目标与系统配置
下面用一个实际案例拆解整个建模过程。假设某办公建筑面积 5000 平方米,位于夏热冬冷地区,空调系统采用集中式冷站,配置一组风冷螺杆冷机(假设 2 台,单台制冷量 600 kW)和若干循环水泵。末端采用风机盘管系统。需要仿真全年运行能耗,并在三种控制策略(冷冻水定流量、一次泵变流量、二次泵变流量)中比较能耗水平。
为简化模型,建筑负荷不采用 Trnsys 内部建筑模型计算,而是从 EnergyPlus 或 DeST 中导出一份全年逐时冷负荷序列作为末端需求输入。这样做可以使负荷边界一致,避免模型差异干扰系统对比结论。
4.2 模型搭建步骤详解
第一步:新建工程,设置时间参数。仿真开始时间设为 1 月 1 日 0 时,结束时间设为 12 月 31 日 24 时,仿真步长设定为 15 分钟(0.25 小时)。这个步长适合全年能耗评估,也能捕捉到大部分系统动态特征。
第二步:放置气象数据组件,导入当地 TMY 气象文件,连接到冷机、冷却塔等需要室外参数的组件。这里检查气象数据的日期格式和时间序列是否完整,千万不能有缺测或乱序。
第三步:放置建筑逐时负荷读取组件。从外部文本文件读入 8760 小时逐时负荷数据(如有 15 分钟步长则 35040 个数据点),输出给末端侧的水路控制。这一步有一个容易出错的地方:负荷方向定义。Trnsys 中负荷组件的输出通常定义为“房间需要从水中带走的热量”,正值代表制冷需求。如果你定义反了,仿真结果会彻底乱套。
第四步:搭建冷源系统。放置 2 台冷机组件(Type 666 或 Type 112)并联回路由分流器(Tee Piece)和合流器(Mixer)连接,每台冷机配一台冷冻水泵和一台冷却水泵。冷机组的启停控制信号由负荷侧温差控制逻辑给出:当回水温度超过设定值且持续一段时间(防止频繁启停)时,启动第二台冷机;当负荷下降、回水温度长期低于设定值时,关闭第二台。
第五步:搭建末端侧水路。由于负荷已由外部数据给定,不需要搭房间模型,但需要用等效水力模块模拟末端盘管的换热。一般做法是用一个“负荷-换热器”模块,把负荷序列转换为对冷冻水的换热需求,同时根据供回水温差和流量计算出需要的冷冻水流量。
第六步:冷却侧(如用风冷则无需冷却塔)——如果用风冷螺杆机,则可直接以室外干球温度为冷机冷凝侧输入,但实际风冷冷凝器换热还与室外风速有关,必要时加一个修正环节。若用水冷冷机,则需要放置冷却塔组件(Type 510 或 Type 709)以及冷却水泵。
第七步:连接控制信号。设定冷冻水供水温度,用比较器和 PID 控制器调节冷机输出。水箱如果需要模拟蓄能,则在冷机和末端负荷之间串联一个蓄能水罐,根据运行策略定时充放能。
第八步:连接输出模块。在关键节点(供回水温度、各设备功耗、系统总功率、冷机COP)放置在线输出和离线结果存储组件。
4.3 参数设置与计算说明
上面的参数看起来只是数据填写,其实每一行背后都值得推敲。以冷机额定 COP 为例,假设厂商样本给出额定工况(冷冻水供 7°C / 回 12°C,冷却水进 30°C / 出 35°C)下 COP 为 6.0。那么在实际仿真中,当冷却水进水温度上升到 32°C 或冷冻水供水温度下降到 5°C 时,COP 会明显下降。Trnsys 通过性能曲线对额定值做修正。
以水泵参数为例:冷冻水系统设计供回水温差 5 度,总冷负荷约 1200 kW,则设计流量为 1200 × 0.86 ÷ 5 ≈ 206 m³/h。据此选两台泵并联(一用一备),单台设计流量也按此考虑。水泵额定功率可据扬程和效率估算:假设扬程 32 m,效率 70%,取水泵轴功率公式 P = Q × H × ρg / 3.6e6 / η,则单台泵轴功率约 26 kW,电机输入功率约 28 kW(电机效率约 0.93)。
冷却塔选型时,设计处理水量应满足制冷机排热量。排热量 = 制冷量 + 压缩机功耗 ≈ 1200 + 200 = 1400 kW。按 5°C 温差,冷却水流量约 1400 × 0.86 ÷ 5 ≈ 241 m³/h。根据当地湿球温度(按 28°C)选塔,要求出水温度不超过 35°C。这个设计过程看似繁琐,但填参数时每个数都有依据,才能让模拟结果经得起审计。
4.4 运行策略对比与结果分析
模型搭好后,分别运行三个工况:
工况 A:冷冻水定流量,水泵始终满频运行,冷机根据出水温度自动调节,冷却侧定流量。这是最基础的方案。
工况 B:一次泵变流量,负荷侧旁通管压差控制水泵变频,冷机蒸发器通过旁通维持最小流量。这个方案需要加旁通阀和控制策略,组件复杂度明显提升。
工况 C:二次泵变流量,一级泵定流量保证冷机蒸发器流量恒定,二级泵根据末端压差变流量。这种系统更适合末端支路多、阻力差异大的场合。
用同一组负荷数据跑完 8760 小时,对比全年水泵电耗。定流量方案下两台泵全年运行,电耗最高;工况 B 水泵大部分时间运行在 60% 到 80% 流量,可节能约 25% 到 35%;工况 C 的一次泵恒定 30 Hz 左右运行,二次泵随负荷变化,总节能效果与 B 类似但控制稳定性更好。
这组对比本质上是“用控制复杂度换运行能耗”,值得用 Trnsys 的逐时数据去量化评估。我给出的仅是示例趋势,实际项目里,变频泵效率下降会导致低负荷时段节能效果衰减,这需要通过模拟数据精确评估。
5. 常见问题与排查技巧实录
5.1 仿真结果发散或出现 NaN(非数值)
最常见的原因是时间步长过大导致的数值震荡。尤其是带水箱、蓄能装置的模型,如果水箱分层节点过多、流量过大而步长较长,容易出现数值不稳定。建议先把步长调小 5 到 10 倍观察曲线是否变平滑;如果仍然发散,检查是否存在代数环(比如控制信号依赖输出值,且二者之间没有延迟或滤波)。
另一个常见原因是某些组件在低流量或零流量下出现除零错误。水泵启停瞬间可能导致流量刚好为 0,某些换热器计算模型不允许 0 流量,需要在控制逻辑里加一个极小的下限值,比如 1E-5 kg/s,避免被零除。
5.2 系统模拟与负荷模拟脱节
很多新用户把 Trnsys 当负荷计算工具,但 Type 56 建筑模型对房间热容、辐射、内围护结构等细节的设置要求较高,如果输入粗糙,算出的负荷和 DeST 或 EnergyPlus 差异可能非常大。我的建议是:Trnsys 做系统,负荷边界尽量用专门负荷软件输出,确保边界条件唯一。如果非要直接用 Type 56,至少要做一次与 EnergyPlus 的典型日典型工况对比校核。
5.3 控制逻辑写入困难
Trnsys 的图形化建模对复杂控制策略表现力不足。比如一个“先启 A 机、A 机加载到 90% 以上保持 15 分钟再启 B 机”的逻辑,直接用连线实现会很尴尬。我建议先用文字把控制逻辑写成伪代码,再用可以包含表达式的方程组件分步实现。如果逻辑实在过于复杂,可以考虑用 Matlab/Simulink 做控制策略验证,把验证过的控制映射到 Trnsys 中。
5.4 求解慢、跑不动
仿真一年 8760 小时、步长 15 分钟,涉及几十个组件,计算量并不小。如果控制逻辑复杂,每个时间步的程序调用量会很大。我建议分区域调试,先跑 3 到 5 天的短期数据验证动态行为没问题,再跑全年;仿真步长从 1 小时起步,逐步减小到合理值,没必要一上来就追求高时间分辨率。如果项目涉及大量工况组合,可以把不同工况拆成独立小模型并行跑,避免一个大模型从头跑到尾。
5.5 设备负荷与选型偏离实际
模拟用的设备性能曲线如果来自公开文献或估算数据,容易出现模拟结果与厂家实际运行数据不一致。建议在关键项目里,尽量向设备供应商索取标准工况和非标准工况性能数据,输入到模型中。如果没有厂商数据,宁可少做细节,也不要在关键环节塞入不可靠的性能参数。
5.6 气象数据与建筑位置不匹配
如果气象文件选错或数据时间与建筑所在地不一致,负荷预测和系统能耗结果都会失真。要注意气象数据的时区处理,默认时区应与项目所在地一致,否则太阳辐射峰值会与负荷峰值错位,导致蓄能策略评价失真。
6. 一些可能被忽略的经验细节
我做了几年 Trnsys 仿真后,有些经验很难从官方文档里找到,但实际项目里非常关键。
一个容易被忽略的点是仿真初始温度的设定。建筑和土壤等热惯性大的对象,初始温度设置偏差会导致仿真初期一段时间内结果偏移。Trnsys 默认所有组件初始温度设为 20 度。但对于地源热泵这类系统,土壤初始温度设定至关重要——如果设置偏差过大,第一年运行结果会严重偏离,需要采用“预热循环”:先用典型气象年数据循环跑若干年,让土壤温度场稳定下来,再取最后一年的结果作为分析数据。我在做地埋管项目时,通常会把同样的数据连续跑 5 到 10 年,最后取稳定周期结果。Trnsys 的气象文件重复使用很简单,但很多人一开始不知道要这么做。
关于机组运行曲线的形状,我在实际模拟中有一个对照规律:冷机进水温度越低,COP越高;部分负荷率在 0.6 到 0.9 区间 COP 往往处于高位,过低负荷率(低于 0.2)COP 会大幅下降。分布式模型中,需要将这个规律体现到性能曲线中。厂商数据如果只有 25%、50%、75%、100% 四个负荷点,建议在 0 到 25% 之间做插值曲线时限制最小制冷量。很多模拟结果中冷机频繁启停,就是因为在模型中允许冷机在极低负荷率下继续运行,而实际冷机有最小容量限制,低于此限制会进入启停循环,系统效率大降。
还有一个经常踩的坑是关于结果文件单位。Trnsys 默认输出单位采用国际单位制,比如能量是 kJ、功率是 kJ/h(不是 kW),温度是摄氏度。很多人第一次用,把功率读出来直接在 Excel 里按 kW 求和,最后全年能耗算大了 3.6 倍。建议在输出组件中直接设定单位换算系数,或者导出后在数据处理时统一换算。
从长远看,Trnsys 的生态越来越丰富,与 Python 的联合仿真为它在算法控制、机器学习预测、以及实时优化方面打开了更大的空间。我目前正在尝试用 Python 读取 Trnsys 的实时仿真数据,再用优化算法在每小时步长上对冷站水温设定值做动态寻优,效果很不错。以后有机会,我会把这个过程整理出来分享。