干工控这行的,谁还没被触摸屏折磨过几回。前段时间朋友厂里空压站改造,两螺杆机一台冷干机,原来的按钮柜拆了,让我上一套Proface触摸屏监控界面,要求一看压力温度、二有历史报警、三能在几个画面之间来回切。项目做完,把GP-Pro EX从头到尾捋了一遍,今天把这些东西写出来,算是给想做Proface触摸屏项目的同行一份完整的实战参考,尤其是历史报警和画面跳转这两块,真不是光拖几个控件就完事的事。
这套界面不复杂,但它们能一直稳定跑在生产线上,靠的是前期把需求拆明白、把变量表定清楚、把报警存储和跳转逻辑设计得贴近操作习惯。文章里我会把每一步怎么做、为什么这么做、容易踩的坑都讲一遍。适合刚接触GP-Pro EX的新人,也适合已经做过几个项目但想规范一下流程的工程师。
1. 先聊清楚:这套监控界面到底在解决什么问题
1.1 空压站监控的真实需求拆解
很多人一上来就打开GP-Pro EX拖按钮、画管道,这是最常见的错误。做HMI项目,第一件事不是画画,而是把现场需求翻译成“地址、数据、动作”三件事。
这个空压站的实际需求拆下来无非四类:
- 实时监控:两台空压机的排气温度、排气压力、油压、运行电流,冷干机的蒸发压力、露点温度,三台电机的启停状态和故障状态。
- 操作控制:操作员要能实现单机启停、模式切换、参数设定,触摸屏上必须给出明确的按钮反馈,防止重复触发和误触发。
- 历史报警:排气温度过高、油压过低、电机过载、滤芯堵塞、门开关异常等故障必须带时间戳记录下来,既能实时弹出,也能事后翻查。
- 画面组织:监控界面不能只有一页死画面,需要主画面、单机详情、报警总览、历史趋势、参数设置几个页面之间自由跳转,还要能记录“你从哪个页面跳过来的”,方便一键返回。
把这些需求落成表格,就是一张简单的IO清单。我给每个点位起好名字,比如AI_T_Comp1_Exhaust表示1号空压机排气温度,DO_Pump_Run表示水泵运行指令,后面所有画面、报警、趋势图都引用这些逻辑名,而不是直接用裸地址。哪怕PLC程序后面改了点位,只要变量名不动,画面和报警几乎不用重做。
1.2 为什么我选Proface GP-Pro EX而不是别的软件
客户点名要Proface,这当然是最直接原因,但抛开客户要求,我自己也认可GP-Pro EX这套软件。原因有三个。
第一,它的开发环境是集成式的,画面编辑、数据管理、报警设置、逻辑脚本、通信配置全在一个工程里,不需要像有些牌子那样画面一个软件、通信一个软件、配方又是一个软件。工程文件保存后整体打包,后续维护非常方便。
第二,它的模拟器做得比较成熟。GP-Pro EX可以在没有真实触摸屏、甚至没有PLC的情况下,把工程编译后在电脑上跑起来,变量状态也可以手动强制,画面跳转和报警逻辑都能提前验证。这个能力对工期紧的项目太关键了,我后面专门有一节讲模拟器联调。
第三,GP-Pro EX对Modbus TCP、三菱、西门子这些主流协议都有现成驱动,而且驱动更新比较及时。以前有个项目用的老款Proface屏,软件版本太老,驱动怎么都不认新PLC,后来升级到V4.8就解决了。所以这事我后来养成了习惯:收到触摸屏先确认软件版本,别等联调了才发现驱动不匹配。
另外说一句,热词里有人提到西门子的触摸屏不会用,我的建议是换品牌之后千万别拿着原来的操作习惯硬套。Proface的GP-Pro EX和西门子WinCC的工程结构、变量机制完全不一样,老老实实新建工程、看一遍驱动手册,比啥都强。
2. 工程起步:软件安装、型号选择与变量规划
2.1 软件安装与工程创建
GP-Pro EX的安装包比较大,V4.8版本在Windows 10和Windows 11上都能跑,但有几个细节要注意。装之前先把杀毒软件退掉,不然安装时模拟器组件和USB传输驱动很容易被拦掉;安装路径不要带中文,否则后面打开工程偶尔会出奇怪问题;装完以后建议右键“以管理员身份运行”启动开发软件,特别是用USB线传输工程的时候,权限不足会找不到设备。
新建工程第一步是选触摸屏型号。这个项目用的是GP4402WW,10.4寸,分辨率800x600,带以太网口和串口,整体性价比合适。选型号的时候要提前确认三件事:
- 分辨率是否匹配画面尺寸,别把1280x800的工程下到800x600的屏上。
- 通信口数量够不够,如果同时要接PLC、打印机、条码枪,就必须选多串口型号。
- 存储方式支不支持SD卡或U盘,这事直接决定历史报警能不能外存备份。
工程建好后,先把“系统设置”里的时钟来源、语言、字体指定好。我当时把中文设为界面语言,并把触摸屏的实时时钟设置为上电自动校准,这个动作看起来不起眼,实际上直接关系到后面历史报警的时间戳准不准。很多人报警查不出来原因,最后发现是触摸屏电池没电、时间永远停在2000年,画面再好看都白搭。
2.2 变量命名和地址映射表:后面所有报警和跳转都靠它
GP-Pro EX里变量的载体是地址,你可以直接用PLC地址落在画面上,也可以把PLC地址映射到触摸屏内部地址上。我的习惯是建一张完整的变量映射表,不直接裸用地址。这张表是整个工程的骨架,所有画面部件、报警设置、D脚本都从这张表取名字。
简单列几条当时用的地址映射,给你一个参考:
| 逻辑变量名 | PLC地址 | 数据类型 | 触摸屏内部地址 | 说明 |
|---|---|---|---|---|
| AI_T_Comp1_Exhaust | 400011 | 有符号16位 | D0100 | 1号空压机排气温度 |
| AI_T_Comp2_Exhaust | 400021 | 有符号16位 | D0110 | 2号空压机排气温度 |
| DI_Comp1_Run | 0x0001 | Bool | LM0000 | 1号空压机运行状态 |
| DI_Comp1_Fault | 0x0002 | Bool | LM0001 | 1号空压机综合故障 |
| MW_Alarm_Sum | 400101 | 无符号16位 | D0200 | 报警汇总字 |
| MW_Page_Return | 内部寄存器 | 无符号16位 | D0201 | 返回画面ID |
变量名我用的是“类型_设备_测点_属性”的格式,比如AI表示模拟量输入,DI表示开关量输入,MW表示中间字。这套命名规则在程序大了以后特别有用,哪怕过半年再打开工程,一眼就能看出这个变量是干什么的。
触摸屏内部地址D区是非易失性的,断电不丢,适合存报警记录指针、画面返回ID这类需要保持的数据。LM区是易失性的,适合存运行状态、临时标志位,断电报错也没关系。把这两类数据区分清楚,能少踩很多掉电丢失的坑。
2.3 通信参数:先把PLC和触摸屏打通
通信配不通,后面一切都是空谈。这个项目PLC支持Modbus TCP,触摸屏作为Modbus TCP客户端去轮询PLC。
GP-Pro EX里新建驱动时选择标准Modbus TCP/IP驱动,填写PLC的IP地址和端口号。当时PLC的IP设的是192.168.1.10,触摸屏是192.168.1.20,子网掩码255.255.255.0。这里有个非常容易忽略的点:很多PLC做Modbus TCP从站时,端口并不是默认的502,而是厂商自定义端口。如果现场联调时触摸屏一直报通信错误,先用电脑上的Modbus调试工具测一下PLC到底在哪个端口响应,再回来填GP-Pro EX的通信端口。
通信轮询周期也不要一味调快。这个项目有二十多个模拟量、三十多个开关量,我把一般数据的轮询周期设在200ms,报警汇总字单独建了一条高优先级通信组,周期设为50ms。这样既保证报警能秒级弹出,又不会把CPU和网络带宽吃满。
GP-Pro EX里还有通信超时和重试次数的设置,我的经验是超时不要设太短,尤其现场有线缆老化或者干扰的情况下,建议超时500ms、重试2次。设得太短会频繁触发通信故障提示,反而干扰操作员注意力。
3. 画面跳转:从按钮层面到自动层面的实现
3.1 手动跳转:按钮动作设置里的“画面切换”
画面跳转听着简单,就是按个按钮换一页。但真做起来,细节决定体验。
首先,我建议把导航按钮统一放在画面上方的公共区域,高度大概60像素,左右排开:主监控、1号空压机、2号空压机、冷干机、报警记录、趋势曲线、参数设置。每页都放同一组按钮,操作员不用想“我现在在哪”,随手就能跳。
GP-Pro EX里给部件添加动作时,选择“画面切换”,指定目标画面ID。这里有个小细节:触发方式不要选“按下时”,要选“释放时”。原因很现实,操作员手指按上去的时候还没想好,可能想取消,如果按下立即跳转,就会误切页面。释放时执行意味着必须按到底再松开才触发,误碰一下不会跳。
其次,画面切换效果不要花哨。GP-Pro EX支持淡入淡出、滑动切换这些效果,但工业触摸屏的CPU资源有限,动画效果在高负载时会引起画面撕裂甚至短暂黑屏。我全部选了“无效果”或“直接切换”,实测最稳。
最后一个实用技巧:每个画面都放一个“返回主画面”的按钮,但真正好用的做法是“返回上一页”。我在内部寄存器D0201里保存来源画面ID,跳转之前先记录,然后返回按钮读这个ID跳回去。比如操作员正在1号空压机详情页,突然弹出报警,他点了报警跳转去了报警页,处理完点“返回”就回1号空压机详情页,而不是回主画面。这个细节会让操作员觉得这套界面“懂我”。
3.2 报警自动跳转与弹窗交互:用D脚本实现
手动跳转好做,真正考验水平的是“报警来了怎么办”。如果你只配了报警显示部件,操作员盯着主画面是看不到报警信息的,所以必须做自动跳转或弹窗。
我的做法分两级。第一级,报警发生时画面顶部公共区域闪烁显示最新报警内容,用一个小的报警显示部件专门显示当前激活报警,红色字体、白底闪烁,想忽略都难。第二级,对于紧急报警,直接用数据触发器监视PLC汇总位。比如MW_Alarm_Sum的第0位是1号空压机综合故障,我建一个数据触发器,条件为“位上升沿”,动作设为画面跳转到报警总览页。
这里不建议把每一条报警都配成自动跳转,否则一个设备多点故障,画面就会在几个页面之间来回跳,操作员根本没法正常工作。正确做法是:普通报警只闪烁提示,紧急报警或者某一类汇总报警才自动跳转。
如果想做更复杂的逻辑,比如“连续三次温度高才跳详情页”,就要用GP-Pro EX的D脚本。类似这样:
// D脚本示例:报警次数累计,超过3次跳转画面 if (D0200 & 0x0001) { D0202 = D0202 + 1; if (D0202 >= 3) { SetScreen(2); // 跳转到1号空压机详情页 D0202 = 0; } }D脚本的语法和C语言很像,GP-Pro EX里有专门的编辑窗口,可以直接引用之前变量表里的地址。写脚本之前强烈建议先想清楚触发条件,这个项目里脚本都是“事件型”的,尽量不要写死循环,否则触摸屏扫描周期会变慢。
3.3 画面资源管理:跳转黑屏往往不是逻辑问题
画面跳转出黑屏或者卡顿,大多数人第一反应是程序逻辑错了,但其实大部分是资源问题。GP-Pro EX里一个画面能放的部件数量没有绝对上限,但触摸屏渲染不过来的时候,跳转就会出现“闪一下黑屏再出来”。
我做这套界面时定了几条规矩:
- 静态背景图统一转成JPG或者PNG,分辨率不要超过画面实际分辨率的2倍,不要在工程里塞1920x1080的大图当背景。
- 一个画面上同时显示的动画部件控制在30个以内,比如电机旋转、管道流动效果这些东西,能少则少。
- 需要频繁刷新的数字显示部件不要用复杂字体,使用系统默认字体,自定义字体重新加载时会明显卡顿。
- 隐藏的部件会照常占用系统资源,尤其重叠放置的部分,尽可能删干净。
如果工程已经做大了、现场跳转还是卡,可以升级触摸屏的Runtime固件。GP-Pro EX的模拟器里能直接查看工程占用的内存,并给出建议。我常年保持习惯:画面做完,先看资源占用,超标了就压缩图片、删冗余部件,而不是等现场被甲方骂了再改。
4. 历史报警:从配置到查询的完整链路
4.1 报警数据从哪来:报警组与消息定义
历史报警是整个项目里客户最看重的功能,也是配置起来最需要耐心的部分。GP-Pro EX里的报警分为当前报警和历史报警,历史报警本质上是“当前报警发生时,把时间、消息、状态存到存储区,之后可以翻查注销记录”。
打开GP-Pro EX的报警设置,第一步是建报警组。我把报警分了三组:第一组是空压机本体报警,第二组是冷干机报警,第三组是系统通用报警。分组的好处是报警显示部件可以按组过滤,操作员可以选择只看某一台的报警记录,不用在一堆记录里大海捞针。
然后定义报警消息和触发条件。GP-Pro EX支持位报警和字报警两种方式:
- 位报警:某个BOOL地址变为ON时触发,适合电机过载、门开关异常、综合故障这类离散信号。
- 字报警:某个字地址的数值大于、小于或等于设定值时触发,适合温度高、压力低这类模拟量超限。
这个项目里,1号空压机排气温度高我就是用字报警做的:数据源选AI_T_Comp1_Exhaust,条件设为大于105,报警消息“1号空压机排气温度高”,报警级别设为1级,颜色设为红色。2号空压机、冷干机蒸发压力低等报警同理。
报警消息一定要写给操作员看得懂的话,不要写类似“X001>105”这种工程师语言。“排气温度高,请检查散热器”比“Temp High”有用一万倍,关键时刻能少误操作。
4.2 存储策略:报警记录写到哪、写多少、怎么不丢
历史报警要保存,就要考虑存储介质和容量。GP-Pro EX可以将报警历史保存在触摸屏的内部非易失存储区,也可以保存到连接的SD卡或U盘。内部存储速度快、无需额外硬件,但容量有限;外部存储容量大、方便导出,但多一个容易松动的SD卡。
我将报警历史同时启用内部存储和SD卡存储,内部存最近2000条,SD卡存全部记录,满了自动循环覆盖。报警记录单条约128字节,2000条约256KB,对内部存储来说完全没压力。SD卡建议用工业级,普通消费卡在振动大、温度高的柜体里寿命会明显缩水。
这里有一个极其重要的设置:报警历史保存的“写入周期”。GP-Pro EX默认可能不会实时把每条报警落盘,如果设置成定时批量写入,一旦现场突然断电,缓冲区里还没写进去的报警记录就全丢了。我把写入策略设为“每条报警立即写入”,牺牲一点点存储寿命,换掉电不丢报警。
另外一个容易忽略的是报警确认和恢复状态的记录。历史报警里最有用的是三段时间:发生时间、确认时间、恢复时间。配置报警部件时一定要把这些时间列全部显示出来,这样操作员或者设备厂家查故障时才能还原完整过程:“这报警14:02发生了,14:05操作员确认,14:18温度降下来自己恢复了。”这一段时间线,能让维修少走很多弯路。
4.3 画面上怎么查:报警显示部件与翻页
报警数据存好之后,最终要在画面上呈现。GP-Pro EX里用报警显示部件,我给报警总览页放了一个能显示200条历史记录的表格,按时间倒序排列,最上面是最新一条。
部件属性里我做了这些配置:列顺序是时间、消息、状态;超出显示范围加滚动条,并配了上翻、下翻、首页、末页四个按钮,操作员用触摸笔或手指就能翻页;不同类型报警用颜色区分,1级报警红色、2级报警黄色、3级报警绿色,一眼就能看出故障严重程度。
还有两个功能强烈建议启用:一是报警确认按钮,操作员确认后报警状态从“闪烁”变为“保持”,表示有人处理过了,但故障没恢复前记录还在;二是当前报警和历史报警切换按钮,当前报警页显示现在还有哪些故障没消除,历史报警页显示曾经发生过的所有记录。这两页的逻辑不能混,很多新手把当前报警当历史报警用,结果报警恢复后记录消失,甲方自然不买账。
4.4 报警时间戳是这个流程里最容易被忽略的坑
报警记录里最坑的事,不是报警没触发,而是触发后时间不对。之前有一次项目调试,报警明明下午三点发生,触摸屏上的时间戳却写着早上七点,查了半天发现是触摸屏内部时钟的时区设置不对,GPS时间同步又没做,导致偏移了8个小时。
GP-Pro EX在系统设置里有时钟来源选项,可以选本地时钟、PLC时钟或者电脑时钟。我的建议是:如果现场有PLC并且PLC自身时钟可靠,让触摸屏在上电时主动从PLC读取一次时间校准;没有PLC时,就定期手动校准触摸屏。还有一个小细节:触摸屏背后的电池是给RTC供电的,电池没电时断电时间一长,时间就会回到出厂值。所以每次交货前我都会确认电池电压,并且在启动画面里放一个时间显示,操作员能直观看到当前时间是否正常。
5. 联调与常见问题:从模拟器到真机的坑
5.1 先用模拟器把报警和跳转跑通
GP-Pro EX最实用的功能就是模拟器,我用它把整个项目联调时间压缩了至少一半。工程写完后,在开发软件里启动模拟器,电脑上就能看到和真机一样的画面,按钮能按、页面能跳、报警能显示。
但官方模拟器的变量状态是死的,没有PLC给它数据。我的土办法是:在调试阶段,把报警触发地址临时从PLC地址改到触摸屏内部地址LM区或D区,然后在模拟器里手动强制这些内部地址的ON/OFF,测试报警是否触发、跳转是否正常。测试通过后,再把地址批量改回PLC地址。这一步看起来多此一举,实际非常管用,因为报警逻辑、页面跳转、画面显示这套东西完全和PLC无关,没必要等现场PLC就位再调。
还要提一个经验:模拟器证明程序没问题,不代表真机就没问题。模拟器跑的是开发电脑的CPU,资源占用和真机完全不同。所以我平时把模拟器当作“逻辑验证工具”,真机上电后一定会再花两个小时把每条报警、每个画面跳转完整过一遍。
5.2 下载工程保留与系统区的雷区
GP-Pro EX把工程下载到触摸屏时,通常有选项问你是否要同时格式化或覆盖系统区。很多工程师图省事一路点下一步,结果下载完成后发现报警历史被清了、屏幕校准也不准了,甚至触摸屏的IP地址被重置了,还得重新改。
下载前要做两件事:一是把触摸屏里已有的报警历史、配方数据、系统设置全部备份出来,尤其现场已经投运过的屏,不能想当然覆盖;二是在传输工具里选择“保留数据区”这种选项,只更新用户程序和画面,不动系统区。我经历过的教训是:停机维护就两个小时,下载完还要重新设IP、重新校准触摸、恢复配方,时间全浪费在恢复上,还容易被甲方认为你不专业。
顺便说一句,工程文件一定要经常另存版本。GP-Pro EX的工程是带版本关系的,旧版软件打不开新版工程,新版软件打开旧工程一般没问题。出差时最好带最新版安装包,不然现场电脑版本不对,工程打不开就尴尬了。
5.3 真机常见问题速查
根据这几年经手的项目,我把Proface触摸屏最常见的现场问题整理成一个表,方便你照着排查:
| 现象 | 常见原因 | 解决办法 |
|---|---|---|
| 报警记录时间差8小时 | 时区设置错误或RTC电池没电 | 校准时钟来源,更换电池 |
| 下载后报警历史丢失 | 覆盖了系统区或数据区 | 传输时保留数据区,先备份再下载 |
| 中文报警消息显示方框 | 工程未加载中文字体 | 画面设置中指定中文字库 |
| 画面跳转偶尔黑屏 | 图片资源过大、控件重叠过多 | 压缩图片、清理隐藏部件 |
| 触摸点击位置偏移 | 屏幕校准数据异常 | 进入系统菜单重新校准 |
| 通信频繁断开 | IP冲突或驱动版本不匹配 | 固定IP,升级GP-Pro EX驱动 |
| 上电后停在启动LOGO | 系统文件损坏 | 用SD卡恢复固件 |
这里单独说一下触摸校准。触摸屏用久了或者下载工程以后经常会出现按键偏位,这不是硬件坏了,而是校准参数丢了。GP-Pro EX里有校准入口,跟着十字光标点一遍就回来了。但如果你下载工程时把系统区格式化了,校准数据也会被清掉。所以“下载前备份,下载时不覆盖系统区”这条规则,无论如何都要记住。
6. 项目交付后我还会做的事:扩展与维护
6.1 从本地报警到数据导出
项目交付不代表结束,甲方后面一定会提新需求,最常见的是“能不能把报警记录导出来”。GP-Pro EX可以把报警历史通过SD卡或U盘导出成CSV文件,操作员在触摸屏上按一个按钮就能导出,不用电脑连上来读。
我在报警页右上角放了一个“导出报警”按钮,点击后把所有历史报警记录按CSV格式写入U盘,文件名自动带当天日期,比如ALARM_20250621.CSV。操作员只要每周插一次U盘,点一下按钮,就能把一周的报警记录带走。这个功能成本极低,但甲方非常喜欢,因为设备维保分析都靠这份数据。
更进一步,如果现场有企业内网,可以考虑使用GP-Pro EX的画面监控功能,在工程师站上直接通过浏览器看触摸屏画面,这就相当于做了一台轻量级的SCADA。前提是网络规划好,不要让触摸屏IP段和办公网络冲突。
6.2 维护要点:备份、时钟、SD卡
最后聊几句后续维护。触摸屏这种设备,只要供电稳定、环境温度不过高、面板不做暴力操作,基本不会坏。最容易出问题的反而是小地方:SD卡接触不良导致报警导不出去、RTC电池耗尽导致时间不断回退、柜内灰尘堵塞了散热孔导致屏体过热。
我一般会在交付时给甲方一份维护清单,写清楚:每月检查一次SD卡剩余容量、每季度备份一次工程文件和报警数据、每两年检查一次RTC电池、不要随意格式化触摸屏。这些动作看起来琐碎,但能把故障率压得很低。
最后再分享一个自己的习惯:每个项目交付后,我都会把GP-Pro EX工程文件、PLC程序、地址映射表、报警清单、操作说明书一起打包,命名带日期,放到网盘和现场电脑各一份。半年后甲方再叫我改画面加按钮,我打开工程对照地址表,半小时就能改完。反过来,我接过一个前任离职的项目,工程文件版本混乱、地址表缺失、报警消息写得莫名其妙,硬是花了两天才理清楚。一个靠谱的工程师,不光要把功能做出来,还要把项目资料留明白,这才是这个行业的“长期主义”。