兄弟们,干智能制造这行,最怕半夜电话响。上周我就被一个甲方爸爸从被窝里薅起来——车间主任咆哮着说MES大屏又花了,PLC数据断断续续,一条产线停了三回,老板都在现场盯着呢。
我赶到机房,一看OPC UA连接日志,好家伙,断连记录比老张的钓鱼记录还长。其实这种问题十有八九出在两个地方:防火墙和证书。今天就跟大伙聊聊这俩“罪魁祸首”,保证你下次遇到能少掉几根头发。
先说防火墙,这玩意儿是断连的头号嫌疑犯。很多兄弟觉得OPC UA跟HTTP一样,固定端口一开就完事。错了!OPC UA默认走4840端口,可一旦涉及到“发现”功能或者多服务器架构,它就会像没头苍蝇一样乱窜端口。防火墙策略要是只放行了4840,数据传着传着突然换个端口——直接被拦得死死的,表现就是“传一阵子就断,过会儿又自己好”。
打个比方,这就像你进小区,保安认得你脸,放你进大门(4840端口)。可你在小区里想从A栋串到B栋,每栋楼的门禁(动态端口)都不认识你,你只能干瞪眼。解决办法嘛,要么把OPC UA Discovery的端口范围全部放行,要么干脆在防火墙上把这两个IP之间的通讯设为白名单——车间内网安全等级没那么高,别自己吓自己。
再有一个坑,就是防火墙的“会话超时”。很多防火墙默认TCP空闲超时是300秒,而OPC UA的keep-alive心跳包默认可能就几秒一次。按理说没问题,但架不住有些国产防火墙对OPC UA这种非HTTP协议识别不准,把心跳包当成垃圾流量给切了。你看日志发现“每隔5分钟准点断”——那八成就是这毛病。改法也粗暴,把这条策略的会话超时调到最大值,或者干脆禁用状态检测。
接下来说证书,这才是真正让人头秃的环节。PLC和MES各自都有证书,就像俩人都揣着身份证,见面先核实身份。但这证如果过期了、时间不对、或者没被对方信任,连接就会断。
有个真实案例,某厂用的西门子PLC,证书有效期一年。甲方IT说去年好好的,今年突然频繁断连。我一查——好家伙,PLC证书到期日正好是前天。这种问题日志上不会写“证书过期”,只会写“连接被对端关闭”,贼坑。
所以排查证书,先做三件事:
第一,看时间。PLC和MES如果时间不同步,误差超过证书有效期容忍度,握手必失败。车间设备时间跑偏太常见了,时钟同步一定要做。
第二,看信任列表。OPC UA服务器的证书要导入到MES客户端的信任列表里,反过来也一样。很多工程师图省事,把“检查证书”勾选去掉——当时是爽了,可一旦网络抖动,双方没有有效会话恢复机制,断连后重连就可能因为“临时证书不匹配”卡死。
第三,看证书存储路径。Windows更新后,证书存储路径变化导致MES找不到证书的情况我都碰到过至少三次。你打开证书管理平台看一眼,如果发现同一张证书出现在“个人”和“受信任的根证书颁发机构”两个地方,趁早改。
顺带说个排查小技巧:在MES服务器上装个Wireshark,抓OPC UA握手包,直接搜“BadCertificate”或者“SecurityPolicy”字段,比在代码里打日志快得多。
最后总结一句,这种问题就是“排查三分钟,定位两小时”。先把防火墙的端口范围全放开(测试环境),再检查两端证书的有效期和信任关系——90%的问题都能解决。各位同行,如果车间又在群里疯狂@你,别慌,按这个思路来。更多生产环境下的坑,可以访问 itfangan.com,里面不少实战案例,比看官方文档管用多了。