现场工程师出手-PCAPHub与云IP实现异地LAN工业联测

news2024/11/14 15:11:16

在去年,因为众所周知的因素影响,项目的甲方主动提出延缓设备的交付。作为乙方,尽管项目延缓是甲方提出的,但依旧希望按期交付,这样才能回款,熬过一年。其实,2022年初,几类传感器、压控温控阀等已经安装到位,弱电也已经通到了交换机。遗留工作,主要是新控制软件的现场调试。由于设备工作在甲方车间现场的LAN中,而甲方车间并没有连接互联网,这使得乙方的技术人员无法连接到现场LAN开展调试(一些细节和时间事件,如液体、压力无法准确模拟)。为了尽快完成升级改造,乙方请到我来协助解决远程调试的问题,还发给我一个工卡,职务是“特聘现场工程师”,关于这个头衔,文章后面有题外话。先直奔主题。

1.PCAPHub与云IP实现异地LAN工业联测

接到这个项目,马上想到使用云虚拟机(静态公网IP)为中继,在甲方临时配置一个互联网连接,而后使用SSH端口映射(-L,-R)把要调试的端口带到云虚机,从而完成乙方、甲方的联调。相关技术参考:《ssh服务器重定向功能在家庭宽带动态ip资源发布中的应用》

但是,这种方式只能映射固定的端口到云虚机,而且必须是TCP协议的。详细了解乙方的软件,存在大量的UDP数据,以及广播、组播,所以不适用。如果只映射远程桌面(VNC,Linux),是可以连接到控制台的Arm器件的,但只能配置运行,若要支持乙方远程基于真实车间条件开展断点调试,还是要搞定局域网UDP的转接,把甲方的整个局域网带给乙方。

最终,我选择直接改造基于PCAP的软Hub,加入以太网隧道,一劳永逸的解决调试问题。这个技术已经在前面专门介绍,参考《EthernetOnTCP–基于Qt QSslSocket 套接字在PCAP 集线器上实现以太网隧道》

1.1 连接关系

连接关系如下图所示:
链接关系

1.2 工作原理

其工作原理等效为在甲乙双方的交换机上插接一个直连网线。
等效原理乙方就像身临其境一般直接进行LAN以太网操作,甚至可以直接获取甲方网内的DHCP服务,ZigBee-LAN-Wifi等甲方设备的管理页面也可以直接操作。

为了完成这种连接,我们从右往左叙述过程。

(1)甲方

  1. 甲方设备都可以通过车间交换机访问。传感器、Zig-Bee中继器、Wifi中继的管理端也连接在交换机上。
  2. 车间交换机匀出一个口,连接便携计算机。
  3. 便携计算机通过手机热点Wifi或者USB热点,连接到云虚拟机。
  4. 便携计算机运行PCAPHub,工作在服务器模式,在TCP:12377监听。一方面,乙方的数据通过TCP:12377传过来,通过便携计算机LAN口抵达车间交换机;另一方面,车间交换机的数据会经由LAN口抓包发给乙方。
  5. 由于甲方没有固定的公网IP,便携计算机上需要安装一个Git,利用 ssh -R,把本地12377端口带到云虚机上。

甲方PCAPHub设施:
PIC
云虚机端口映射指令(在甲方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地址为示意地址)

(2)云虚机

  1. 云虚机运行着Debain系统,在甲方计算机完成ssh连接后,12377端口就被带到公网云地址123.234.243.132上。
  2. 一旦有客户端连接123.234.243.132:12377,会自动连接到甲方的PCAPHub本机的12377端口。

(3)乙方

  1. 便携式计算机通过园区wifi直接上网。
  2. 便携计算机上的PCAPHub通过12377端口,去主动连接 123.234.243.132:12377,形成通道。
  3. 便携式计算机的PCAPHub 一方面把LAN口的本地数据通过12377端口发给甲方,同时,甲方会传送网络数据到本地,通过LAN口发到乙方的调试交换机。
  4. 乙方工程师的开发工作站,就可以直接通过局域网地址操作甲方的各类设备,好像自己就插接在甲方的交换机一样。

乙方PCAP-Hub设置:
在这里插入图片描述

1.3 最终效果

最终效果,就是乙方的工作站“仿佛”真的连接在甲方的车间交换机上,并能够方便的进行在线断点调试。有了这种高大上的模式支持,只用了1周就把各类参数、门限调整完毕,大大节约了时间成本,项目按时验收。

2. 题外话:现场工程师

在传统制造业、互联网,以及所有和工程相关的领域,都会生长着一类非常硬核的攻城狮。他们不仅是行业全栈工程师,又具有非常丰富的现场经验——编程、电气、电子、万用表、电烙铁都能来上两招。当某个问题出现,整个生产流程阻塞时,总能冷静分析原因,并竭尽全力、另辟蹊径利用手头的工具甚至现场创造工具,让系统迅速恢复运转。

具备这种“急诊医生”能力的技术人员,有正规的定义,叫做“现场工程师”。现场工程师是对所在行业具备完整的理论认知与实践经历,能够在系统工作的现场基于有限时间、有限资源、有限人手的情况下,创造性的解决问题的综合性工程技术人员。

现场工程师

2.1 现场工程师的其他案例

除了本文的案例,笔者曾经参加过很多现场填坑,有值得写一写和编程相关的琐碎、案例,都放在了《现场工程师》专栏里。比如文章《机械盘阵高并发——使用ImDisk 与 junction显著提高整体吞吐性能》较好的阐述了现场工程师的工作场景。

其实,和编程关系不大的案例还有很多,但CSDN是计算机相关论坛,所以就不太合适写这些奇怪的杂货。近几年快递很慢,现场工程师的应变能力得到了突出。不仅是行业典型的专业能力,一些“歪门邪道”的跨界应变也非常体现现场处置能力:

  • IO控制电路中一电阻断裂,使用铅笔芯(石墨)临时制作滑动可变电阻恢复流水线运转。为保证电阻的温变特性,使用食用油(大豆油)浸泡电阻降温。
  • 边远小厂控制盒一9V电源模块烧毁,使用12V电源+2个手电筒灯泡(小卖部买的老式手电)串联降压临时解决问题。
  • 使用工厂木门角铁磨制卡扣,固定后局部淬火暂时修复三角皮带。
  • 温度传感器失效,用摄像头+温度计+图像处理,得到温度值实现串口推送。
  • 震动传感器故障,使用音箱扬声器改装,拆掉纸盆,塑封固定,接入声卡麦口采集波形进行识别。

现场工程师不一定是程序猿,所有工业部位都会有类似特征的工程师。如化工、机械制造。他们所学的职业技能可能不同,但能力的本质又高度一致。

2.2 顶级现场工程师的素质

我认识一个高中学弟,他是一个非常厉害的现场工程师(比我厉害多了,非计算机行业)。他的同事看他有点像看纪录片《病魔缠身》里的主角医师,“一看到他,就稳了”。本来公认要等五六天,花几万块才能解决的问题,他往往下班前几十块钱就解决——甚至还能撸一个小工具出来。这样的人,太厉害了,我了解他的成长过程,非常硬核。

  • 动手能力:现场工程师一定非常能动手。从开普勒望远镜到鸟叫门铃电路都能做,修机械闹钟调整游丝擒纵叉不在话下。
  • 学科体系:数学、外语、工业课程、计算机都不瘸腿,知其然,也知其所以然。
  • 兴趣驱动:特别会玩,别人头大的事情,对他是休息。90%的闲暇时间都在“玩”——以打磨各种小工具为乐,树莓派自制投喂机器喂乌龟、浇花。
  • 涉猎宽广: 电气、电子、编程、理论、机械都搞, 车间东门进去,抱着笔记本别着电工钳,西门出来,生产线就恢复了。
  • 吃苦耐劳: 手被车床卡破了,问题没解决,肿起来都不肯去医院,非要解决问题才下来。对待手艺非常痴迷和执着。

当然,他已经不仅是现场工程师了,还是团队Leader。具备这样素质的现场工程师,是制造业的宝贝,也是所有人的希望。比起他来,我的起点、经历都太窄了,还要继续努力啊!活到老,学到老。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio 17.5 拼写检查器预览版现已推出,来说说你的看法吧

写在前面: Visual Studio17.5版本已添加拼写检查器功能,Visual Studio 中的许多功能旨在帮助你编写所需的代码。Visual Studio帮助你确保代码的编译,甚至可以帮助代码样式。现在它甚至可以确保您的拼写准确。Visual Studio 17.5 preview 3 引…

Linux常用命令——talk命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) talk 让用户和其他用户聊天 补充说明 talk命令是talk服务器的客户端工具,通过talk命令可以让用户和其他用户聊天。linux中talk命令参数程序的使用很简单,只要知道交谈对象的地址&#x…

plt自定义主要刻度值和次要刻度值

使用set_xticks方法和set_xticklabels方法即可 1、set_xticks方法 参数说明: set_xticks(self, ticks, minorFalse)参数1:ticks:指定刻度出现的位置参数2:minor:指定是否是次要刻度返回值1:包含XTick实例…

【数学建模】华为杯研究生数学建模备赛的一些建议

文章目录前言一、建模题目介绍1.1、题目数量1.2、题目种类1.3、题目难度1.4、题目选择二、笔者的备赛过程2.1.简单的题目(本科比赛,学科大作业)2.2.真题三、编程的备赛建议3.1.matlab和python的基础语法3.2.数据预处理3.3.常用的机器学习算法…

win10系统新增的几款非常有用的基础快捷键

win就是键盘的这个键winq或wins 打开搜索winw 打开白板、全屏截图wint 配合左右箭头←→,来回切换最小化窗口在任务栏的缩略图winu 设置显示器wini 打开设置winp 屏幕投影、扩展屏幕wina 查看最近消息通知winh 语音输入法wink 查找设备(如:打…

线程池默认大小为CPU核数的2倍

1、前言 有位工作5年的小伙伴问我说,为什么Netty线程池默认大小为CPU核数的2倍,今天,我花2分钟时间给大家专门分享一下我对这个问题的理解。 另外,我花了1个多星期把往期的面试题解析配套文档准备好了,想获取的小伙伴…

Introduction to Multi-Armed Bandits——03 Thompson Sampling[1]

Introduction to Multi-Armed Bandits——03 Thompson Sampling[1] 参考资料 Russo D J, Van Roy B, Kazerouni A, et al. A tutorial on thompson sampling[J]. Foundations and Trends in Machine Learning, 2018, 11(1): 1-96. ts_tutorial 在线学习(MAB)与强化学习(RL)[…

JavaScript基础知识点整理(一)——数据类型、判定、转换、this指向

JavaScript是每一位前端开发者都必备的技能,接下来会分章节文章阐述介绍每一部分的内容。 JavaScript基础整理①1、JavaScript类型2、原始(primitive)类型3、对象(Object)类型4、类型判定4.1、typeof4.2、instanceof4.…

Vue2基础、组件化编程、脚手架、Vuex、Vue路由、UI组件库

尚硅谷张天禹老师讲课 学习视频 1、Vue简介 Vue2中文官网 1.1 Vue 介绍 一套用于构建用户界面的渐进式JavaScript框架 构建用户界面:把数据通过某种办法变成用户界面渐进式:可以自底向上逐层的应用,简单应用只需要一个轻量小巧的核心库&…

SQL--DQL

目录 1、基础查询 1. 查询多个字段 1. 举例 2. 举例 2. 字段设置别名 1. 举例 2. 举例 3. 去除重复记录 1. 举例 2、条件查询 1. 等于&#xff08;&#xff09; 2. 小于&#xff08;<&#xff09; 3. 小于等于&#xff08;<&#xff09; 4. 没有&#xff…

Java设计模式中命令模式是怎么回事/命令模式如何使用,什么场景适用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 6.4 命令模式 6.4.1 定义 将一个请求封装为一个对象&#xff0c;使发出请求的责任和执行请求的责任分隔开&#xff0c;方便了将命令对象进行存储&#xff0c;传递…

激活函数(26个)

最近在学习网络&#xff0c;发现一会这个网络用了这个激活函数&#xff0c;一会那个网络用了那个激活函数&#xff0c;这些激活函数都有什么作用啊&#xff0c;不知道&#xff0c;这里学习一下&#xff0c;整理下来&#xff0c;方便以后查阅。 激活函数&#xff08;26个&#x…

Elasticsearch7.8.0版本高级查询——组合查询文档

目录一、初始化文档数据二、组合查询文档2.1、概述2.2、示例一、初始化文档数据 在 Postman 中&#xff0c;向 ES 服务器发 POST 请求 &#xff1a;http://localhost:9200/user/_doc/1&#xff0c;请求体内容为&#xff1a; {"name":"张三","age"…

ruoyi_cloud==启动

1-下载ruoyi_cloud源码&#xff0c;新建数据库 下载ruoyi_cloud源码&#xff0c; 新建数据库ry-config&#xff0c;并在数据库中执行ruoyi-cloud源码中ry_config_20220929.sql &#xff0c; 即导入若依这个项目的一些交给nacos管理的配置信息&#xff0c;后面nacos会来读取。…

[java/初学者]类的继承

前言 继承是OOP的三大特征之一&#xff0c; 它的作用是在现有类的基础上派生出一个新的类&#xff0c;这个类中继承了现有类的数据属性和行为&#xff0c;并且能进行扩展。 基于这一特性&#xff0c;我们将前者命名为“父类”或者“基类”&#xff0c;而后者则因此命名为“子…

【matplotlib】20.其他图

#【matplotlib】20.其他图 2023.1.20 polt为点线图&#xff0c;后面我们看看plt里面的其他图 20.1 Scatter 散点图 plt.scatter() import matplotlib.pyplot as plt import numpy as npn 1024x np.random.normal(0,1,n) y np.random.normal(0,1,n)# 颜色 这个应该是个tan值…

Java多线程02(生命周期,线程安全synchronized(),锁Lock )

目录1.线程的生命周期2.线程安全和同步代码块synchronized()3.Lock锁1.线程的生命周期 2.线程安全和同步代码块synchronized() synchronized(锁){ 操作共享数据的代码 }//保证线程安全 锁默认打开&#xff0c;有一个线程进去了&#xff0c;锁自动关闭。里面的代码全部执行完毕…

DFS(一)深度优先搜索(Depth First Search)一条道走到黑

目录 一、盒子与扑克牌 二、员工的重要性 三、图像渲染 一、盒子与扑克牌 假如有编号为1~3的3张扑克牌和编号为1~3的3个盒子&#xff0c;现在需要将3张牌分别放到3个盒子中去&#xff0c;且每个盒子只能放 一张牌&#xff0c;一共有多少种不同的放法。 当走到一个盒子面前的…

【Python-Django】医疗辅助平台-数据库设计-day2.1

操作需知&#xff1a; MySQL存储很长500的汉字选用字符类型_mysql字符串太长用什么存_信息时代弄潮儿的博客-CSDN博客 mysql中的Varchar(255)可以放多少个汉字_Ecloss的博客-CSDN博客_varchar255能存多少汉字 MySQL中的Text类型_SlowIsFastLemon的博客-CSDN博客_text类型 …

自制win10 PE usb启动盘教程

拿出祖传的U盘&#xff08;16GB&#xff09;安装老白菜根据教程制作U盘然后在U盘ios文件夹里面放入从系统之家下载的win10 ios文件包然后把U盘插入需要安装的电脑上面重启电脑按住F10打开BIOS设置界面USB启动设置为<启用>将UEFI和传统模式下的&#xff1a;U盘/USB硬盘USB…