在去年,因为众所周知的因素影响,项目的甲方主动提出延缓设备的交付。作为乙方,尽管项目延缓是甲方提出的,但依旧希望按期交付,这样才能回款,熬过一年。其实,2022年初,几类传感器、压控温控阀等已经安装到位,弱电也已经通到了交换机。遗留工作,主要是新控制软件的现场调试。由于设备工作在甲方车间现场的LAN中,而甲方车间并没有连接互联网,这使得乙方的技术人员无法连接到现场LAN开展调试(一些细节和时间事件,如液体、压力无法准确模拟)。为了尽快完成升级改造,乙方请到我来协助解决远程调试的问题,还发给我一个工卡,职务是“特聘现场工程师”,关于这个头衔,文章后面有题外话。先直奔主题。
接到这个项目,马上想到使用云虚拟机(静态公网IP)为中继,在甲方临时配置一个互联网连接,而后使用SSH端口映射(-L,-R)把要调试的端口带到云虚机,从而完成乙方、甲方的联调。相关技术参考:《ssh服务器重定向功能在家庭宽带动态ip资源发布中的应用》
但是,这种方式只能映射固定的端口到云虚机,而且必须是TCP协议的。详细了解乙方的软件,存在大量的UDP数据,以及广播、组播,所以不适用。如果只映射远程桌面(VNC,Linux),是可以连接到控制台的Arm器件的,但只能配置运行,若要支持乙方远程基于真实车间条件开展断点调试,还是要搞定局域网UDP的转接,把甲方的整个局域网带给乙方。
最终,我选择直接改造基于PCAP的软Hub,加入以太网隧道,一劳永逸的解决调试问题。这个技术已经在前面专门介绍,参考《EthernetOnTCP–基于Qt QSslSocket 套接字在PCAP 集线器上实现以太网隧道》
连接关系如下图所示:

其工作原理等效为在甲乙双方的交换机上插接一个直连网线。
乙方就像身临其境一般直接进行LAN以太网操作,甚至可以直接获取甲方网内的DHCP服务,ZigBee-LAN-Wifi等甲方设备的管理页面也可以直接操作。
为了完成这种连接,我们从右往左叙述过程。
甲方PCAPHub设施:

云虚机端口映射指令(在甲方git bash下运行):
ssh -o "StrictHostKeyChecking no" -R 0.0.0.0:12377:127.0.0.1:12377 debug@123.234.243.132
或者简写为
ssh -o "StrictHostKeyChecking no" -R 12377:127.0.0.1:12377 debug@123.234.243.132
(为保护乙方权益,IP地址为示意地址)
乙方PCAP-Hub设置:

最终效果,就是乙方的工作站“仿佛”真的连接在甲方的车间交换机上,并能够方便的进行在线断点调试。有了这种高大上的模式支持,只用了1周就把各类参数、门限调整完毕,大大节约了时间成本,项目按时验收。
在传统制造业、互联网,以及所有和工程相关的领域,都会生长着一类非常硬核的攻城狮。他们不仅是行业全栈工程师,又具有非常丰富的现场经验——编程、电气、电子、万用表、电烙铁都能来上两招。当某个问题出现,整个生产流程阻塞时,总能冷静分析原因,并竭尽全力、另辟蹊径利用手头的工具甚至现场创造工具,让系统迅速恢复运转。
具备这种“急诊医生”能力的技术人员,有正规的定义,叫做“现场工程师”。现场工程师是对所在行业具备完整的理论认知与实践经历,能够在系统工作的现场基于有限时间、有限资源、有限人手的情况下,创造性的解决问题的综合性工程技术人员。

除了本文的案例,笔者曾经参加过很多现场填坑,有值得写一写和编程相关的琐碎、案例,都放在了《现场工程师》专栏里。比如文章《机械盘阵高并发——使用ImDisk 与 junction显著提高整体吞吐性能》较好的阐述了现场工程师的工作场景。
其实,和编程关系不大的案例还有很多,但CSDN是计算机相关论坛,所以就不太合适写这些奇怪的杂货。近几年快递很慢,现场工程师的应变能力得到了突出。不仅是行业典型的专业能力,一些“歪门邪道”的跨界应变也非常体现现场处置能力:
现场工程师不一定是程序猿,所有工业部位都会有类似特征的工程师。如化工、机械制造。他们所学的职业技能可能不同,但能力的本质又高度一致。
我认识一个高中学弟,他是一个非常厉害的现场工程师(比我厉害多了,非计算机行业)。他的同事看他有点像看纪录片《病魔缠身》里的主角医师,“一看到他,就稳了”。本来公认要等五六天,花几万块才能解决的问题,他往往下班前几十块钱就解决——甚至还能撸一个小工具出来。这样的人,太厉害了,我了解他的成长过程,非常硬核。
当然,他已经不仅是现场工程师了,还是团队Leader。具备这样素质的现场工程师,是制造业的宝贝,也是所有人的希望。比起他来,我的起点、经历都太窄了,还要继续努力啊!活到老,学到老。