ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

昆仑通态触摸屏数据记录实战:定时存盘与U盘导出全攻略

昆仑通态触摸屏数据记录实战:定时存盘与U盘导出全攻略 做自动化项目这么多年只要碰到需要追溯工艺参数、查故障原因的场合我基本上第一时间就会想到昆仑通态触摸屏的数据记录功能。这功能在国产HMI里属于又实用又容易被用歪的典型用得好的老师傅能把历史数据玩出花定时存盘、U盘导出、曲线回放一气呵成用不好的呢存盘数据莫名丢失、时间戳乱跳、U盘插上去没反应最后只能拿手机拍屏幕凑合。这篇文章就把我从配置到落地踩过的坑、验证过的清单完整梳理一遍给正在跟昆仑通态数据记录死磕的朋友一份能直接抄作业的参考。先说清楚这篇文章解决什么问题不管你是要在空压机、注塑机还是环保设备上做参数记录只要涉及昆仑通态触摸屏的定时存盘、历史数据保存、U盘批量导出、Excel二次分析这篇都覆盖到了。内容不涉及太玄乎的理论全是组态环境里一步步能落实的操作以及我在现场调试时踩过之后才总结出来的避坑点。适合刚接触MCGS组态软件的新手也适合已经做了几个项目但总在数据完整性上栽跟头的工程师。1. 数据记录功能的核心价值与应用定位1.1 什么时候必须用触摸屏数据记录而不是PLC很多刚入行的电气工程师会有一个惯性思维数据记录是PLC的活触摸屏只是显示界面。这话对了一半。大型项目里PLC的DB块、掉电保持区、存储卡确实能承担数据存储任务但中小型项目尤其是不带存储扩展模块的西门子S7-200 SMART、三菱FX系列或者老旧的施耐德UnityPro项目PLC的存储资源非常紧张一个数据块分配给工艺参数后留给历史记录的容量少得可怜。这时候把数据记录放在触摸屏上就是最优解。昆仑通态触摸屏本身自带Flash存储空间掉电不丢失而且数据记录功能是组态软件内置的不需要额外写通信协议采集周期比PLC循环扫描还稳。加上触摸屏背后有完整的时间系统每条记录自动带时间戳配合历史曲线和报表查询比在PLC里自己写FIFO队列再通过通信上传来得省事得多。我在一个空压机项目里就是这么干的。空压机的排气温度、排气压力、运行电流、累计运行时间这几个参数客户要求每5分钟存一条至少保存3个月。PLC当时选的是经济型CPU存储区根本不够。后来全部改到昆仑通态触摸屏本地存盘U盘每月导出一次问题直接解决PLC程序一行都没加。1.2 昆仑通态数据记录的整体架构在动手配置之前建议大家先把昆仑通态MCGS数据记录这套机制的整体结构捋清楚。昆仑通态的数据记录不是简单地勾选一个“启用存盘”开关它由三个环节组成数据对象、存盘策略、存储介质。数据对象是最基础的单元相当于PLC里的变量可以是数值型、开关型、字符型。你要记录的每一个物理量压力、温度、流量都要先在实时数据库里建好对应的数据对象。存盘策略是触发动作告诉触摸屏“什么时候存”常见的有按周期存、按条件存、按变化存。存储介质则决定了数据最终落到哪里默认是触摸屏内置Flash也可以配置成U盘优先。这三个环节任何一个没配对记录出来的数据就不完整。举个例子你在用户窗口里做了个漂亮的趋势图但实时数据库里根本没建存盘数据对象那趋势图就是一张空壳永远不会刷新历史数据。这类问题我在现场见过太多次了所以下面直接按配置顺序从数据对象开始逐个说。2. 定时存盘的完整配置清单2.1 建立存盘数据对象的步骤与命名规范打开昆仑通态MCGS组态环境左侧工程树的“实时数据库”就是建变量的地方。双击进入后在空白区域右键选择“新增对象”弹出来的界面需要填对象名称、初始值、工程单位还有最关键的“存盘属性”选项卡。很多人在这里会犯第一个错误只建普通数据对象没有勾选“允许存盘”。如果你在实时数据库里新建对象后不去动存盘属性那这个数据对象只会参与实时显示不会写入历史记录。正确操作是在数据对象属性窗口里找到“存盘属性”标签页勾上“允许存盘”然后选择“定时存盘”周期按项目需求填。我习惯把存盘周期统一写进脚本控制而不是在对象属性里写死后面会解释原因。命名规范这块强烈建议用带前缀的命名方式。比如温度变量用T_Out_Air、T_Return_Air压力变量用P_Discharge、P_Suction别用AI0、AO1这种编号式命名。原因很实在数据记录导出后用Excel打开满屏的AI0_1根本不知道对应哪个测点现场排查问题的时候还要翻变量表对照效率极低。我在一个环保项目里接手过别人的程序全工程一百多个变量全部叫DATA1到DATA120做报表映射的时候差点崩溃。2.2 定时存盘的周期设定与存盘策略昆仑通态的定时存盘支持在数据对象属性里直接设定存盘周期单位是秒最小可以到1秒。但这里有一个隐藏逻辑存盘周期的实际精度受触摸屏扫描周期影响。昆仑通态的存盘操作是在后台策略中执行的如果工程同时运行了很多动画、窗口切换、脚本任务系统负荷一高实际存盘间隔会比设定值大。所以追求毫秒级精度的场合别指望触摸屏存盘1秒以上的场景问题不大。我常用的周期档位有几个设备运行状态类参数开机、停机、故障代码用变化存盘只有状态变了才写一条这样数据量小而且还原度高工艺参数温度、压力、流量用定时存盘周期一般是5秒、30秒、5分钟看客户的追溯粒度需求累计量运行时间、总产量用定时存盘加变化存盘组合防止掉电期间漏记。有一个踩过的坑必须提存盘周期设得太短数据量会暴涨触摸屏的Flash写入寿命会快速消耗。昆仑通态的Flash存储介质有擦写次数限制虽然日常使用很难摸到上限但如果你拿一台屏7x24小时运行每秒钟存一条一年下来写入次数非常可观。我一般建议产线设备最低30秒一条管理层报表5分钟一条既能满足追溯要求又不会把存储寿命快速耗尽。2.3 使用循环脚本实现灵活的定时录制直接在数据对象属性里写死存盘周期能满足80%的场景但遇到需要“开机才存、停机不存”或者“不同阶段不同存盘频率”的需求就不够灵活了。这时候需要在“运行策略”里建一个循环脚本通过脚本控制存盘开关和周期。实际做法是这样的在工程树的“运行策略”里双击“循环脚本”设置脚本循环周期比如500ms或1秒然后在脚本里写判断逻辑。举个例子空压机只在运行状态时记录排气温度IF 空压机运行状态 1 THEN T_Exhaust_Temp 实际采集温度 T_Exhaust_Temp.SaveData() ENDIF如果是不同工况切换存盘频率可以通过修改数据对象的存盘周期属性来实现IF 当前工况 0 THEN T_Exhaust_Temp.SaveCycle 300 ELSE T_Exhaust_Temp.SaveCycle 60 ENDIF需要注意SaveCycle这个属性在MCGS脚本中是否直接可用要看具体的软件版本部分版本需要通过“!ChangeSaveCycle”之类的内部函数来改变。我的建议是脚本里控制存盘开关用SaveData()控制周期用内部函数版本不一致时以软件自带的脚本帮助为准。调试时先在模拟环境里运行打开“存盘数据浏览”窗口观察数据写入情况一切正常再下载到真机。提示循环脚本里的存盘操作是阻塞式的如果存盘数据量很大脚本执行时间会拉长甚至影响画面刷新。数据量大时建议把存盘周期放大或者改用定时器策略不要在一个循环里塞太多写盘任务。3. U盘导出的配置与实操流程3.1 U盘导出功能的前提条件昆仑通态触摸屏的U盘导出功能我愿称之为“数据拯救者”。没有这个功能之前想把历史数据拿出来分析只能一张张截屏或者用上位机组态软件通过以太网读取。U盘导出直接绕开了这些限制插上U盘按几个按钮数据就变成文件落到U盘里。但不是所有昆仑通态的屏都支持U盘导出。低端型号比如部分7寸经济型可能只支持USB下载组态程序不支持U盘数据导出选型的时候一定要看硬件手册里“USB接口功能”的说明。另外U盘的格式必须正确绝大多数昆仑通态触摸屏只认FAT32格式不认NTFS和exFAT。我试过插一个64GB的exFAT格式U盘进去触摸屏提示“U盘未就绪”格式化FAT32之后一切正常。U盘导出的具体路径有两条一是在工程组态里专门做一个导出按钮调用系统的数据导出函数导出路径指向U盘二是用系统自带的“数据管理”功能在触摸屏的启动菜单里直接进入存储管理手动执行导出。第一种适合给现场操作工用第二种适合维护工程师自己操作。3.2 工程内配置U盘导出按钮的完整步骤在用户窗口新建一个按钮比如叫“历史数据导出”然后在按钮的“脚本”属性里写导出逻辑。昆仑通态MCGS的脚本语言类似VB核心是调用!SaveDataAs或!ExportData这类内置函数不同版本的函数名稍有差异我用得最多的是通过CSV文本来实现。标准的脚本流程是这样的先检测U盘是否在线再指定导出目录执行导出最后提示结果。这里贴一段我经常用的脚本骨架IF !CheckUSBPort() 0 THEN !MessageBox(未检测到U盘请插入U盘后重试) ELSE !SetDataPath(U盘根目录, DATA) !ExportData(存盘数据组1, CSV, D:\数据导出_当前日期.csv) !MessageBox(导出完成文件已保存) ENDIF上面这段只是示意因为MCGS的导出函数在不同版本中差异很大有的是!SaveDataAs有的是需要先绑定存盘文件名再复制到U盘。我给大家一个更稳妥的通用方案利用昆仑通态的系统函数“!CopyFile”把触摸屏内部Flash中的存盘数据文件直接复制到U盘。存盘数据文件通常存在触摸屏的\Flash\DATA\目录下文件名带有工程和日期信息。具体操作时先打开MCGS的帮助文档搜索“存盘数据”“U盘”“导出”这几个关键词确认当前版本支持的确切函数名和参数格式。然后在模拟环境里用虚拟U盘功能测试脚本跑通了再下载到真机。这样能省掉现场调试时反复烧录的麻烦。3.3 导出数据的Excel查看与常见格式问题无论用哪种方式导出昆仑通态最终生成的文件常见有两种格式一种是CSV文本文件用Excel直接打开就能看另一种是二进制格式的存盘文件扩展名通常是.dat或.mcg需要昆仑通态配套的“数据提取工具”或者升级版组态软件来转换。CSV格式有利有弊。好处是通用性强Excel、WPS、Python的pandas都能直接读。坏处是如果你在数据对象里定义了字符串变量并且字符串中间带有逗号或者换行符导出到CSV时会导致列错位。我在一个扫码枪项目里就踩过这个坑产品条码是ABC123,DEF456这种带逗号的格式导出CSV后一列变成了两列后来在脚本里提前把逗号替换成全角逗号问题才解决。如果导出的是二进制存盘文件处理方式不一样。打开昆仑通态组态软件在“工具”菜单里找到“存盘数据浏览”或“数据提取”选择对应的存盘文件可以浏览每条记录并另存为CSV。这个工具还能按时间范围批量提取非常适合做月度报表时使用。4. 常见问题与排查技巧实录4.1 数据不存盘或历史记录丢失的排查思路做项目最怕的就是调试时一切正常交付运行一周后客户突然说数据没记上。数据不存盘这个问题我总结了一套快速排查路径按顺序检查基本能定位。先看实时数据库里的数据对象是否勾选了“允许存盘”。这一步至少能排除一半问题很多人复制了变量之后没检查存盘属性。再看存盘策略的周期是否设置正确特别是用脚本控制存盘开关的工程如果脚本里条件判断写反了可能导致整个存盘逻辑永远不触发。三看触摸屏的剩余存储空间在“工程信息”里可以查看Flash已用空间如果空间满了新数据写不进去旧数据可能被覆盖或直接停止存盘。最后看存盘文件是否能正常打开。用昆仑通态自带的存盘数据浏览工具打开内部存盘文件如果提示文件损坏大概率是存盘过程中触摸屏断电导致的。这个问题现场最常见解决方式是选带掉电保护的工业级U盘作为扩展存储或者选购支持UPS供电的触摸屏尽量避免存盘瞬间突然断电。4.2 U盘无法识别与文件复制失败的典型场景U盘插上后触摸屏没反应这个问题出现频率极高。我的排查步骤是这样的第一看U盘格式必须是FAT32这是老生常谈第二看U盘容量部分昆仑通态老型号对U盘容量有限制超过32GB的可能无法正确识别换一个8GB的老U盘反而稳定第三看U盘接口类型触摸屏的USB Host口一般对USB 3.0的U盘兼容性不太好优先用USB 2.0的U盘。文件复制失败的情况更隐蔽。触摸屏的USB接口供电能力有限一些质量较差的U盘或者带加密芯片的U盘在电脑上好好的插到触摸屏上就“掉盘”。还有U盘里的文件夹层级太深触摸屏的文件系统不支持复杂目录结构也会导致复制失败。我的建议是U盘根目录下只建一层文件夹文件名用英文字母和数字组合不要带中文、空格和特殊符号。这个细节看起来不起眼但在昆仑通态的文件系统里中文文件名偶尔会出乱码一旦乱码文件复制就会中断。4.3 时间戳混乱与历史曲线对不上的问题历史曲线是数据记录功能最直观的展现形式但我见过不少项目里曲线显示的时间和实际时间对不上明明10点钟的数据曲线上显示的却是8点。这个问题的根子通常不在存盘功能本身而在于触摸屏的实时时钟设置不对。昆仑通态触摸屏的时钟来源有三个一是出厂自带的RTC实时时钟靠内部纽扣电池供电二是通过脚本从PLC同步时间三是通过以太网从上位机或NTP服务器同步。如果项目里PLC断电重启过或者触摸屏的时钟电池没电了时间就会回退到出厂默认值导致新存的数据时间戳全部错乱。我的解决习惯是每次开机进入主画面时用脚本从PLC读取标准时间并同步到触摸屏。如果PLC也没有标准时钟源可以在触摸屏的“系统设置”里手动校正一次时间然后在工程里做一个“时间校准”按钮让现场人员在发现时间不对时一键同步。对于严格要求时间一致性的场景强烈建议让触摸屏通过以太网连接一个NTP时间服务器或者用GPS/4G模块提供时钟源这样能彻底避免时间漂移。注意时间戳问题会影响U盘导出后的数据排序和分析结果。如果你发现导出的数据时间顺序是乱的优先检查触摸屏的实时时钟不要凭空怀疑存盘逻辑。5. 实战案例空压机触摸屏数据记录的完整方案5.1 需求梳理与数据对象设计前面说了不少理论这里用一个我实际做过的空压机项目把从配置到交付的完整流程串一遍。客户是一家中型工厂三台空压机要求触摸屏本地记录关键运行数据每台设备每5分钟存一条保存至少90天每月用U盘导出一次做能耗分析。数据对象设计如下数据对象名含义类型存盘周期工程单位P_Discharge排气压力数值300秒MPaT_Exhaust排气温度数值300秒℃I_Motor电机电流数值300秒AState_Run运行状态开关变化存盘-Time_Total累计运行时间数值300秒小时Fault_Code当前故障码开关变化存盘-建对象的顺序有个小技巧先建好所有数值型模拟量对象再建开关量对象然后统一修改存盘属性。这样能减少属性窗口的重复打开次数配置效率高很多。5.2 存盘策略落地与历史报表联动空压机的数据记录不光是存下来就完事客户还要能在触摸屏上按月查历史数据并能导出Excel做能耗对比。我在工程里做了三个画面历史曲线画面、历史报表画面、U盘导出画面。历史曲线画面用的是昆仑通态“历史趋势曲线”控件设置数据源为对应数据对象的存盘数据时间范围可以切换24小时、7天、30天。要注意的是历史趋势曲线控件在组态时如果绑定了错误的数据对象画面上会显示空白排查时去控件属性里看数据源是否选择的是“存盘数据”而不是“实时数据”。历史报表画面用的是“自由报表”或“历史报表”控件按时间范围查询存盘数据填充到表格里。昆仑通态的报表控件支持页码翻页但不支持直接在控件里修改数据只能查看和导出。如果需要客户在触摸屏上直接填写巡检记录那是另一套“输入框数据对象”的方案不在本文范围内。5.3 U盘导出画面与文件管理的细节U盘导出画面我做了一个很简洁的交互三个按钮分别是“插入U盘检测”“导出本月数据”“导出全部数据”旁边加一个状态指示灯显示导出结果。最关键的一点是导出完成后一定要弹窗提示“导出完成请安全拔出U盘”提醒操作员不要中途拔盘防止写入不完整。文件命名规则我统一用设备编号_日期范围.csv比如AC01_20240101_20240131.csv。这样客户拿到U盘后不用打开文件就能知道这是哪台设备、哪个时间段的数据。文件名在脚本里可以通过拼接字符串的方式自动生成。还有一个小细节U盘里的数据文件如果积累太多现场人员可能会把U盘插到电脑上误删文件。我给客户写的操作规范里特意强调了这一点同时建议在工程里增加一个“存储空间查看”页面显示U盘剩余空间提醒及时清理旧文件。5.4 从U盘到Excel的能耗分析闭环导出的CSV文件客户拿到的下一步就是做能耗分析。这方面的经验值得单独说一说。空压机的能耗分析通常会用到排气压力、电机电流、累计运行时间这几个参数。我建议客户在Excel里做一张透视表按月汇总平均排气压力、平均电流、总运行时间再用公式估算耗电量。这里有一个数据质量方面的坑提醒大家如果存盘是每5分钟一条一个月的数据量大约是12条/小时 × 24小时 × 31天 8928条三台设备就是接近2.7万条。Excel处理这个量级的数据没问题但如果你用的旧电脑打开带格式的Excel透视表可能会卡顿。建议导出的CSV用纯数据格式不要带公式和样式导入Excel后再统一格式化。做能耗分析时注意时间对齐。如果多台设备的数据文件长度不同有的设备中途停机了几天使用VLOOKUP或Power Query做时间轴对齐时要以主设备的时间作为基准其他设备用近似匹配不然会产生大量空行。6. 几个容易踩的隐藏雷区与个性化技巧补充6.1 一个工程里多个存盘组的管理思路当设备比较大数据对象超过几十个时建议拆分存盘组而不是把所有数据对象放在同一组里。昆仑通态的存盘数据可以按组管理例如“工艺参数组”“能耗统计组”“报警事件组”每组可以有不同的存盘周期。这样做的好处是导出时可以按组导出客户要工艺数据时只导出工艺参数组文件小、易阅读。我在一个注塑机项目里就是这么拆的温度、压力、速度归“工艺组”每5秒存一条产成品数量、合格率归“产量组”每分钟存一条故障代码、报警信息归“事件组”变化存盘。三组数据互不干扰查问题的时候可以按时间交叉比对效率比混在一堆里翻高得多。6.2 摄像头、扫码枪等扩展数据记录的可能性昆仑通态的数据记录不仅能存PLC变量还能存一部分扩展设备的数据。比如热词里提到的昆仑通态连接扫码枪扫码枪读到的条码会以字符串数据对象的形式进入实时数据库同样可以设置存盘属性。这样每一条扫描记录都带时间戳后面做产品追溯就很方便。摄像头接入是另一条可行的路子这需要触摸屏型号支持视频输入功能可以在画面里嵌入视频窗口。不过摄像头数据量比较大普通的数据记录机制不处理视频流存储它只是把视频窗口叠加在组态画面上显示。所以在设计时别想着用数据记录功能把视频保存下来视频录像应该交给独立的网络录像机去做触摸屏只负责展示和联动。6.3 物联网远程读取数据记录的搭配方案如果你的项目有物联网模块数据记录在本地同时也可以往云平台传一份。昆仑通态有一些物联网盒子或带4G模块的触摸屏型号可以把实时数据传到云端这意味着即使现场没人插U盘导出历史数据在云端也有一份备份。要注意的是物联网传输和本地存盘的周期可以不一样。本地存盘为了保证数据密度可能每5秒一条4G网络按这个频率上传流量成本很高所以云端采集周期一般放宽到30秒或1分钟或者只上传关键状态变化量。我在配置时习惯把云端通道单独建一组数据对象跟本地存盘对象分离互不影响免得物联网模块异常时反过来拖累本地存盘。6.4 隐藏的“输入换行符号”与画面显示技巧最后说一个和数据显示相关的细节。热词里有人问昆仑通态触摸屏输入换行符号这个在数据记录中也会遇到尤其是字符串数据对象里包含换行符时导出的CSV文本会呈现换行影响Excel表格结构。解决办法是在接收字符串时把换行符\r\n替换成空格或者/分隔符在脚本里用字符串替换函数就能处理。另外如果要做历史数据的画面滚动显示注意别把文本显示控件绑定到存盘数据对象上应该绑定实时数据对象否则控件只会显示最近一条记录而不是滚动播放历史记录。这个坑我帮别人排查过一次还是翻了半天资料才想到的。7. 日常维护中的实用习惯与建议做数据记录功能久了我养成了几个固定习惯分享给大家参考。第一每次工程下载到触摸屏之前先在模拟环境里跑一遍存盘数据浏览确认数据对象、存盘周期、导出函数都正常再进现场。现场烧录后再改来回跑起来真的很浪费工时。第二给每台设备做一个“数据检查”页面显示最近一条记录的时间和状态。运维人员到现场只要瞄一眼这个页面就能知道数据记录是否正常工作不用打开U盘看文件。第三U盘导出的数据文件要定期备份建议客户把U盘里的文件拷到服务器或网盘上按月份建目录存放。有些工厂的设备数据要保留两三年甚至更久只靠U盘保存风险很大U盘损坏或者丢失的案例并不少见。第四对数据记录的准确性要有一个合理预期。触摸屏的数据记录精度足够满足生产管理、能耗分析、故障追溯的需求但它不是计量级仪器不可能替代专业的无纸记录仪或者SCADA系统。如果客户需要精确到毫秒、需要审计级的数据完整性建议在方案里上专业上位机系统。我自己在实际项目里的体会是数据记录功能用得好不好关键不在于有没有复杂参数而在于前期的数据对象规划是否合理、存盘策略是否贴合现场工况以及有没有做好异常情况的兜底方案。把这三件事做扎实了昆仑通态的数据记录绝对能扛起中小型设备的数据追溯需求甚至会成为项目验收时的一个加分项。
返回列表