
1. 为什么要在触摸屏上做设备运行记录干了十多年工控我见过太多现场设备动不动就停机操作工说“它自己停的”电工查了半天说“没发现问题”工程师到现场一看历史曲线发现是某个接触器偶尔失压。问题是谁也不知道它什么时候会再犯因为没有记录。设备运行记录这件事说大不大说小不小但真到了扯皮的时候有没有这份记录直接决定了你是“有理说不清”还是“拿数据说话”。这篇内容就是围绕西门子触摸屏组态设备运行记录来展开的重点讲清楚两件事一是怎么在西门子触摸屏以博途WinCC Comfort/Advanced下的精智面板为主上把设备运行状态、运行时长、启停次数这些数据记录下来二是怎么把报警视图配置好让报警和运行记录形成一套完整的追溯体系。适合已经会用博途做基本画面、但对数据记录和报警管理还停留在“能显示就行”阶段的电气工程师、设备维护人员和自动化专业的学生。我先把结论摆前面西门子触摸屏做运行记录核心不是“记录”这个动作本身而是记录什么、记在哪、怎么触发、怎么让操作工看得懂。很多人一上来就想着用脚本写数据库其实大可不必触摸屏自带的数据记录Data Logging和报警记录Alarm Logging功能已经足够覆盖90%的现场需求关键是你得知道怎么配、配在哪、参数怎么算。提示本文以博途TIA Portal V16及以上版本、精智面板Comfort Panel为基准Comfort/Advanced/Unified的菜单路径略有差异但核心逻辑一致。基础版面板Basic Panel不支持数据记录功能这一点在选型阶段就要确认清楚。2. 运行记录到底记什么需求拆解与方案选型2.1 先搞清楚“运行记录”在工业现场的真实含义很多人一听“运行记录”脑子里第一反应是“记录设备开没开”。这个理解太窄了。在实际项目里设备运行记录至少包含四个维度运行状态记录设备当前是运行、停止、故障还是待机状态什么时候变的变了之后持续了多久。运行时长统计设备累计运行了多少小时本次运行了多久距离上次保养过了多少小时。启停次数统计设备启动了多少次停止了多少次频繁启停往往是故障前兆。报警事件记录什么时间触发了什么报警报警持续了多久操作工有没有确认什么时候确认的。这四个维度里前三个靠数据记录实现第四个靠报警记录实现。两者在触摸屏上是两套独立的机制但最终要能在同一个时间轴上对照查看才能形成完整的追溯链条。我见过一个典型的反面案例某包装线设备频繁跳停操作工说“一天停了七八次”但触摸屏上只有一个运行指示灯没有任何记录。后来加了数据记录发现实际一天停了二十多次而且集中在某个时间段最终定位到是电网电压波动导致接触器释放。如果没有这份记录这个问题可能永远查不出来。2.2 为什么选触摸屏自带记录而不是外挂方案做运行记录理论上有很多方案可以用PLC自己记录可以用上位机SCADA记录可以用外挂数据采集模块也可以用触摸屏自带的记录功能。为什么我推荐优先用触摸屏自带功能第一成本最低。触摸屏本身就在现场不需要额外硬件不需要额外授权数据记录功能在Comfort面板上是标配不需要额外布线。第二数据在本地不依赖网络。很多现场的网络环境并不稳定如果记录依赖上位机或云端网络一断数据就丢了。触摸屏本地记录存在面板的存储介质上断网也不影响。第三操作工直接可见。记录的目的是让人看触摸屏就在操作工面前他随时可以翻看历史记录不需要跑到办公室开电脑。第四和报警系统天然集成。触摸屏的报警记录和数据记录共用同一套时间基准在报警视图里可以直接关联查看这是外挂方案很难做到的。当然触摸屏记录也有局限存储容量有限通常几十MB到几百MB记录周期不能太快最快一般100ms再快就不适合了不适合做高速数据采集。但对于设备运行记录这种秒级、分钟级的需求完全够用。2.3 数据记录和报警记录的分工这里必须把两套机制的分工说清楚否则很容易配混对比项数据记录Data Logging报警记录Alarm Logging记录对象连续变化的变量值离散的报警事件触发方式周期性或变化时触发报警到达/离开/确认时触发典型用途运行时长、温度、压力趋势故障报警、操作确认记录存储格式CSV或TXT按行记录内部数据库按事件记录查看方式趋势视图、表格视图报警视图容量管理按文件大小或时间覆盖按条目数覆盖我的建议是运行状态和运行时长用数据记录报警事件用报警记录两者通过时间戳关联。不要试图用数据记录去记报警也不要用报警记录去记连续变量那是给自己找麻烦。3. 数据记录组态从变量定义到记录文件落地3.1 变量规划记录什么变量用什么数据类型在博途里做数据记录第一步不是打开记录编辑器而是先把变量规划好。变量规划错了后面全白搭。运行记录需要的核心变量通常包括运行状态字用一个Word或Int变量表示比如0停止1运行2故障3待机。不要用多个Bool变量分别表示那样记录文件会很难读。累计运行时长用DInt或Real单位秒或小时。建议用秒显示时再换算精度更高。本次运行时长同上。启停次数用DInt每次启动加1。当前报警号用Word记录当前最高优先级报警的编号。这些变量在PLC里定义好然后在触摸屏的“连接”里建立对应的外部变量。注意变量的采集周期要设对运行状态字用100ms或1s累计时长用1s启停次数用100ms因为启停是瞬间事件采集太慢会漏掉。注意采集周期不是越短越好。100ms采集一个变量一天就是864000条记录触摸屏的存储根本扛不住。运行状态用1s采集完全够用启停次数如果怕漏可以在PLC里做边沿检测后锁存触摸屏按1s采集锁存值。3.2 创建数据记录路径与关键参数在博途的项目树里找到“运行时设置”下的“数据记录”右键新建一个数据记录命名为“设备运行记录”。然后在这个记录里添加变量。关键参数有三个记录方法有两种选择——“循环记录”和“触发记录”。循环记录是按固定周期写一条触发记录是变量变化时写一条。运行状态和时长用循环记录启停次数用触发记录变化时记录这样既能保证趋势连续又不会漏掉瞬间事件。记录周期循环记录的最小周期是100ms但实际项目里我一般设1s或10s。1s适合需要看细节的场景10s适合只看长期趋势的场景。设备运行记录用1s比较均衡。存储位置可以选择存储在面板的Flash上也可以存储在外部存储卡SD/MMC上。Flash容量小但不需要额外硬件存储卡容量大但需要插卡。我的经验是短期记录一周以内用Flash长期记录一个月以上用存储卡。如果面板支持USB存储也可以存到U盘但U盘容易被拔走不适合无人值守场景。3.3 记录文件的格式与容量计算数据记录最终会生成CSV文件每行一条记录格式大概是TimeStamp;Var1;Var2;Var3 2024-01-15 08:00:00;1;3600;15 2024-01-15 08:00:01;1;3601;15容量怎么算假设记录5个变量每个变量平均8字节加上时间戳20字节一行大约60字节。1s记录一次一天86400行大约5MB。如果面板Flash有50MB可用空间能存10天左右。超过之后循环记录会覆盖最旧的文件。这个计算很重要因为它决定了你多久需要导出一次数据。如果项目要求保留三个月记录那就必须用存储卡或者定期导出到U盘。提示博途里可以设置“记录文件的最大数量”和“单个文件的最大大小”两者配合使用。我一般设单个文件10MB最多10个文件这样总容量100MB超过后自动覆盖最旧的。3.4 在画面上显示记录趋势视图与表格视图记录配好了操作工得能看到。博途提供了两种显示控件趋势视图Trend View以曲线形式显示变量随时间的变化。适合看运行状态的变化趋势和时长的增长曲线。配置时把数据记录的变量拖到趋势里设置好时间轴范围比如显示最近1小时操作工一眼就能看出设备什么时候在运行、什么时候停了。表格视图Table View以表格形式显示记录条目。适合查看具体的启停事件和报警记录。可以设置显示列时间、状态、时长支持翻页和跳转。我的做法是主画面上放一个趋势视图显示最近2小时的运行状态旁边放一个表格视图显示最近20条启停记录。操作工不需要翻菜单就能看到关键信息。4. 报警视图配置让报警和运行记录形成闭环4.1 报警分类与优先级设计报警视图配置的第一步不是打开视图编辑器而是设计报警分类。我一般把报警分成四类故障报警Fault设备停机类故障优先级最高必须确认。警告报警Warning设备还能运行但参数异常优先级次之。操作提示Message操作工需要知道的信息比如“请更换物料”不需要确认。系统事件System触摸屏自身的系统消息比如“存储卡已满”。在博途的“HMI报警”下可以按类别创建报警组。每个报警组可以设置不同的颜色、确认方式和记录属性。故障报警用红色警告用黄色提示用蓝色这是行业惯例操作工一看颜色就知道严重程度。4.2 报警记录的关键设置报警记录和数据记录是分开配置的。在“HMI报警”下的“报警记录”里可以设置哪些报警需要被记录。关键设置有三个记录哪些报警不是所有报警都需要记录。故障和警告必须记录操作提示看情况系统事件建议记录方便排查触摸屏本身的问题。记录时机报警到达时记录、离开时记录、确认时记录三个时机可以独立勾选。我一般三个都勾这样能完整还原报警的生命周期。记录容量报警记录默认保留一定条目数比如1000条超过后覆盖最旧的。如果项目要求长期追溯需要定期导出。4.3 报警视图的显示配置报警视图控件有几个关键属性需要配置显示模式有“当前报警”“历史报警”“报警统计”等模式。主画面上一般放两个视图一个显示当前未确认的报警一个显示历史报警。列配置默认显示时间、报警号、报警文本、状态。我一般会加上“持续时间”列这样操作工能直接看到每个报警持续了多久。排序方式按时间倒序排列最新的报警在最上面。这个很重要操作工最关心的是“刚刚发生了什么”。过滤条件可以按报警类别、优先级、确认状态过滤。比如只显示未确认的故障报警这样操作工不会被无关信息干扰。4.4 报警与运行记录的关联查看这是整套配置里最有价值的部分。怎么让操作工在查看报警时能直接看到当时的运行状态我的做法是在报警视图旁边放一个趋势视图两个视图共用同一个时间轴。当操作工点击某条报警时趋势视图自动跳转到那个时间点附近显示当时的运行状态曲线。这样就能直观地看到“报警发生前设备在干什么报警发生后设备变成了什么状态”。实现这个关联需要用到触摸屏的脚本功能。在报警视图的“选择变化”事件里写一段VBS脚本读取选中报警的时间戳然后设置趋势视图的时间范围。脚本不复杂但需要调试几次才能对准时间轴。注意这个关联功能在Comfort面板上支持Basic面板不支持脚本所以如果项目需要这个功能选型时必须选Comfort或以上。5. 实操过程从零配一套运行记录系统5.1 项目准备与变量连接假设我们有一个简单的设备需要记录运行状态、累计运行时长和启停次数。PLC是S7-1200触摸屏是KTP700 Comfort。先在PLC里定义变量// PLC变量定义 RunStatus : Int; // 0停止, 1运行, 2故障 TotalRunTime : DInt; // 累计运行秒数 StartCount : DInt; // 启动次数然后在博途的触摸屏连接里建立对应的HMI变量采集周期分别设为1s、1s、100ms。5.2 创建数据记录并绑定变量在“运行时设置”下新建数据记录“RunLog”添加三个变量记录方法选“循环记录”周期1s存储位置选Flash。这里有个细节累计运行时长在PLC里是每秒加1的触摸屏每秒采集一次记录文件里就会看到时长每秒递增。如果PLC里是每100ms加1触摸屏1s采集一次记录文件里就会看到时长每次跳10虽然数值对但看起来不直观。所以PLC里的累加周期要和触摸屏的采集周期匹配。5.3 配置报警并关联记录在“HMI报警”下创建三个报警报警1设备故障类别Fault触发变量“RunStatus”2。报警2设备停止类别Message触发变量“RunStatus”0。报警3启动次数超限类别Warning触发变量“StartCount”1000。每个报警都勾选“到达时记录”“离开时记录”“确认时记录”。5.4 画面布局与控件配置主画面分三个区域上方当前状态显示用一个大指示灯显示运行/停止/故障。中间左侧趋势视图显示最近1小时的RunStatus曲线。中间右侧报警视图显示当前未确认报警。下方表格视图显示最近10条启停记录。趋势视图的时间轴设为“相对时间”范围1小时自动滚动。报警视图设为“当前报警”模式只显示未确认的。表格视图绑定数据记录“RunLog”显示最近10条。5.5 仿真验证与现场调试博途自带仿真功能可以在下载到实际面板之前先仿真验证。仿真时重点检查三件事数据记录是否按周期生成文件是否能正常打开。报警触发时报警视图是否立即显示记录是否生成。趋势视图的时间轴是否和报警时间对得上。仿真通过后下载到实际面板现场调试时重点检查存储空间和记录周期是否匹配。如果发现记录文件增长太快就把周期从1s改成10s。6. 常见问题与排查技巧实录6.1 记录文件不生成或为空这是最常见的问题。排查顺序如下检查面板是否支持数据记录。Basic面板不支持Comfort/Advanced才支持。检查存储位置是否可用。如果选的是存储卡确认卡插好了、格式对了FAT32。检查记录是否被启动。数据记录需要在画面上用“StartLogging”函数启动或者在运行时设置里设为自动启动。检查变量连接是否正常。如果变量采集不到值记录文件会是空的。6.2 记录周期不准或丢记录如果发现记录时间戳不均匀或者有丢记录的情况通常是采集周期和记录周期不匹配导致的。采集周期必须小于等于记录周期否则记录时会取到旧值。另外如果面板CPU负载太高画面太复杂、脚本太多也会导致记录延迟。6.3 报警视图不显示历史报警历史报警需要报警记录功能支持。检查两点一是报警是否勾选了“记录”属性二是报警视图是否切换到了“历史报警”模式。另外历史报警的容量是有限的如果超过容量最旧的会被覆盖。6.4 存储卡满了怎么办存储卡满了之后循环记录会自动覆盖最旧的文件但报警记录不会自动覆盖取决于设置。我的做法是在画面上加一个“存储空间”显示当剩余空间低于20%时触发一个系统报警提醒操作工导出数据。6.5 常见问题速查表问题现象可能原因解决方法记录文件不生成面板不支持/未启动记录换Comfort面板/启动记录记录文件为空变量未连接/采集周期错检查变量连接和采集周期记录时间戳不均匀采集周期大于记录周期调小采集周期报警不记录未勾选记录属性在报警属性里勾选记录历史报警不显示视图模式不对切换到历史报警模式存储卡满容量不足导出数据/换大卡趋势视图不滚动时间轴设置错设为相对时间自动滚动报警和趋势时间对不上时区或时间基准不一致统一用面板本地时间6.6 几个我踩过的坑坑一用Bool变量记运行状态。一开始我用“Run”和“Stop”两个Bool变量分别记录结果记录文件里两列都是0和1根本看不出设备到底在运行还是停止。后来改用一个Int变量表示状态字一目了然。坑二记录周期设太短。有一次设了100ms一天生成了80多万条记录文件几百MB面板存储直接爆了。后来改成1s问题解决。坑三报警确认后记录丢失。一开始只勾了“到达时记录”结果操作工确认报警后记录里只有到达没有确认无法追溯操作工是否及时处理。后来三个时机都勾上完整了。坑四忘记设自动启动。数据记录默认不会自动启动需要在画面上加启动按钮或者在运行时设置里设为自动。我一开始忘了设调试了半天以为记录功能坏了。7. 进阶技巧让运行记录更好用7.1 用脚本自动导出记录到U盘如果项目要求定期归档可以在画面上加一个“导出记录”按钮用VBS脚本把记录文件复制到U盘。脚本核心逻辑是调用“CopyFile”函数把Flash上的记录文件复制到U盘路径。注意U盘路径在不同面板上可能不同需要先测试确认。7.2 用PLC做运行时长统计而不是触摸屏触摸屏记录运行时长有个问题如果触摸屏断电重启记录会中断。更可靠的做法是在PLC里做时长累加触摸屏只负责显示和记录。PLC里用一个定时器或者系统时钟做累加断电保持用Retain变量。这样即使触摸屏换了数据还在PLC里。7.3 报警视图的过滤和搜索当报警记录很多时操作工需要快速找到特定报警。可以在报警视图上添加过滤条件比如按时间段过滤、按报警类别过滤、按确认状态过滤。博途的报警视图支持这些过滤功能配置起来不复杂但能大幅提升可用性。7.4 记录文件的后期分析CSV格式的记录文件可以用Excel直接打开分析。我一般会教设备工程师用Excel做透视表统计每天的启停次数、平均运行时长、故障分布时段。这些分析结果对设备维护计划的制定非常有价值。8. 一些个人体会做设备运行记录这件事技术本身不复杂难的是想清楚为什么要做、给谁看、看完之后要干什么。我见过太多项目记录功能配了一堆但操作工从来不看工程师也不导出分析最后成了摆设。我的经验是记录功能要围绕“异常追溯”来设计。平时不用看一旦设备出问题能快速调出当时的运行状态和报警记录这就够了。所以记录周期不用太短变量不用太多但关键的状态字和报警必须记全。另外报警视图的配置比数据记录更容易被忽视。很多人把报警视图当成一个“显示报警”的控件其实它更是一个“追溯工具”。把报警和运行记录关联起来让操作工能一键跳转到报警发生时的运行状态这个功能的价值远超报警本身。最后分享一个小技巧在触摸屏上放一个“一键导出”按钮操作工发现异常时按一下把最近24小时的记录导出到U盘然后交给工程师分析。这个简单的动作能让故障排查效率提升好几倍。