☰
西门子触摸屏运行记录实战:报警视图配置与归档查询
2026/10/6 1:23:48 网站建设 项目流程

1. 为什么设备运行记录值得在触摸屏上单独做一套

很多做自动化项目的朋友,尤其是刚接触西门子 HMI 的,第一反应是"运行记录这东西,PLC 里存一下不就行了"。我早年也这么想,直到有一次客户半夜打电话说设备白天莫名停机,要我查原因,我打开电脑连上 PLC 一看——数据区早被新周期覆盖了,什么线索都没留下。那次之后我就养成了一个习惯:凡是涉及设备启停、故障、参数变更这类需要"事后追溯"的信息,一律在 HMI 侧做一套独立的运行记录。

这套东西的价值在于三点。第一,它是给人看的,不是给机器看的。PLC 里的数据是给逻辑用的,格式紧凑、可读性差;HMI 上的记录是给操作工、维修工、班组长看的,时间、事件、状态一目了然。第二,它独立于 PLC 的扫描周期。PLC 数据区会被循环覆盖,而 HMI 的记录是追加式的,只要存储空间够,几个月前的记录都能翻出来。第三,它天然带时间戳和操作上下文。谁在什么时候按了启动、设备在什么状态下报的警,这些信息组合起来才是完整的"运行档案"。

这篇内容我打算把西门子触摸屏(以博途 WinCC 和精智/精简系列面板为主)上做运行记录的完整流程拆开讲,重点放在报警视图的配置上,因为这是最多人卡壳的地方。适合两类人看:一是刚上手博途、想把 HMI 功能做扎实的初学者;二是做过一些项目、但运行记录总是做得"能用但不好用"的进阶者。我会把每一步为什么这么做讲清楚,也会把我在现场踩过的坑一并倒出来。

提示:本文以博途 TIA Portal 环境下的 WinCC 组态为主,精智面板(Comfort Panel)和精简面板(Basic Panel)在功能上有差异,涉及差异处我会单独标注。

2. 运行记录的数据从哪来:先理清 PLC 与 HMI 的分工

2.1 记录的本质是"事件",不是"数据流"

很多人一上来就问"运行记录怎么组态",其实更该先问"我要记什么"。运行记录的本质是离散事件,不是连续数据流。设备启动是一个事件,设备停止是一个事件,故障报警是一个事件,参数被修改也是一个事件。每个事件有几个要素:发生时刻、事件类型、事件描述、可能还有事件值。

想清楚这一点,后面的组态思路就顺了。你不需要把 PLC 里所有变量都往 HMI 上搬,只需要把"值得记录的事件"对应的触发条件整理出来。我一般会列一张表,左边是事件名称,右边是触发条件(哪个变量、什么变化、什么值),这张表就是后面组态的蓝图。

事件名称触发变量触发条件记录内容
设备启动DB1.StartCmd上升沿操作员、时间
设备停止DB1.StopCmd上升沿操作员、时间
电机过载DB1.MotorOverload变为 1时间、故障码
温度超限DB1.TempHigh变为 1时间、当前温度
参数修改DB1.ParamChanged上升沿操作员、参数名

2.2 触发逻辑放 PLC 还是放 HMI

这是个经典问题。我的经验是:判断逻辑放 PLC,记录动作放 HMI。原因很简单,PLC 的扫描周期稳定、逻辑可靠,做边沿检测、条件判断是它的强项;而 HMI 的记录、显示、存储是它的强项。让 HMI 去做复杂的逻辑判断,一来响应慢,二来不同面板性能差异大,容易出幺蛾子。

具体做法是:在 PLC 里为每个需要记录的事件建一个"事件触发位",用上升沿或置位逻辑产生一个短脉冲(比如一个扫描周期),HMI 侧用这个位的上升沿来触发记录。这样职责清晰,调试也方便——PLC 里能监控触发位有没有正常产生,HMI 里能监控记录有没有正常写入。

2.3 变量连接里最容易忽略的细节

在博途里把 PLC 变量连到 HMI 时,有几个细节新手特别容易翻车。第一,连接要选对。一个 HMI 可能同时连多个 PLC,变量必须挂在正确的连接下,否则读到的永远是 0。第二,采集周期要匹配。事件触发位这种短脉冲,采集周期必须设得足够快(比如 100ms),否则 HMI 根本采不到,记录就丢了。第三,数据类型要对齐。PLC 里是 Bool,HMI 里也必须是 Bool,别搞成 Int 再转换,多此一举还容易错。

注意:精简面板(Basic Panel)不支持脚本和部分高级记录功能,如果你的项目用的是 KTP 系列,运行记录的实现方式要简化,后面第 5 节会专门讲。

3. 报警视图配置:运行记录的核心载体

3.1 为什么用报警系统而不是自己画表格

很多人第一反应是"我自己画个表格,用脚本往里填数据不就行了"。理论上可行,但实际项目里我不推荐,原因有三个。第一,报警系统自带时间戳、确认、归档机制,这些你手写要写一大堆代码,还容易出 bug。第二,报警系统的显示控件是现成的,报警视图、报警窗口、报警指示器,拖过来配一下就能用,省时省力。第三,报警系统支持归档,历史记录能存到 U 盘或 SD 卡,这是手写表格很难做到的。

所以我的做法是:把运行记录当成"离散报警"来做。设备启动、停止、参数修改这些,本质上和报警没区别,都是"某个时刻发生了某件事",只是严重程度不同而已。用报警系统来承载,是最省事也最稳的方案。

3.2 离散报警的组态步骤

在博途里新建离散报警,路径是"HMI 报警 > 离散报警 > 添加"。每条报警需要配几个关键字段:

  • 触发变量:选前面 PLC 里做好的事件触发位。
  • 触发位:如果是用字的某一位触发,这里要选对位号;如果是单独的 Bool 变量,选位 0 即可。
  • 报警文本:这是显示给操作工看的,要写人话。比如"设备已启动"而不是"StartCmd Rising"。
  • 报警类别:这个很关键,后面会细说。
  • 确认方式:运行记录类的事件,我一般设成"无需确认",因为它是记录不是报警,不需要操作工去点确认。

这里有个坑要提醒:报警文本里可以插入变量。比如"设备启动,操作员:%s",这个 %s 可以关联一个字符串变量,显示当前登录的用户名。这个功能做运行记录特别有用,能记录"谁干的",但新手往往不知道,白白浪费了。

3.3 报警类别的划分逻辑

报警类别决定了报警的颜色、确认行为、归档行为。默认有"错误""警告""系统"几类,但做运行记录时,我建议自定义类别。比如我会建这么几类:

类别名称用途颜色是否归档
操作记录启停、参数修改蓝色是
故障记录设备故障红色是
提示信息一般提示灰色可选

这样在报警视图里,操作工一眼就能区分"这是正常操作"还是"这是出故障了"。颜色别乱用,红色留给真正的故障,蓝色或绿色给正常操作,灰色给提示,这是行业里比较通用的约定。

3.4 报警视图控件的关键属性

报警视图(Alarm View)拖到画面上之后,属性里有一堆设置,我挑几个最关键的讲。

显示模式:有"当前报警""历史报警""当前+历史"几种。运行记录一般用"当前+历史",这样操作工既能看到刚发生的事,也能往前翻。

列配置:默认列可能只有时间、日期、文本。我一般会加上"类别""确认状态""持续时间"这几列。持续时间特别有用,能看出某个故障持续了多久。

排序方式:按时间倒序排,最新的在最上面,符合人的阅读习惯。

行数:别设太多,一屏显示 10 到 15 行比较合适,太多了字太小看不清。

字体大小:这是现场反馈最多的问题。默认字体往往偏小,操作工站在设备前看不清。我一般会把报警文本字号调到 14 到 16,时间字号可以小一点。

提示:报警视图的列宽要手动调,默认列宽经常把文本截断。调完之后记得在仿真里看一眼实际效果,别等到了现场才发现显示不全。

4. 让记录真正可用:归档、查询与操作员上下文

4.1 报警归档的存储位置选择

报警不归档,重启就没了,这是运行记录的大忌。归档位置有几个选项:HMI 内部存储、SD 卡、U 盘。我的建议是:

  • 短期记录(几天内)放内部存储,读写快。
  • 长期记录(几个月)放 SD 卡或 U 盘,容量大。
  • 重要记录建议同时导出到 U 盘,方便拿走去分析。

归档的容量要算一下。假设每天产生 200 条记录,每条记录占 200 字节,一年就是 200 × 200 × 365 ≈ 14.6 MB。这个量不大,一张 8G 的 SD 卡能存几百年。但要注意,归档文件是循环覆盖的,要设好覆盖策略,别把重要记录冲掉了。

4.2 历史报警的查询与筛选

光有记录不行,还得能查。报警视图支持筛选,可以按时间范围、按类别、按文本内容筛。我一般会在画面上放几个筛选按钮,比如"只看故障""只看今天""只看操作记录",操作工点一下就能过滤。

如果项目要求更高,可以用报警视图 + 脚本做自定义查询。比如输入一个时间段,脚本去归档文件里捞数据,显示在自定义的表格里。这个做法灵活但复杂,一般项目用不上,报警视图自带的筛选够用了。

4.3 记录"谁操作的":用户管理与变量关联

运行记录如果不记录操作员,价值要打对折。西门子 HMI 自带用户管理,可以建用户、设权限、做登录画面。关键是怎么把当前登录用户关联到报警文本里。

做法是:在 HMI 里建一个内部变量,类型是字符串,比如叫"CurrentUser"。然后在用户管理的"登录"事件里,用脚本把用户名写进这个变量。报警文本里用 %s 引用这个变量,就能显示"操作员:张三"。

这个功能在精智面板上很好实现,精简面板上脚本支持有限,可能要用别的方式绕。如果用的是精简面板,可以考虑让 PLC 侧记录操作员编号,HMI 只负责显示。

4.4 时间同步:别让记录时间对不上

这是现场最容易被忽视、出问题又最头疼的地方。HMI 的时间和 PLC 的时间如果不一致,记录的时间戳就是错的,事后分析全是坑。解决办法是让 HMI 做时间主站,PLC 从 HMI 同步,或者反过来,但一定要统一。

在博途里,HMI 的连接属性里有"时间同步"选项,勾上之后,PLC 和 HMI 的时间会定期同步。我一般设成 HMI 为主,因为 HMI 通常有电池供电的实时时钟,断电也能走时。同步周期设成 1 分钟一次,足够用了。

注意:如果设备联网,还可以让 HMI 从网络时间服务器同步。但工业现场网络往往不通外网,这个方案要看实际情况。

5. 精简面板与精智面板的差异处理

5.1 精简面板的功能边界

精简面板(Basic Panel,如 KTP400、KTP700)价格便宜,用量大,但功能有阉割。做运行记录时,主要限制在:

  • 不支持脚本(或者只支持极有限的脚本),所以"登录时写用户名到变量"这类操作做不了。
  • 报警归档能力弱,有些型号不支持归档到外部存储。
  • 报警数量有限制,具体看型号,一般几百条。

所以用精简面板做运行记录,思路要调整:把更多逻辑放到 PLC 侧。比如操作员信息,让 PLC 记录;事件触发,让 PLC 产生;HMI 只做显示和简单归档。

5.2 精智面板的进阶玩法

精智面板(Comfort Panel,如 TP700、TP1200)功能完整,可以玩的花样多:

  • 脚本支持完整,可以用 VBS 或 C 脚本做复杂的记录逻辑。
  • 归档能力强,支持归档到 SD 卡、U 盘,支持 ODBC 导出。
  • 支持自定义报表,可以把运行记录导出成 Excel 或 PDF。

如果项目预算允许,做运行记录我强烈建议用精智面板,省下来的调试时间远超那点差价。

5.3 跨面板移植时的注意事项

项目做大了,经常遇到"这个画面要从 KTP700 移植到 TP700"的情况。移植时要注意:报警编号、变量连接、脚本都要重新检查。精简面板上能跑的组态,到精智面板上不一定直接能用,反之亦然。我一般会在移植后做一次完整的仿真测试,把所有记录功能走一遍,确认没问题再下载到实际面板。

6. 现场调试中那些文档不会写的事

6.1 报警刷屏:记录太多也是灾难

有次做一个包装线项目,运行记录做得太"全",设备每动作一次就记一条,结果一开机报警视图疯狂刷新,操作工根本看不清,还以为是故障。后来我把记录粒度调粗,只记"批次开始""批次结束""故障"这几类,世界就清净了。

经验:运行记录不是越全越好,要记"有意义的事件"。判断标准是:这条记录事后会不会有人去看?如果没人看,就别记。

6.2 触发位没复位导致的重复记录

用上升沿触发记录时,如果触发位在 PLC 里没复位,HMI 可能会重复记录。我遇到过 PLC 程序里触发位置位后忘了复位,结果同一条记录刷了几百遍。解决办法是:触发位用脉冲方式产生,一个扫描周期后自动复位,或者 HMI 侧做去重逻辑。

6.3 归档文件损坏的预防

SD 卡或 U 盘在工业现场容易出问题,归档文件损坏是常事。预防措施:用工业级存储卡,别用普通消费级卡;定期导出备份,别把宝全押在卡上;HMI 断电前先停止归档,避免写入过程中断电。

6.4 操作工不看的记录等于没做

这是最扎心的一条。记录做得再漂亮,操作工不看就是白做。怎么让他们看?我的做法是:把关键记录做成报警指示器,有故障时闪烁提示;把常用查询做成大按钮,一点就能看;培训时专门讲怎么查记录,别指望他们自己摸索。

7. 一套可复用的运行记录组态模板思路

7.1 模板的结构设计

做了几个项目之后,我总结出一套可复用的模板结构,分享出来供参考:

  • PLC 侧:建一个"事件记录"DB,里面放若干触发位和辅助变量。每个事件一个触发位,命名规范统一,比如 Evt_Start、Evt_Stop、Evt_Fault01。
  • HMI 侧:建一个"运行记录"画面,放报警视图、筛选按钮、导出按钮。报警类别按前面说的分三类。
  • 用户管理:建操作员、维修工、工程师三级用户,权限分开。
  • 归档配置:内部存储 + SD 卡双备份,归档周期设成每天一个文件。

7.2 模板的复用与调整

这套模板复用时,主要改三处:事件触发位的数量和命名、报警文本的内容、归档容量和周期。改完之后做一次仿真,确认记录能正常产生、显示、归档,就可以下载了。

7.3 后续可以扩展的方向

如果项目要求更高,这套模板还能往几个方向扩展:接入 MES 系统,把运行记录实时上传;做数据分析,统计设备稼动率、故障率;做远程查看,通过 Web 或手机看记录。这些扩展都建立在基础记录做扎实的前提上,基础不牢,扩展都是空中楼阁。

我个人在实际项目中的体会是,运行记录这东西,做的时候多花一天,事后省下一周。设备出问题时,一份清晰的运行记录能让你少走无数弯路。而报警视图的配置,是这套东西的核心,配好了,整个记录系统就活了。最后再分享一个小技巧:在报警视图旁边放一个"导出到 U 盘"的按钮,操作工遇到问题可以自己导出记录发给工程师,省得你跑现场。这个按钮用系统函数就能实现,不用写脚本,值得加上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询