课堂上突然冒出来的卡点
题目是给实验室旧的疲劳试验台改采集系统,台上面本来装了三套独立传感器:振动压电传感器出模拟量,位移编码器出脉冲信号,温度传感器走CAN总线输出。输出类型不一样,通信协议不一样,说白了就是我们课上讲的多源异构。
学生一开始图省事,淘了个多通道通用采集卡插上,调通通信那天还沾沾自喜。一跑试验不对了。算出来的应力响应时序对不上,峰谷差了快八个毫秒,最终疲劳寿命计算偏了快十个百分点。
三个小伙子拉着我蹲在试验台边翻开源代码,翻了一下午,原来问题出在同步上。通用采集卡是轮询扫通道,扫完一圈再扫下一圈,天生就带时差,不同接口的处理优先级不一样,时差还忽大忽小。

你说差几毫秒能有多严重?做振动分析的都知道,别说几毫秒,几百微秒的误差,高频信号的相位就错了,结论全歪。学生之前在课本上把概念背得滚瓜烂熟,真到动手,才发现同步才是这个小东西的核心,不是什么数据存储、传输。
改了三版才摸到的设计取舍
第一版改法,学生加了一根统一触发线,所有传感器都接同一个外部触发信号,想着总该同步了吧?不对,还是差。为什么?不同传感器的响应延时不一样,模拟量转数字要走滤波,CAN总线发帧要等总线空闲,算下来还是差了两三毫秒,不够用。
第二版,想走软件打时间戳,用云端时钟统一校准所有数据。可试验台在地下室,无线信号时有时无,总不能做个试验还要连热点吧?加北斗授时模块,搜不到卫星,白花钱。
说实话我当时也没什么现成答案,只是提醒他们,干嘛非要往外找时钟?终端本身的主控不就是最好的时钟源吗?
后来定了第三版方案:把所有通道的采集缓存都挂在主控的同一个硬件时钟中断下面,每次中断触发一次所有通道的锁存,先把当前的原始数据存在缓存里,统一打完时间戳再打包往外发。为了给中断腾资源,学生砍了一大半本来想加的花活:什么边缘计算、本地大屏显示、SD卡本地存储全砍了,只留采集和网口输出,终端就干好同步这一件事。

测出来的结果,所有人都松了口气。同步误差压到了一百微秒以内,完全满足试验要求。差点把三个小伙子愁坏了,结果砍完功能反而成了。
不过话说回来,这就是做设计最有意思的地方。很多人刚入门,总想着把所有能加的功能都堆上,显得高大上,结果核心问题被一堆杂活盖住,怎么调都不对。舍得砍,才是真的会设计。对吧?
留在教研本上的碎想法

现在的机械设计教学,大部分内容还是围绕传统的结构设计、强度计算转,这种机电一体化的小东西,真的练得太少了。很多学生能闭着眼画复杂的齿轮箱,却不知道不同传感器接线还要考虑同步时序。
嘴里能说得出多源异构,碰到实际的输出不兼容就懵了。这次把学生踩过的坑都整理进了实训案例库,下次上课直接拿出来说,比讲十节课概念都管用。
哦对了,这个终端最后做成成品,算下来所有零件成本不到一千块,比学校之前采购的工业成品便宜了快十倍,现在实验室做小型疲劳试验已经在用了。还有个小细节我印象很深,一开始学生图方便用了排针接线,试验跑了两次振动,接头松了,数据丢了一半,后来换成锁紧接线端子,再也没出问题。这种小事,哪本教材会写?只有自己动手做了才会碰到。
很多时候我们说创新,总想着要做什么不得了的大东西,其实不是。就是解决一个具体的小问题,把核心的痛点磨到位,就够了。这个放在实验室角落的小盒子,给我上的这堂额外的课,我记下来了。