很多工程师以为 WinCC 就是“做个画面、连个 PLC”那么简单。但其实,WinCC Advanced(V16+)背后是由 4 个独立的 SQL Server 数据库驱动的——它们分工明确,缺一不可。我在轧机项目中就吃过亏:误删了 HMIRT 数据库,导致3 天的历史趋势图全部消失,客户差点拒收!今天,我就把这 HMI、HMIALG、HMIRT、HMITLG 四大数据库的作用、存储内容、使用场景和维护要点,一次性讲清楚。
1. HMI 数据库 —— “工程的大脑”
数据库名示例:CC_YourProjectName
作用:存储所有静态工程配置数据
包含内容:
变量定义(名称、PLC 地址、数据类型)
画面对象(按钮、IO 域、图形、脚本)
报警类别、用户权限、运行系统设置
谁在用它?
你开发时拖拽控件 → 写入 HMI 库
运行时 WinCC Runtime 读取它来加载画面
关键点:
这是唯一在开发阶段被频繁修改的库
你用 C# 同步变量,就是写入这个库的 [MCPTVARIABLEDESC] 表
类比:就像 PLC 的“程序块 + 符号表”,是系统的“源代码”。
2. HMIALG 数据库 —— “报警的黑匣子”
数据库名示例:CC_YourProjectName_HMIALG
作用:永久记录所有报警事件
包含内容:
报警触发时间、确认时间、恢复时间
报警文本、所属类别、操作员
是否已确认、是否已归档
典型表:[dbo].[AlarmLog]
为什么重要?
HMI 画面只显示“当前未确认报警”
历史报警查询、事故复盘全靠 HMIALG
常见问题:
默认不自动清理 → 几个月后磁盘爆满
未启用“报警记录” → 根本没数据!
案例:某钢厂停机 2 小时,靠 HMIALG 中的时间线锁定“先超温、后急停”的因果链。
3. HMIRT 数据库 —— “趋势的时光机”
数据库名示例:CC_YourProjectName_HMIRT
作用:存储过程变量的历史值

触发条件:
变量必须勾选 “Logging = True”
设置记录周期(如 1 秒、5 秒)
包含内容:
时间戳 + 变量值(如温度=85.3℃)
支持整型、实数、Bool 等类型
如何查看?
WinCC 趋势控件自动读取
或用 SQL 查询 [dbo].[TagValues] 表
性能警告:
不要对 1000 个变量开 100ms 记录!
否则 HMIRT 会迅速膨胀至几十 GB
技巧:只对关键工艺参数(如辊缝、张力)开启高频率记录。
4. HMITLG 数据库 —— “操作的审计员”
数据库名示例:CC_YourProjectName_HMITLG
作用:记录用户操作行为日志
包含内容:
谁在什么时候点击了哪个按钮
谁修改了设定值(如“将速度从 100 改为 120”)
登录/登出记录
如何启用?
在变量或画面对象上勾选 “记录操作”
默认完全关闭!需手动开启才有数据
典型用途:
制药、食品行业:满足 FDA 21 CFR Part 11 审计要求
安全回溯:“是谁复位了急停信号?”
注意:此库数据量小,但法律效力强,建议定期备份。实用维护建议如下:
HMI 建议操作:开发阶段每日备份;生产环境禁止直接改表
HMIALG 建议操作:设置“自动归档”(如保留 180 天);避免磁盘写满
HMIRT 建议操作:按需开启记录;定期导出历史数据后清空
HMITLG 建议操作:启用关键操作记录;保留至少 1 年
通用原则:
不要直接删除 .mdf 文件!
应通过 WinCC 自带的“归档”或“数据库维护”功能操作。
理解这 4 个数据库,你就从“WinCC 使用者”升级为“WinCC 架构师”。它们不是冷冰冰的文件,而是系统运行的“记忆”与“逻辑”。
你在项目中用过 HMIRT 或 HMITLG 吗?遇到过什么坑?评论区交流!
后面我计划将进阶讲测厚仪系列,欢迎关注交流,共同学习进步!