燕京启航大厦,天工超级计算中心。
八百个刀片式服务器节点发出低频声响,十六台大功率精密风机,对着机柜底部的进风口持续输送摄氏十六度的冷风,冷凝水顺着排水管快速流走。
这里的耗电量极大,启航集团为此专门向市供电局申请拉了一条万伏专线,与此同时,专属发电站即将竣工。
倪光楠坐在超算中心玻璃隔断外的主控台前。
从陈锋把长沙抓回来的数据接入读取接口开始,他已经在这个位置连续盯了两天。
屏幕上的数字不断跳动,那是八百个算力节,点正在对三菱协议的底层数据帧进行穷举碰撞测试。
“倪老,速度环的二级动态映射掩码还是解不开。”
陈锋拿着一叠刚打印出来的十六进制代码表走到主控台前,他的工作服全是褶皱,下巴上长出一层胡茬。
“算力中心跑了一千三百万次多项式组合,每次带入长沙那台泵车在空载伸臂阶段的速度控制字,反推出来的基准指令全是对不上的乱码。”
倪光楠接过代码表,手指顺着页面上那些由0和1组成的长串字符向下滑动。
三菱的通信协议极其霸道。
它没有采用国际通用的明文浮点数格式来发送速度指令,而是用了一种内部专用的十六位控制字。
此前倪光楠已经破解了它的身份认证静态ID,但在解析实际控制机床运动的速度环指令时,撞上了一堵墙。
数据规律显示,随着伺服驱动器在网络拓扑结构中的物理地址发生变化。
也就是从第一号伺服变到第十号伺服,上位机下发给它们的同一个转速指令,在物理层呈现出的十六位代码截然不同。
天工团队初步判定,这是三菱采用的二级动态映射掩码技术。
为了防止第三方通过抓包破译指令集,三菱把设备物理地址和速度指令进行了某种数学运算的绑定。
“再加两百个节点的算力,把非对称加密的哈希碰撞算法全部加进去跑一遍。”倪光楠给出指令。
陈锋没有立刻执行。
他在旁边的折叠椅上坐下,搓了搓脸颊。
“倪老,我有个想法,我们可能从一开始就走错了方向。”
倪光楠抬起头,目光转向陈锋。
“我们一直把这层阻碍当作加密手段去破解。”陈锋指着代码表上的数据长度。
“驱动器内部的信号处理芯片算力极其有限,一微秒级别的实时通信周期,要求芯片必须在纳秒级别完成指令解码。
如果采用高强度的非对称加密,或者复杂的哈希运算,芯片根本算不过来,会导致通信延迟。
这违背了工业控制强实时的根本原则。”
倪光楠眉头微锁。
他认可陈锋对底层硬件运算极限的判断,这确实存在物理矛盾。
既要极高的实时响应速度,又要复杂的防破解加密,以当前的硅片制程工艺无法兼顾。
“如果不加算力,你认为这层代码变化的逻辑是什么?”倪光楠问。
“数据压缩。”陈锋站起身,走到白板前,拿起马克笔写下一个十六位的二进制框图。
“伺服驱动器内部的寄存器空间非常宝贵,他们不需要加密,他们只需要极致的数据传输效率。
为了在有限的带宽内塞进更多的控制轴信息,他们放弃了完整的十六位指令传输。”
陈锋在框图中间画了一条竖线,将十六位劈成两半。
“高八位,作为基准值,低八位,作为动态偏移值。”陈锋快速写下推演公式。
“在系统冷启动握手阶段,上位机根据各个驱动器的物理地址,向它们单独下发一个不同的高八位基准掩码。
这个掩码存在驱动器的静态随机存取存储器里,在后续的实时运行中,通信总线上只传输低八位的偏移量。
驱动器收到低八位,结合自己内存里的高八位掩码,组合成完整的速度指令。”
倪光楠的视线瞬间锐利起来。
这套逻辑极其巧妙,极大地节省了总线通信带宽,提高了刷新频率。
对外人而言,每次抓到的数据都不一样,看似高深莫测的动态加密,实际上只是最基础的查表组合。
“编写一个过滤脚本。”倪光楠立刻下达新指令。
“去长沙硬盘里的冷启动阶段全量数据里,提取主站向所有从站下发的首个参数包。
把那个参数包定义为基准掩码,与运行阶段的每一帧低八位数据进行或运算拼接,最后将结果与长沙现场录像里的油缸伸出速度进行线性拟合。”
陈锋快步走回键盘前,双手快速敲击。
过滤脚本仅用了十分钟编写完成,导入超算中心的一百个节点进行验证。
主控台屏幕突然弹出一排绿色高亮数据。
紧接着,一百六十八条完整的速度环指令字典在屏幕上自动生成,排列得整整齐齐。
“破了。”陈锋看着屏幕,重重吐出一口浊气。
十六进制的速度控制字,完美对应了泵车主轴从零到最高转速的三千个阶梯变化。
每一级转速的电平翻转规律清晰可见,速度环的解析进度瞬间达到百分之百。
此时距离开始解析,过去了五十九个小时。
“不要停。”倪光楠没有露出丝毫喜悦的表情。
他看了一眼墙上的电子钟。
“导出速度字典,存入一号数据库,把所有算力切入扭矩环解析。
那是中联泵车臂架控制的核心命脉,必须在今天之内拿到扭矩控制字的映射规则。”
天工团队的十二名算法工程师重新集中精神,新的过滤脚本建立,扭矩环数据开始导入。
扭矩控制,决定了伺服电机能输出多大的力。
对于六十米长的泵车臂架而言,当它向外展开时,重力产生的杠杆效应会使根部关节承受极其恐怖的机械力矩。
上位机必须精准地给伺服电机下达扭矩指令,才能抗衡这股重力,保证臂架平稳移动。
如果扭矩指令给小了,臂架会突然下坠。
如果给大了,动作会产生剧烈冲击,导致金属结构疲劳甚至断裂。
有了速度环破解的基础经验,团队认为扭矩环大概率采用了相同的数据压缩方式。
他们套用之前的解压缩脚本,将长沙抓包数据中的扭矩控制字进行还原,并与现场臂架满载时的受力理论值进行比对验证。
两个小时后,异常出现。
“倪老,数据有非线性偏差。”负责比对的算法工程师盯着屏幕上的两条曲线。