去年我做商业综合体弱电改造的时候,第一次把Ricon组态系统当主角用。说实话,接到需求之前,我对“组态系统”这四个字的理解还停在“电子画图板”——把设备和管线画到屏幕上,做几个会跳动的数字就完事。但那个项目做到一半我就改变了想法:组态系统不是拿来画图的,它是智能楼宇真正的中枢神经系统,也就是标题里说的“大脑”。
我见过太多楼宇项目里的尴尬局面:冷源群控一套软件、照明一套软件、给排水一套软件、配电监控又一套软件,中控室摆七八台电脑,物业人员每天来回切换,领导想看个全局还得凑到某台机器前。系统越建越多,人反而越来越累。这套路走不通了,真正能把这些子系统揉在一起的,核心就是组态平台。而Ricon这类产品,恰好把我对“楼宇大脑”的理解从一个抽象概念变成了可落地的工程实践。
这篇文章不讲厂商PPT,只讲我实际做完一个项目之后,对Ricon组态系统的架构理解、落地过程、踩坑经历,以及“纯水系统组态”这类典型场景是怎么一步步搭起来的。
1. 从“电子画图板”到“楼宇中枢”:我对Ricon组态系统的认知转变
1.1 一个老项目的痛,让我重新认识了“组态”两个字
那个商业综合体大概是七八年前建的,BA系统用的是某国际品牌,其余子系统各自为政。物业经理跟我抱怨过一句话:“你们能不能让我在一个屏幕上看到所有东西?”这句话听着简单,做起来全是坑——每个子系统的数据格式不一样、协议不一样、点位编码习惯不一样,连“水泵运行”这种最基础的状态信号,在不同系统里的叫法都五花八门。
后来我们引入Ricon做统一平台,我才真正理解“组态”这个词的份量。“组态”拆开看是“配置”和“状态”,但实际工程里的含义是:把物理世界里的设备、管线、仪表,映射成数字世界里的对象、点位、变量,然后让这些数字对象按照真实逻辑实时运转。
这个过程难的不是画图,而是建模。图画得再漂亮,点位映射错了,界面上的动画就是自娱自乐。Ricon真正有用的地方,在于它提供了一套从底层通讯到上层展示的完整链路,而不是一个孤零零的绘图工具。
1.2 智能楼宇“大脑”要具备的三个基本素质
如果一个系统要被称为“大脑”,它至少要具备三样东西:
- 感知能力:能通过Modbus、BACnet、OPC UA等协议,把现场传感器、电表、水表、阀门状态全部收集上来。这是所有决策的基础。
- 思考能力:能基于采集到的数据执行联动逻辑,比如液位高到某个值自动关进水阀,机房温度上升到阈值自动轮换机组。普通组态软件能做简单的脚本判断,好的组态平台能把这种逻辑做得像搭积木一样清晰。
- 表达能力:把数据变成人能看懂的画面、趋势曲线、报警信息和报表。不能光自己聪明,要让运维人员一眼就懂。
这三个能力对应到Ricon里,就是它的驱动管理、逻辑引擎、画面和报表模块。多数人只用了第三个,把Ricon当HMI在用,前面两个能力全浪费了。这是我觉得最可惜的地方。
1.3 纯水系统的例子为什么典型
最近大家都在聊“纯水系统组态”,我一开始也纳闷,一个看起来偏工业的水处理系统,为什么跟智能楼宇扯上关系?后来想明白了:现在是高端写字楼、医院、实验室、电子厂房的标准配置。
纯水系统麻雀虽小,五脏俱全:原水箱、多介质过滤器、活性炭过滤器、软化器、反渗透膜组、EDI模块、纯水箱、供水泵,再加上各类电导率仪、压力变送器、液位开关、流量计。泵阀仪表样样齐全,联锁保护逻辑复杂,水质监测要求实时性高,整个系统就是一个迷你的工业控制现场。
做好纯水系统组态,基本上就能触类旁通搞定楼宇里绝大多数水系统场景,包括生活给排水、泳池水处理、冷却水循环。所以下面我就拿纯水系统当主线,把完整的落地过程掰开揉碎讲一遍。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据怎么汇、模型怎么建:Ricon的架构值得掰开看
2.1 底层接入:先把设备“听懂”
做组态的第一件事永远是通讯。设备不说话,后面全是空中楼阁。楼宇里最常见的通讯协议,我整理成一张表:
| 协议类型 | 常见设备 | 典型参数 |
|---|---|---|
| Modbus RTU/TCP | 电表、水表、变频器、电导率仪 | 波特率9600/19200,从站地址1-247,寄存器地址 |
| BACnet MS/TP | 中央空调末端、DDC控制器 | Max Master、Baud Rate |
| BACnet/IP | 冷机群控、VAV箱 | 端口47808,设备实例号 |
| OPC UA | PLC、支持开放平台的控制器 | Endpoint URL,安全策略 |
| M-Bus | 热量表、远传水表 | 波特率2400/4800,二级地址 |
纯水系统里的仪表,尤其是电导率仪和流量计,大多支持Modbus RTU。当年调试时有个细节特别容易翻车:Modbus有“0X”、“1X”、“3X”、“4X”几种寄存器区域,有些仪表的电导率存在保持寄存器(4X区)里,有些存在输入寄存器(3X区),读错了区域就是读到FFFF或者一坨乱码。当时我把电导率仪手册翻到最后一页才找到寄存器表,才开始理解为什么老工程师总说“组态七分在前期调研,三分在画图”。
Ricon的驱动管理界面会把协议参数放在同一个面板里,从站地址、功能码、寄存器起始地址、数据类型、字节序、轮询周期都一目了然。千万别小看“字节序”这个字段——很多Modbus设备返回的数据是高位在前、低位在后,如果你是反的,读出来的数值就会莫名其妙地大几百倍或者小几百倍。我们项目里有一台流量计,刚开始读出来是每秒几百立方米的流量,全楼的水都不够它流的,后来把字序一换,数据就正常了。
2.2 中间建模:点、对象、层级
Ricon这类组态系统的核心数据单位叫“点”(Point),一个点通常包含三个维度:当前值、质量状态、时间戳。质量状态尤其重要,它告诉你这个值是新鲜的还是超时的,是来自真实设备还是被手动强制过的。
但光有点还不行,得把点组织成对象。比如一台反渗透装置,它的“运行状态”是一个数字量输入点,“启停指令”是一个数字量输出点,“产水电导率”是一个模拟量输入点,“变频器频率设定”是一个模拟量输出点,这四个点绑在一起,才构成“RO泵”这个设备对象。Ricon里可以把这些点做成模板,以后同样的泵直接套模板生成,点位编号自动递增,效率差距是数量级的。
再往上一层是空间层级。我习惯按“区域—系统—设备—点位”四层组织:
- 区域:B1层、1层、2层,或者实验室、生产车间、住院楼
- 系统:纯水系统、空调系统、给排水系统、配电系统
- 设备:RO装置、纯水箱、供水泵、电导率仪
- 点位:液位、压力、流量、电导率、启停状态
这套层级结构在建点位阶段就要规划好,因为后面所有权限管理、报表统计、告警归类都靠它。刚开始做项目的时候,我嫌麻烦,点位全挂在一个扁平目录下面,结果后期要按楼层统计能耗时,差点把自己活埋了。组态系统的建模规范,决定了这个系统用三个月之后是资产还是负债。
2.3 上层能力:画面、告警、联动和历史
模型建好,上层就顺理成章了。
画面这层大家都熟,把图元跟点位绑定就完事。但Ricon有几种高级做法值得说:一是液位填充动画,水箱液位可以用一个可变高度的填充矩形表示,液位值直接驱动矩形高度,看起来非常直观;二是管线变色,水温超过45度管线变成红色,常温水保持蓝色;三是泵的旋转动画,状态字里某一位为1时叶轮以一定速度旋转。这些都是老组态的基本功,但对没见过的人来说观感很惊艳。
告警层是容易被忽视的重头戏。一个纯水系统,电导率超标、液位偏高偏低、泵故障、阀门开关不到位,每一项都是告警源。Ricon的告警可以设置阈值、死区、变化率、优先级,还能加上延时判定,防止瞬时波动产生误报。我之前做过一个项目,因为没做延时,每次变频泵切泵时管网压力一个抖动脉冲,就把低压报警触发了一遍,结果运维班长半夜被电话叫起来三次,第二天一早就找上门来问怎么回事。
联动层是判断组态工程师功力的分水岭。Ricon的逻辑引擎支持条件判断、定时器、计数器、比较器,可以把“纯水箱液位大于90%关闭制水进水阀,小于30%启动制水泵”这种逻辑做成流程块。这部分我放在下一节用纯水系统的实例细讲,因为只有结合具体场景,才能把联动的逻辑链说清楚。
历史层则是给数据以记忆。Ricon会把点的历史趋势存下来,运维人员可以拉出一周之内的电导率曲线,判断反渗透膜是不是性能衰减了;也可以统计泵的累计运行时间,到了保养周期自动提醒。没有历史数据的组态系统,相当于一个健忘症患者,问什么都答不上来。
2.4 部署结构:单机、分布式、Web发布
楼宇项目规模差异极大,部署方式也不一样。小型项目,比如一栋办公楼里的纯水机房,直接一台服务器跑Ricon,本地接显示器就能干活。但中型以上的楼宇,我强烈建议做分层部署:
- 采集层:每一栋楼或每一个机房放一台采集网关,负责对下接设备、往上转发数据。这样做的好处是,设备的通讯故障被隔离在本地,不会弄垮整个平台。
- 服务层:中心机房部署Ricon服务端,承担实时数据库、历史存储、告警处理、逻辑引擎。
- 客户端层:中控室用瘦客户端访问,管理人员用Web浏览器或者移动端看数据。
Ricon的Web发布能力在跨系统集成时非常管用。物业经理的手机上装个入口,在外地出差也能看到纯水箱液位和电导率趋势,领导视察时也不用挤进中控室。
我们做那个项目时,因为没有在一开始规划分布式部署,后来加节点时把整个系统结构重新调整了一遍,工程量翻了一倍。组态系统前期规划省下的每一块钱,都会在后期十倍奉还。
3. 纯水系统组态实录:从I/O点表到全流程联动的完整链路
3.1 需求边界与点表设计
纯水系统的工艺路线一般是这样:原水进原水箱,经增压泵送入多介质过滤器、活性炭过滤器、软化器,然后进入反渗透(RO)膜组,RO产水进中间水箱,再经EDI模块深度脱盐,最终进入纯水箱,由供水泵配送到各用水点。整个系统里,我最关心的工艺监测点包括:
| 类型 | 点位 | 信号类型 | 用途 |
|---|---|---|---|
| 液位 | 原水箱液位 | AI (4-20mA) | 控制原水补水和增压泵启停 |
| 液位 | 纯水箱液位 | AI | 联锁RO和EDI的制水启停 |
| 水质 | RO进水/产水电导率 | AI | 判断膜性能 |
| 水质 | EDI产水电导率 | AI | 判断产水是否合格 |
| 压力 | RO进水压力 | AI | 膜前压力保护 |
| 流量 | 产水流量/供水流量 | AI | 累积量统计 |
| 状态 | 各泵运行/故障/手自动 | DI | 设备状态监视、故障报警 |
| 阀位 | 各电动阀开到位/关到位 | DI | 阀位反馈 |
| 控制 | 各泵启停 | DO | 远程控制 |
| 控制 | 各电动阀开关 | DO | 远程开关控制 |
| 调节 | 供水泵变频频率 | AO | 恒压供水调节 |
在正式动Ricon之前,我会把这些点位整理成一份Excel点表,列清楚:点位中文名、设备编号、信号类型、量程上下限、单位、报警阈值、所属系统、在Ricon里的点名。这份点表跟着项目走,现场调试的时候全靠它对照。点表版本变更了要在文件名里标日期,这个习惯帮我避过无数次早查错位的灾难。
梳理过点数之后,纯水系统项目大概在80到150个点之间,不算多,但逻辑关联度极高,比楼宇里那种靠点数撑场面、逻辑稀碎的HVAC系统扎实得多。
3.2 画面制作:先流程后数据,先能看后好看
画面我建议按这个顺序来:
- 第一步,画工艺流程图:从原水箱开始,把过滤器、RO膜组、EDI、纯水箱、供水管网全部画出来。这一版先不追求漂亮,确保设备相对位置跟现场一致,管线走向清晰。为什么强调跟现场一致?因为如果画面上RO膜在纯水箱的右边,现场在左边,将来运维人员对着画面排查故障,会先在错误的方向上找半天。
- 第二步,绑定动态数据点:把前面建好的点位逐个绑定到图元上。这一步最无聊也最不能错。绑定完了检查一遍:点开每个图元的属性,确认绑定的点名称正确,尤其是量程和单位——把电导率仪的0-100us/cm误绑成0-1000us/cm,画面上的曲线看起来还挺合理,实际上全是错的。
- 第三步,设计多级页面:总览页放整个纯水系统的全景,用设备图标颜色表示运行/停止/故障;系统页分成预处理、RO、EDI、供水四个子画面,每个子画面放详细数据;设备页点击具体设备,弹出该设备所有点位的明细。三级页面结构足够用,再深就影响操作效率了。
- 第四步,做页面跳转和快捷键:总览页上每个设备图标点击后跳到对应该设备的子画面,这个交互逻辑运维人员特别喜欢。
关于动态效果,画面上泵的旋转动画不要做得太密。纯水系统里泵很多,如果每台泵都加一个高帧率旋转动画,画面帧率会明显掉。Ricon支持用多个帧的方式做动画,但帧数越多CPU负载越高。我的折中方案是:总览页的泵只做“红绿变色+状态文字”,只有进入设备页的泵子画面才启用旋转动画。这样既保证了监控效率,又不拖垮运行画面。
3.3 报警与联锁:最出彩的部分,也是最容易出事的部分
纯水系统的报警,我按优先级分成三级:
- 紧急报警:纯水箱低低液位、RO进水压力过高、产水电导率严重超标。这类报警直接触发声光告警,中控大屏全屏闪烁,必须确认才能消除。
- 一般故障:泵故障、阀故障、电导率超标。弹出报警条,有确认按钮,不强制全屏。
- 提示消息:设备累计运行时间达到保养周期、水质有上升趋势但还没超标。只在事件列表里记录,不打扰操作员。
光有报警级别还不够,必须设“去抖延时”。我习惯在报警条件里加1到3秒的延迟确认,比如“纯水箱液位小于20%持续3秒后才触发低液位报警”,这样瞬时扰动不会误报。
联锁逻辑是整条链路的灵魂。纯水系统的核心联锁,我总结下来主要是三条:
- 纯水箱液位高于90%时,关闭RO和EDI制水设备,防止溢流;低于30%时,重新启动制水。液位信号在Ricon的逻辑引擎里设置成模拟量比较器加定时器。
- RO高压泵启动前,必须先确认原水箱液位不低于低限、进水电动阀开到位、RO进水压力正常。任何一个条件不满足,高压泵不允许启动。
- 供水泵采用变频恒压控制,管网压力传感器反馈到Ricon的PID调节块,输出频率给变频器;管网压力高到110%设定值时,主泵降频、备用泵禁止启动。
这些逻辑在Ricon里可以做成一排逻辑块,条件接到左边,动作输出到右边,逻辑关系一眼就能看明白。调试时先手动模式逐条验证,再切换到自动模式,最后做联合测试。
3.4 调试中最容易翻车的点位映射与验证方法
我做纯水系统那次,遇到过一个特别典型的调试坑:水箱液位显示画面上一会儿80%,一会儿跳成20%,中间没有任何过渡。查了半天,最终发现是液位计的4-20mA信号串到了旁边的温度变送器通道上,DDC模拟量输入模块接错线了。
这种问题在组态调试阶段几乎一定会遇到。我的排查链路是:
- 先看物理层:信号线是不是接到了正确的AI通道上。
- 再看驱动配置:Ricon里的点位通道号、寄存器地址是不是抄错了。
- 然后用Ricon自带的“强制变量”功能,往点位里写一个已知数值,看画面上对应的图元是否产生正确响应。
- 最后用“原始值”视图看通讯层传来的原始数据,判断是不是仪表本身量程设置不对。
这套链路走下来,80%的点位问题都能定位。剩下的20%,多半是仪表本身配置问题,得去翻仪表菜单。
我这个项目的电导率仪,新仪表默认量程是0-1000us/cm,实际工艺要求测的是0-100us/cm的纯水,所以显示出来的数值永远在个位数徘徊。后来把仪表量程改成0-100,数据就正常了。这个案例我想强调的是:组态工程师不能只管软件,很多时候问题出在现场设备端的参数设置上。
4. 项目落地阶段,这几个坑我替你先踩了
4.1 画面卡顿与刷新风暴
第一版Ricon画面做出来后,一运行就卡,尤其把纯水系统总览页放大到全屏时,鼠标移动都费劲。最开始怀疑是服务器性能不够,一查CPU占用率并不高,显卡负载也不高。后来用性能工具一看,发现问题是:总览页里放了四十多个高频更新对象,包括液位填充动画、实时曲线、旋转泵图标,每个对象每几百毫秒刷新一次,前端根本没那么多资源去处理。
最终解决方案是三层:第一,总览页只放状态摘要和关键数据,比如所有泵启停状态、纯水箱液位百分比、系统告警总数,这些数据变化频率低,刷新压力小。第二,把实时曲线全部挪到独立页面,只有在用户打开时才开始订阅,关掉页面就停止刷新。第三,把泵的旋转动画改成位图切换,用三帧画面轮换代替实时绘制。
改完之后帧率稳定,CPU占用率降了将近一半。如果你做Ricon画面也感觉卡,先别急着买硬件,先看看是不是同时刷新的点太多了。
4.2 点位漂移与设备通讯掉线
Modbus设备在工程现场最常见的故障是“偶发掉线”。电导率仪每隔几分钟就跟Ricon断开一次,然后又自动恢复。起初怀疑是通讯线缆质量问题,查了半天没有结果。后来用串口抓包工具一看,发现是电磁干扰导致通信帧校验错,重试机制触发后设备没来得及响应。
解决办法有两条:一是在驱动配置里把超时时间和重试次数适当调大,默认的1秒超时在复杂的电磁环境下太紧张;二是给通讯线缆加磁环,信号线离动力电缆远一点,这两个动作配合就把掉线问题解决了。
点位漂移则是另一类问题。纯水电导率仪偶尔出个尖峰,显示数值瞬间跳到正常值的十倍,随即恢复。这种毛刺如果不处理,会让历史曲线变得很难看,还会引发误报警。Ricon的AI点可以设置滤波方式,我用的是限幅滤波加移动平均值,把突变限制在一个合理的范围之内。这里有个度的问题:滤波太强,真实的水质波动会被抹平;滤波太弱,毛刺还是会漏过来。从实际运行数据看,3秒窗口的滑动平均既能滤掉尖峰又不失真。
4.3 报警风暴:报警太多等于没有报警
纯水系统调试时,有一次因为总进水压力波动,Ricon一口气弹出来三十多条报警,页面都被刷爆了。巡检人员根本没法在几百条记录里找到真正关键的那一条。那次之后我做了三个改进:
- 所有报警都加了延时确认,前面提到的“持续3秒”就是这个方案。压力瞬时波动不再直接触发报警。
- 把关联性报警分组,比如“RO进水压力高”和“预处理泵出口压力高”本来属于同一条故障链,合并为一条报警,减少冗余。
- 设置告警掩膜时段,夜间自动把低优先级报警降级为事件记录,只有紧急报警才会发出声光提示。
报警风暴的本质是建模不细致。设计报警阈值时,先想一想什么现象值得半夜把运维人员叫起来,什么现象只需要第二天早上看一眼记录。这个思路比任何技术手段都管用。
4.4 历史数据丢失与时间不同步
有一次运维同事问我,为什么凌晨两点到三点这段历史曲线是平的。排查了半天,发现采集服务器凌晨两点有个计划任务在跑数据备份,把CPU占满了,Ricon历史归档线程被饿死,大量数据没写进库。
服务器上的组态软件和数据归档尽量不要与其他重负载应用混跑,尤其是备份任务要避开高峰时段。另外,采集服务器如果时间不对,历史曲线的横轴就全乱了,排查问题的难度翻倍。我在所有服务器上部署了NTP时间同步,统一指向内网时间服务器,确保每个采集节点的时间偏差在几十毫秒以内。
还有一个容易被忽略的点:分布式部署时,如果采集网关与中心服务之间网络闪断,历史数据会在网关本地缓存一段时间。如果缓冲区配置得不够大,长时间断网会导致中间一段时间的数据完全丢失。设置缓存区大小的时候,要考虑最极端的断网时长,在这个基础上加一倍余量。
4.5 工程文件的版本管理:真到试运行出问题时才意识到
组态工程文件日常改动特别频繁,尤其是调试阶段,点位表、画面逻辑、告警阈值随时都在调。如果没有版本管理的习惯,改来改去容易乱。
吃过一次亏之后,我规定团队在三个时间点必须备份:一是每天下班前,二是每次调试计划开始前,三是上生产环境前。备份文件名必须带日期,注释里写清楚本次改了什么。Ricon项目里的逻辑块、点位表、画面文件能导出成文本格式的话,建议单独导出一份放到Git仓库,跟Excel点表放一起管理。这套习惯一开始觉得繁琐,后来出了几次问题要回滚版本时,才庆幸当初没偷懒。
5. 做完一个项目后,对“智能楼宇大脑”这件事的几点建议
5.1 选型不能只看Demo好不好看
很多项目经理选组态平台时,只看供应商在展厅里跑的那个大屏有多炫,灯光闪烁、数据跳动、3D动画栩栩如生。但真实项目里的日子是运维人员在过,他们需要的不是炫技,而是稳定、好用的工具。
我总结的选型标准是五条:设备接入的协议驱动是否丰富,点位容量和扩展性是否够用,逻辑引擎能不能支持复杂联动,历史数据吞吐量和查询性能如何,有没有开放API方便后续对接别的系统。Ricon在这些方面做得比较均衡,尤其是中小规模的楼宇项目,上手快、授权模式灵活、Web端体验流畅,后期加系统时也不会被捆住手脚。
此外还要留意供应商的工程支持能力。组态系统不是交钥匙就撒手不管的,调试阶段遇到问题能找到人,比买的时候优惠几万块更重要。
5.2 从“可视”到“会想”:再给楼宇加一点分析脑子
做完纯水系统组态,我最大的体会是:可视化只是起点,分析才是大脑的核心价值。纯水系统里有大量可以挖掘的数据:RO膜的压差随时间变化,可以预判清洗时机;供水泵的电流趋势异常,可能是轴承磨损的前兆;产水电导率缓慢上升,可能是膜寿命到期的信号。
这些分析不需要什么高级算法,把Ricon里的趋势数据和运维记录放在一起对比就够了。我现在做楼宇项目,会专门向甲方建议加一个设备健康度看板:把泵的运行小时数、故障次数、保养周期做出颜色分级,让物业经理一周扫一眼,就知道哪些设备该重点关注。这套东西做出来,比任何花哨的3D大屏都更能体现“大脑”的价值。
5.3 给想入坑组态工程师的一句话建议
如果你想快速理解一座楼宇运行逻辑,建议从组态系统入手。它将各个孤立的设备连接成一个整体,也逼着你把每个系统之间的依赖关系搞清楚。我见过很多新人一上来就学画画面、做动画,炫是炫,但对系统一知半解。我的建议恰恰相反:先从I/O点表和工艺逻辑开始,弄懂每一个点为什么存在、每一步联锁为什么这样设计,再回到画面上,你会发现自己的理解完全不一样。
把纯水系统的组态从头到尾独立做一遍,是一个非常好的练手项目。系统的点位规模不大,让你有精力关注逻辑质量;但麻雀虽小五脏俱全,该有的通讯、建模、报警、联动、历史全都能接触到。做完这一遍,楼宇里的其他水系统、风系统对你来说就是换个设备库的事情。
5.4 最后补一个很少有人提但很实用的细节
工程验收时,运维人员最头疼的不是操作复杂,而是出问题后不知道谁动过什么。组态系统一定要把操作记录和审计功能打开,包括谁在什么时间登录过、改过哪个点位、修改前和修改后的值是什么、是手动强制操作还是自动逻辑触发。在Ricon里配置好操作日志之后,每次问题回溯都有据可查,也慢慢让现场人员养成了不随意动参数的习惯。我后来的每个项目,都会在上线第一天就确认审计日志功能是开着的,这个习惯帮我避免了很多说不清道不明的扯皮。
做组态系统这件事,越往后越觉得它不像技术活,更像是在帮楼宇建立一套完整的神经系统。画布上的每一条管线和每一个图元,本质上都是物理世界在数字空间里的映射。真正把这个“大脑”建好了、养熟了,楼宇的每一层皮肤、每一次呼吸,都在你面前变得透明而有序。这大概就是干这一行最上瘾的地方。
