上周三的实训课,第三组的男生蹲在台架旁边抠了四十分钟传感器接线,抬头跟我喊”老师我线都接对了为什么平台上一条数据都不跳”。我走过去扫了一眼,差点笑出声——他把设备数据上传的报文频率设成了120秒一次,平台默认刷新是30秒,他等了五分钟都没看到动静,已经准备把传感器拆了换第三个。
不过话说回来,谁上学的时候没犯过这种低级错误呢?
学生最容易卡的,从来不是硬件接线
之前我总以为学生卡在上位机配置环节,带了三届才发现根本不是。他们做机械设计实训的时候,满脑子都是”把零件加工出来,把传感器装上”,从来没把数据上传当成设计环节的一部分,就觉得这是接线之后自动发生的事。

很多人翻来覆去查接线定义,测供电电压,甚至把传感器拆下来换了新的,都想不到问题出在软件参数上。我见过太多学生把RS485的端口定义跟RS232搞混,万用表测了半天电平才反应过来,端口定义是跟设备绑定的,不是接了线就通。还有十有八九的人,为了省内存会把报文的校验位关掉,碰到实训楼里的电磁干扰,传上去的数全是跳变的毛刺,根本没法用。
我后来改的第一个教学设计:先传数据,再做结构
之前的教学流程是先让学生画结构,加工零件,装传感器,最后留两节课做数据上传。结果到最后大家时间不够,为了凑作业,直接把数据频率拉到最高,不管带宽占用,也不管现场的干扰。本质上是把机械设计和电子、软件的内容割裂开了——好像机械的人只要画完图纸,把零件装出来,剩下的都是别的专业的事。
后来我把整个流程倒过来:第一节课先给个现成的简化台架,让他们先把设备数据上传的链路跑通——从传感器采数,到本地串口,到边缘网关,最后到云平台的仪表盘跳数。跑通了之后,再让他们去改自己的结构设计。
说真的,这个调整我试了两学期,效果比之前好太多。之前总觉得机械设计的核心是结构强度、公差配合,数据上传是附加的软活儿,直到去年带竞赛的时候碰到个队伍,做的智能仓储小车结构比谁都稳,跑起来却因为设备数据上传的带宽占满了,车的避障信号传不回主控,直接撞在货架角上,把铝型材撞得弯成个弧形,几个人蹲在赛场边上脸都白了!

很多学生一开始想把所有传感器的数据都传上去,温度、振动、电流、位置,恨不得把每个零件的应变片都接上网。我每次都跟他们说,先算——你用的4G模块的上行带宽是多少,你每个报文的字节数是多少,你设的频率是多少,算下来超过带宽三分之一的,直接砍。哪有什么所有数据都要实时传的?设备数据上传本质上是为了给后面的故障诊断、运行优化留依据,不是为了把传感器清单凑得好看。
反过来,你如果一开始就把上传链路跑通了,在设计结构的时候就会主动考虑:哪个位置的传感器走线最短,哪个位置的网关不会被金属结构挡住信号,哪个地方的强电走线不会干扰弱信号的传输。这些东西,你不把链路打通,坐在绘图板前面想破头也想不出来。
那些没人会在教材上写的细节

教材上永远会写”设备数据上传需要配置IP地址、端口号、传输协议”,但不会写你在实训楼里,墙角的WiFi信号穿了两堵墙之后,MQTT协议的断连率是多少;不会写夏天机房温度高的时候,边缘网关的串口会偶发丢包;不会写你把报文里的设备ID字段放在最前面还是最后面,排查问题的时候找bug的速度能差三倍。
别笑。
这些都是踩出来的。
我之前看到有学生把设备ID放在报文的最后两位,平台那边收到数据之后,前八位全是数值,后两位才是ID,每次解析的时候都要倒着读,遇到丢包的时候直接错位,查了一下午都不知道哪错了。我让他把ID挪到最前面,之后排查的时候只要看前两位对不对,三秒就能定位问题。
说实话,我之前也觉得这些细节不值得写进教案。直到看到学生蹲在地上,对着满屏的乱码皱着眉头发呆,我才觉得,之前总让他们追求结构的精度、材料的强度,却从来没教过他们,做出来的设备如果传不上数据,那跟个铸铁疙瘩有什么区别?
上周第三组的那个男生,最后把报文频率调到了5秒一次,平台上的温度曲线跳得特别顺。他举着手机给我看,说原来我之前等的时间不够啊。我没告诉他,我之前第一次做项目的时候,也把频率设成了60秒,在现场站了十分钟才看到第一条数据跳出来,当时还以为是模块坏了,差点给供应商打投诉电话。
下次实训课,我打算把那个120秒频率的坑,当成开场的小案例放给学生看。
毕竟,踩过的坑,才是真的记得住。