【刚转行时的傲气】
2017年我刚从互联网"敏捷开发"的温室,一头栽进充满机油味的车间(别问为什么转行搞工控,问就是年龄大了,互联网里已经无栖息之地了)。记得第一天背着ThinkPad走进厂区时,产线上的PLC老张盯着我的电脑冷笑:"大兄弟,在这里敲代码可没有CTRL+Z,你每敲个回车都可能值二十万。"
转行后第一次独挑大梁,调试牛奶灌装线那个暴雨夜,我在中控室对着满屏的C#异步线程沾沾自喜,产线却突然鬼畜般抽搐。老张抄着万用表冲进来时,我的Debug输出还在欢快地打印"线程池状态正常"——而现实是传送带上的利乐包正在跳踢踏舞。(大梁挑没挑起来不知道,旁边的扁担差点被打折了!)
【那些年遭受PLC电气大神的暴击】
"你们这些用C#搞工控的总把代码当诗写,可我们电工要的是说明书!"------(记一次我把三十个气缸状态封装成优雅的泛型类,老张查变量时差点把HMI触摸屏戳穿)
"try-catch不是护身符!急停按钮拍下去时,你的异常处理还在优雅地记录日志呢"------(亲眼见过汽车厂上位机优雅地弹窗"通讯异常"时,机械手正优雅地捅穿钣金件)
"别拿UI线程耍杂技!我们改个配方要等你的动画特效加载完?"------(我为了界面流畅用了WPF炫酷粒子效果,结果操作工在赶工时直接抄起扳手威胁要物理优化)
"Modbus不是写API文档!你定义的0x0001在电工眼里就是线圈要着火"------(曾把"设备就绪"信号映射到保持寄存器,导致电工们集体以为PLC中了病毒)
"别拿面向对象来面向现实!产线上的气缸可不会等你GC回收完再动作"------(有次用LINQ实时处理传感器数据,结果流水线节奏比广场舞大妈还魔性)
【那些年产线上的现形记】
奶厂惊魂夜:自以为聪明地用枚举替代了老张的位操作,结果某个深夜"杀菌阀门"和"CIP清洗"的bit位在代码里来了个法式热吻,车间下起了酸奶雨。
汽车厂打脸记:精心设计的SQLite本地缓存,在突然断电后让追溯数据消失得比车间主任的头发还干净,最后在电工的备用CF卡里找到了救命数据。
电子厂通讯劫:用C#高级的Encoding.UTF8处理三菱PLC的ASCII码,导致传送带每隔32767个字节就表演一次瞬移术,差点造出量子纠缠电路板。
【进化后的C#厂哥】
如今和老张蹲在设备旁啃盒饭时,他还会拿我当年的"光辉事迹"下饭。但每当看到新来的程序员对着HMI大谈设计模式,我俩总会默契地对视——他摸出电工包里的备用保险丝,我默默打开注释比代码还详细的变量表。
深夜改完最后一版报警逻辑,含泪在某乎写下:"求求各位转行工控的程序大佬,在考虑代码风骚前,先确保电工兄弟的血压正常好吗?我们写的不是bug,是车间的生与死啊!"
(写完这些,默默把十五年前买的《C#高级编程》塞回书架最底层,封面上的烫金标题在机油味的空气里倔强地闪着光...)