ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

手机当PLC触摸屏:四大远程监控方案与实操指南

手机当PLC触摸屏:四大远程监控方案与实操指南 晚上十一点值班室的电话响了空压机房的PLC报了高温停机。等跑到现场打开触摸屏一看故障早就发生了只是没人第一时间知道。这种情况多来几次之后我就开始认真琢磨一件事能不能让手机随时查看设备数据甚至直接操作用手机当PLC触摸屏不是把手机往机柜旁边一搁就完事而是要把原来固定在现场触摸屏上的监控、参数设置、启停操作搬到手机屏幕里。这篇文章就围绕这条路线把方案选型、实操步骤、网络部署和踩坑经验完整梳理一遍希望能给做设备维保、电气自动化或者工厂数字化改造的朋友一个可以直接抄作业的参考。1. 为什么要把手机塞进设备的“人机界面”里1.1 传统触摸屏的“三个够不到”现场触摸屏作为PLC的标准人机交互设备本身没有任何问题。问题出在“现场”这两个字上。你不可能在办公室、家里、出差途中随时站到触摸屏前面这就带出了三个典型的“够不到”。第一个是位置够不到。生产线设备分散在车间各个角落甚至在不同厂区、不同城市。哪台设备报警了哪台产量掉了不走到设备跟前根本不知道。第二个是时间够不到。设备故障往往发生在夜班、节假日、没人盯岗的时候等发现已经停机很久了。第三个是信息够不到。很多触摸屏只显示当前画面历史趋势、报警记录、产量统计这类数据要么单独做报表要么导到U盘再处理无法实时主动推送。我见过不少厂里买了一堆高品质触摸屏工程师在现场改参数改得飞快可生产管理者却只能靠打电话问“现在开起来了没有”。这就是典型的信息断层。手机当触摸屏本质上是在原有设备和人之间加了一条全天候的通道让人在不在现场都能看到设备的“脉搏”。1.2 手机方案真正解决的四个场景复盘我这些年的实际使用手机端HMI主要覆盖四类场景而不是简单替代现场屏。本地调试场景工程师蹲在电柜旁改完程序掏出手机连上同一个Wi-Fi就能同时看PLC变量和页面比抱着笔记本站在嘈杂机台旁舒服得多。车间巡检场景值班员沿着产线走一圈不用一台台开柜门看触摸屏手机扫一眼就能确认各工位的状态参数。远程值班场景设备半夜报警手机收到推送值班人员先远程确认故障性质再决定是电话叫人来还是直接远程复位。数据汇报场景生产主管在办公室打开手机看一眼产量、良率、能耗就知道当天状况不用跑现场抄表。这些场景的共同特征是数据实时性要求没有苛刻到毫秒级操作频率也不高但对“随时可看、随时可动”的要求非常明确。理解了这一点后面选型才不会跑偏。1.3 先泼一盆冷水手机不能替代安全功能在讲方案之前必须把边界划清楚。手机当触摸屏永远只能做“监控和一般性操作”绝对不要把它当成安全仪表系统的一部分。急停、安全门联锁、光栅、抱闸这类涉及人身和设备安全的回路必须按标准用硬接线和专用安全继电器/安全PLC实现不能通过手机App远程控制。原因很简单手机通信有延迟、可能断网、可能误触安全回路不能依赖一个不保证确定性的链路。另外在防爆区域、对电磁干扰极其敏感的场合、或者必须防静电的环境里普通手机能不能带进现场都有规定别为了图方便把合规问题丢了。手机HMI的定位是“第二块屏”“移动操作台”是在现场触摸屏和硬接线上再加一个便利入口而不是拆掉原有安全设计。2. 四条技术路线从零成本到深度定制坑已经替你踩过了2.1 路线一PLC自带Web服务器现在很多中大型PLC和不少国产PLC本身就内置了Web服务器。西门子S7-1200/S7-1500、部分S7-200 SMART型号以及一些支持网络功能的日系、国产PLC都能通过浏览器访问内置页面查看变量、诊断缓冲区甚至手动修改数据。手机浏览器直接访问PLC的IP地址就能看到页面。这条路最大的优点是零成本、零部署。不需要额外硬件不需要购买软件授权PLC本身有网络口就行。缺点是界面定制能力有限。以西门子S7-1200为例默认页面更适合做诊断和变量监视做复杂图形化的工艺画面就比较吃力。用户也可以上传自定义HTML页面但需要一定Web能力而且访问人数、并发连接数都收到PLC资源限制。这条路线适合设备数量不多、只需要查看关键变量、偶尔做远程调试的场景。如果你是那种“先花一百块钱验证一下能不能用”的人这条路是第一选择。2.2 路线二HMI厂家的远程屏与手机方案传统触摸屏厂家早就盯上了移动需求。威纶通的cMT系列配合cMT Viewer App可以在手机上看触摸屏画面EasyAccess 2.0云平台还可以实现远程上下载程序、远程监控。昆仑通态MCGS有云平台方案普洛菲斯Proface也有对应的手机访问套件。这类方案的逻辑很顺你原来怎么在PC上用组态软件画触摸屏画面现在还是怎么画手机端通过专用App直接呈现既有工程画面。这条路的最大好处是工程复用。工厂里如果原本就在用某个品牌的触摸屏直接在选型时换成支持手机访问的型号后续维护特别顺。权限管理、用户登录、报警列表这些功能触摸屏厂一般也都做好了部署成本体现在硬件采购和平台授权费上。缺点是会有一定品牌绑定。手机App通常只认自家硬件或自家平台不同品牌的屏混用就会比较麻烦。另外如果现场设备很旧触摸屏没有远程模块可能还得改造更换成本就不只是软件层面了。2.3 路线三SCADA/组态软件或IoT平台的Web发布工厂级SCADA组态软件基本都支持Web发布把上位机画面做成网页手机浏览器或专用App访问。像InTouch、WinCC、组态王、LabView等老牌软件都有成熟的Web客户端方案。现在大家也经常看到基于ThingsBoard、Grafana、EMQX这类IoT平台的部署方式PLC数据通过Modbus TCP/OPC UA采集到平台平台负责存储、报警、展示手机用浏览器看Web仪表盘。这条路线适合多设备集中监控、需要历史数据保存、需要做报表分析的工厂数字化项目。它不是“把一个屏搬到手机”而是“把整个设备数据平台搬到手机”。缺点是前期搭建周期长服务器、数据库、网络、权限体系都要设计一般人短时间搞不定。2.4 路线四Modbus TCP Node-RED/自建Web看板如果你手上有任何一台支持Modbus TCP协议的PLC想在几小时内做一套手机可访问的监控页面又不想被商用平台绑死那就走这条路线。Node-RED把采集、处理、展示一体化做个可视化Dashboard发布到局域网手机浏览器直接访问。再配一个MQTT或者Simple Web服务就可以上公网访问。这条路灵活度最高控制报文怎么写、页面长什么样、报警怎么推全在你自己手里。代价是你要写一点代码至少要能看懂Node-RED的流程逻辑。它是我目前最推荐给有自控基础、又想深度定制的人。四条路线的定位整理成一张表选型的时候就非常直观了路线上手难度成本界面能力远程能力适合场景PLC自带Web低零中中设备诊断、变量监视HMI厂商App方案低中高高强已有触摸屏工程、稳定好用SCADA/IoT平台中高中高强多设备集中监控、数据分析Modbus TCP自建中低高自定义取决于部署深度定制、灵活扩展3. 零代码开局S7-1200内置Web Server当手机屏3.1 在TIA Portal里启用Web服务器用西门子S7-1200做例子是因为它支持Web服务器功能的门槛低很多设备已经具备条件。在TIA Portal博途中打开设备组态左侧树形菜单找到“设备视图”选中PLC后在下方的属性窗口找到“Web server”勾选“启用Web服务器”。建议同时勾选“仅允许通过HTTPS访问”这样手机浏览器走加密通道免得数据裸奔。这里有两个容易被忽略的设置。一个是“用户管理”你必须新建至少一个用户绑定角色否则手机登录时连账号都没有。另一个是“允许访问的诊断缓冲区”等选项按需勾选不需要的全部关掉减少暴露面。设置完成后把组态下载到PLC重新上电运行。3.2 设置只读和可写权限Web Server最重要的权限设计是区分“能看”和“能动”。S7-1200的Web用户角色默认有管理员、操作员等。你可以自定义角色给夜班值班员只分配查看状态、确认报警的权限不让他修改参数给设备工程师分配可写权限允许他远程修改PID、配方、启停变量。我实际使用中会建三个账号监控账号给生产主管和值班员只有只读权限操作账号给电气工程师允许修改一般参数管理员账号只留给极少数人可以上传自定义页面、管理用户。权限别大而化之万一哪天误操作把现场设备改停了责任人能查得清楚。3.3 手机浏览器访问实测PLC设置完成后手机连上和PLC同一网段的Wi-Fi在浏览器地址栏输入https://192.168.0.10第一次访问会因为PLC自签名证书弹出安全警告Safari和Chrome都会拦截点“高级→继续访问”就能进去。但每次弹警告确实烦长期使用可以把证书导出安装到手机里并信任只是苹果和安卓的证书信任流程不一样而且PLC IP变了证书可能作废。登录后手机里能看到PLC的概览、模块状态、变量监视表。你可以在组态里把需要监控的变量拖到“监视表”中页面会定时刷新。实际体感上变量刷新大概一两秒一次用于看数据没问题但如果你要做频繁的按键操作会有明显延迟感。所以我建议把内置Web Server定位为“看状态、查故障、应急改参数”的工具不要指望它像触摸屏一样顺滑。3.4 想更精致用自定义用户页面S7-1200支持上传HTML页面做自定义监控界面。你可以做一个简洁的手机页面顶部显示设备运行状态中间几个大数字显示压力、温度、流量底部放一个启动/停止按钮。HTML页面里通过PLC提供的标准接口读取变量写变量则通过页面按钮调用对应接口。这需要会一点HTML和JavaScript但不算难。如果你不想写前端也可以直接用第三方可视化平台比如App Inventor、Simple IoT App通过HTTP接口或者OPC UA去读PLC做成手机App。不过这条链路调试成本会明显上升不如Node-RED来得直接。我的建议是先用内置页面跑通确认“手机监控”这个需求值得做再考虑把页面做精致。4. 自建一条更自由的监控链路Modbus TCP Node-RED 手机Dashboard4.1 为什么拿Modbus TCP做“通用语言”很多朋友问为什么不自研协议或者用厂商私有协议原因很简单Modbus TCP是目前工业控制领域最普及的通信标准之一几乎所有主流PLC都支持做Modbus TCP Server从站。你的设备可能是西门子、三菱、欧姆龙、汇川、信捷、台达、施耐德但只要能开启Modbus TCP就能用统一的地址模型去读写数据完全绕开每个品牌私有协议的差异。私有协议往往功能更丰富比如西门子S7协议可以直接读写DB块、数据类型更友好但前提是你必须用西门子的库去开发。当设备是多品牌混用时Modbus TCP反而是最通用的粘合剂。你只需要在PLC侧做变量到Modbus地址的映射剩下的采集、存储、展示都用同一套路。4.2 地址规划是灵魂在开始搭Node-RED之前最重要的工作不是写代码而是做一张地址映射表。Modbus TCP的数据模型包括线圈Coil、离散输入Discrete Input、输入寄存器Input Register、保持寄存器Holding Register。PLC做从站时通常会把内部位继电器映射到线圈把数据寄存器映射到保持寄存器。以一台空压机PLC为例规划表可以这样设计工艺参数PLC内部地址Modbus地址数据类型读写备注排气压力M区/数据寄存器40001Float32位只读两个连续寄存器排气温度数据寄存器40003Float32位只读两个连续寄存器运行状态M区00001Bit只读1运行 0停机加载/卸载M区00002Bit只读1加载 0卸载启停指令M区00010Bit读写前沿触发压力设定数据寄存器40010Float32位读写操作员可改这张表一定要在PLC程序里和Address Mapping配置中核对清楚。很多PLC不是默认把所有地址都映射到Modbus的需要你在PLC编程软件里手动建立映射表把M区、D区的变量逐一对应到Modbus地址上。这一步不做后面Node-RED读到的全是错的。4.3 Node-RED环境搭建Node-RED可以跑在树莓派、旧电脑、云服务器、Docker容器里。我常用的方式是在一台工控机上用Docker跑数据流和PLC内网互通页面发布到局域网。安装完Node-RED后还需要安装Modbus节点和Dashboard节点npm install -g node-red-contrib-modbus npm install -g node-red-dashboard重启Node-RED后左侧节点区会出现Modbus系列节点和Dashboard系列节点。首先要添加一个Modbus-Client配置节点填入PLC的IP比如192.168.0.10、端口号502协议类型选TCP单位ID通常填1。4.4 读取、写值、报警、趋势的完整流程读取部分我用一个Inject定时节点每5秒触发一次发给Modbus Read节点读取起始地址0、数量14的保持寄存器。Modbus Read节点返回一个包含原始值的消息这个时候寄存器里的数据是裸数据不一定是真实工程值。中间加一个Function节点做解析将两个16位寄存器拼接成一个32位浮点数再除以量程系数映射成压力和温度。浮点字节序这是最容易踩坑的地方。西门子PLC的数据存储顺序和Modbus标准顺序不一定一致现象就是读出来的压力值是一个荒谬的巨大数字。解决办法是交换寄存器顺序把读取到的第1个寄存器和第2个寄存器交换后再拼浮点数通常就能得到正常值。具体哪种顺序不同PLC不一样只能实测确认。写值部分我在Dashboard页面放一个开关或者按钮按钮按下后发出一个msgpayload设为1发给Modbus Write节点写单个线圈或保持寄存器。注意两件事一是写指令要加“操作确认”前端逻辑防止误点二是某些PLC对Modbus写操作有滤波时间或扫描周期限制连续快速写容易丢指令所以按钮最好做防抖。报警和趋势Dashboard自带Gauge和Chart控件可以把读到的温度、压力画成仪表盘和趋势曲线。再配置一个报警规则比如压力低于下限或温度超过上限Node-RED里的Switch节点判断后通过HTTP接口或Email节点推送到手机。这个推送不需要我再额外说明你甚至可以直接把Node-RED的Dashboard页面加到手机主屏幕体验接近原生App。4.5 复杂度的边界Node-RED这条路最爽的地方是把PLC数据和Web展示之间的桥接变得很轻。但也要提醒它不适合做超大规模项目。一个Node-RED实例处理几十台PLC没问题但上千点位的工业级SCADA还是交给专业平台。也不要试图在Node-RED里实现复杂的工厂业务逻辑它的强项是流程编排和快速原型不是重型业务系统。5. 手机远程访问的公网接入和网络边界5.1 局域网是首选远程才需要动网络如果是车间巡查、机柜旁边调试手机和PLC处于同一个局域网直接访问IP就能用这是最简单也最可靠的方式延迟基本在几十毫秒内。远程访问才需要考虑如何把内网的服务安全地接到公网。这里要纠正一个思维很多人一上来就想着把PLC直接暴露到公网这是高危做法千万别干。5.2 远程接入的几种安全做法如果PLC支持云平台接入或者HMI厂商有配套云服务优先用厂商云方案比如威纶通EasyAccess这类方式。设备主动向外连接云平台手机App再连接同一个平台两边都通过带认证的云端转发现场PLC不暴露任何公网端口安全模型最干净。如果要自建我的建议是把Node-RED或Web服务部署在一台云服务器上PLC内网里的采集程序/网关把数据推到云端的MQTT或数据库手机访问的只是云服务器上的Web页面。这样PLC和公网之间没有任何直连路径即使Web服务被攻破也不是直接拿到PLC的Modbus端口。如果现场确实有固定公网IP且你想让手机直接访问现场的Node-RED服务那么至少要做到换掉默认端口、开启HTTPS、设置强密码、在路由器或服务器层面限制来源IP白名单。很多路由器支持端口映射把公网的某一个端口映射到内网Node-RED设备的端口但切记只映射Web端口绝对不要把PLC的502端口映射出去。5.3 不要把原始Modbus端口直接暴露到公网这个坑我亲眼见过不止一次。有人为了远程要修改PLC配方把路由器的502端口映射到公网还图省事没设密码。Modbus TCP协议本身没有认证机制任何人能访问到这个端口就等于拿到了设备的完整读写权限。网上扫描器分分钟就能扫到轻则被改参数重则引发设备事故。需要打通网络时永远记住对外只暴露有身份认证的应用入口而不是暴露裸协议。5.4 账号、密码、操作审计手机HMI的账号体系绝不能是摆设。每个使用者分配独立账号密码定期改操作权限按“最小够用”原则分配所有远程写值操作在后台留下日志。Node-RED这类系统可以通过中间件加一个简单的操作记录表把“谁、在什么时候、改了哪个变量、改成多少”都记下来。以后出现设备异常可以先查日志再判断是不是人为操作导致。另外我还会把密码策略做进使用规范里调试期可以随便一旦系统上线初始密码必须全部改掉。很多IIoT项目被黑都是弱口令引起的这一块再怎么强调都不过分。6. 数据地址表和界面交互决定是“能用”还是“好用”6.1 先做一张地址映射表不管走哪条技术路线数据地址表都是整个项目的骨架。我习惯用Excel维护一个总表包含中文描述、PLC地址、Modbus地址、数据类型、读写权限、量程单位、报警上下限、所属车间/设备、备注。这张表既是PLC编程人员配置地址映射的依据也是前端页面设计数据来源的依据。没有这张表项目进行到一半一定会乱套。常见的混乱包括前端显示的压力值其实是另一个寄存器工程师改了一个变量但忘记同步映射表设备移交后接手的同事不知道地址含义。所以哪怕只做一台设备的手机监控我也建议先把表做出来后面扩展第二台、第三台设备时直接复制修改就行。6.2 手机屏幕寸土寸金触摸屏一般是7寸、10寸或者更大手机屏幕比它小得多。做手机界面和做触摸屏画面的逻辑完全不同。一个页面不要堆太多数据核心参数尽量不超过8组大数字优先显示用颜色表达状态而非靠大量文字。字体大小要保证在行走状态下能一眼看清按钮尺寸也要大一些至少44px以上方便手指点按也避免误点相邻操作。我常用布局是顶部一条状态栏用红绿灰显示设备总状态中间3到4个大卡片显示关键工艺参数底部放两个主操作按钮报警信息以一个可展开的条幅形式出现。这样单手就能操作也符合手机端的信息层级。6.3 防误触机制手机端最大的问题是没有物理按键的“手感反馈”。触摸屏上的启动、停止按钮在手机上一样容易误触尤其是放在兜里、包里时。所以所有“写值”操作我都强制加二次确认点击按钮后弹出一个对话框显示“确定要启动1号空压机吗”再点一次确认才真正下发。对于变动大参数的场景我还会加长按才能操作的交互配合后台日志记录。权限互锁也要设计进去。比如空压机已经在卸载状态就不要允许同时下发加载指令设备处于联动控制模式时手机端的手动操作按钮直接置灰。这些逻辑在触摸屏里本来就该有到了手机端更要严格因为你可能根据一个过期的数据做出判断。6.4 一个真实示例空压机监控页面我用这套思路做过一个空压机房监控三台空压机每台有独立的压力、温度、运行状态、故障代码。页面按“设备选择参数详情”设计首页是三台机的缩略状态卡片点击进入单机详情显示排气压力、排气温度、运行电流、加载状态、累计运行时间、故障历史。底部两个按钮“远程启动”“远程停止”都做了二次确认和互锁判断。部署以后值班员不用每天下到地下室抄表主管在办公室就能看到每台机的加载率维修人员也能在收到报警推送后先远程查看故障代码再决定是否到场。这个项目完全是用Node-RED加Modbus TCP实现的没有花一分钱买软件授权效果完全够用。7. 手机监控现场踩坑实录六类问题与排查链路7.1 手机连不上设备先顺着网络逐层找手机访问不了PLC时最容易犯的错误是直接怀疑软件配置。正确排查链路应该是先确认手机和PLC在同一个网段再ping设备的IP地址确认二层三层通然后用手机浏览器访问一个网页服务测试端口是否通最后才看PLC的Web服务或Node-RED日志。实际案例里最常见的原因是工厂的Wi-Fi AP开启了“客户端隔离”或“内部隔离”手机能上网但访问不了其他内网设备很多人查了半天以为是PLC问题。另外手机自动获取IP时和PLC不在同一网段也非常常见解决方法是给PLC设置固定IP并确保手机也手动指定或路由可达。7.2 地址错位和浮点字节序排查完网络第二个大坑就是数据不对。Modbus地址看起来是数字但在不同软件和PLC里表示的却是同一寄存器不同的偏移。PLC手册里说保持寄存器4x0001对应Modbus协议地址0Node-RED里填的起始地址也往往从0开始很多人照着手册填“1”结果读出来永远是0或者错位。经验法则协议地址输入0对应4x00001输入1对应4x00002。每个品牌的偏移可能不同读几个已知值做验证再全量使用。浮点字节序又是另一层坑。我在现场遇到过温度显示成天文数字检查半天发现是PLC把两个寄存器按“高字在前”存储而Modbus读节点默认“低字在前”。交换寄存器顺序之后立即恢复正常。这种问题靠看文档很难一次定位最快的方法是用Modbus Poll这类工具手动读几个已知值边看边调字节序。7.3 数据写不进去只读、写保护、权限写操作失败是手机端最让人崩溃的。逐一检查先看Modbus地址是否有写权限有些PLC默认把输入寄存器设置为只读再看PLC里是否有数据块写保护或者钥匙开关然后看Node-RED的Modbus Write节点配置确认写的是单个寄存器还是多个寄存器最后是手机页面有没有隐藏错误信息。还有一个常被忽略的坑某些PLC对Modbus写操作的处理和内部扫描周期有关如果写入线圈或寄存器时PLC正在执行握手、互锁逻辑写入结果会被程序覆盖。所以手机端看“写成功”并不代表PLC里值变了要读取回来确认。7.4 数据刷新慢或页面卡死手机页面数据刷新卡顿90%是因为轮询的寄存器太多太频繁。我一开始把所有参数都每1秒轮询一次手机端连界面都卡。后来把读周期拉到5秒只在前台页面可见时才轮询切换到后台就暂停体验立刻好转。Node-RED里可以加一个简单的页面状态判断Ui控件发送消息到后端控制Inject的启停。或者对数据做阈值变化判断只有状态变化时才推送到前端温度这种缓慢变化的量就没必要高频刷新。7.5 浏览器白屏和证书告警自签名证书导致的“白屏”是手机浏览器的安全机制不是系统Bug。解决办法是手动信任证书或者在部署环境里挂一个正式的HTTPS证书。如果使用的是Node-RED自建服务用Nginx这类工具可以做证书终结但配置起来需要一定网工基础。另外不同厂商的PLC内置Web页面在手机浏览器上的兼容性差别很大。有些页面在电脑上正常在手机上横屏显示错位。优先用Chrome和Safari试国产浏览器有些会拦截自签名证书需要手动处理。7.6 时间不同步导致报警记录混乱远程监控一旦要记录报警和操作日志就绕不开时间同步。PLC内部时钟不准采集服务器的时区不对手机看到的报警时间就会错乱排查问题时非常被动。部署完成后第一件事就是把PLC的时钟同步做好设备端可以用NTP或者PLC编程软件手动对时服务端确保时区用北京时间别用UTC导致相差8小时。还有一点报警和日志最好都记录统一的标准时钟例如全用服务器时间不混用设备时间和操作者手机时间。否则出了事故回查日志时间线都对不上。这套东西做到最后我最大的体会是用手机当PLC触摸屏重点不在于手机本身而在于打开了一条“数据随时可见、操作处处留痕”的通道。选型时先想清楚规模和安全边界搭链路时先把地址表和权限体系立起来再动手去画页面整个项目就会顺畅得多。我目前的方法是三层屏互补现场触摸屏做精细操作手机Web看板做巡检查看和远程应急后台日志加云平台做归档分析。手机这块第二屏熟练起来之后现场很多“跑到跟前才发现”的尴尬事基本都能提前化解掉。
返回列表