ARTICLE · 1284669
软件改不动、硬件不让飞!记一次价值不菲的 PCB 通道错位血案与 EDA 防呆门禁
软件改不动、硬件不让飞!记一次价值不菲的 PCB 通道错位血案与 EDA 防呆门禁平时做精密机电与流体控制硬件研发,每天打交道最多的是电机驱动、微弱传感器采样、电源完整性以及板级 EMC 细节。总以为只要把传输线阻抗、回流路径和抗扰度门禁卡死,就不会出什么大岔子。 结果今天打样回来的一批新 PCB 板子,直接在我最意想不到的地方给我结结实实上了一课。没有复杂的电磁场玄学,纯粹是一场由 EDA 工程交接、原理图习惯与器件锁定叠加出来的“完美风暴”,直接把这批板子送进了废品站。 
趁着记忆还滚烫,把这次阴沟里翻船的全过程扒出来,既给自己立个碑,也给各位硬件同行的 EDA 流程提个醒。 一、 案发现场:诡异的“乾坤大挪移” 这批板子上有 A、B、C、D 四路完全同型号的槽型光电开关(EE-SX398),在机械结构上严格对应 1、2、3、4 四个物理限位坐标。 按照设计预期,自然是萝卜青菜各归其位(A→1,B→2,C→3,D→4)。结果板子贴片回来一上电联调,直接两眼一黑: A 跑到了 位置 2 B 跑到了 位置 4 D 跑到了 位置 1 唯独老三 C 稳坐钓鱼台,还留在 位置 3 四个光耦封装一模一样,但底下的铜皮走线已经在内层连死了。为什么偏偏 C 纹丝不动,而 A、B、D 却在原地玩起了轮转漂移? 
二、 深度复盘:四个暗坑咬合出的“完美犯罪” 最让我百思不得其解的是:我在 PCB 里摆放这四个光耦时,明明是瞪大了眼睛、严格对照着丝印位号(把新生成的 U1 严丝合缝叠在旧 U1 的坐标上)一个坑一个萝卜放进去的!既然对准了位号,为什么还会错? 顺着工程文件一路逆向倒查,才发现这是由四个极其隐蔽的细节严丝合缝咬合出的“绝杀局”: 1. 第一坑:原理图“凑堆式”乱序摆放 就像很多工程师习惯把全板的 104 去耦电容全堆在原理图角落一样,同事在画这 4 路光耦时,在原理图上的摆放位置压根没有对应 PCB 上的机械物理顺序,而是随手按 D - A - C - B 的顺序凑堆摆在了一起。 2. 第二坑:跨电脑交接触发重标号洗牌 这个 KiCad 工程是从同事电脑交接过来的,他的本地库路径与我电脑不一致。在重新关联库并触发原理图自动标号(Annotate)的某个瞬间,软件按照原理图上的几何坐标顺序重新给四个光耦发了牌——排在图纸最前面的 信号 D 被冠上了 U1 的名号,信号 A 变成了 U2,信号 B 变成了 U4,唯独排在第三顺位的 信号 C 阴差阳错还是 U3! 3. 第三坑:PCB 锁定机制生出“真假美猴王” 按 F8 从原理图更新到 PCB 时,因为库路径和内部唯一标识变动,软件把这四个光耦当成新元件重新生成了一遍扔在板框外;而原版 PCB 机械位置上的那四个旧光耦,因为早先被设了 锁定(Locked),软件默认没有自动删掉它们。 4. 第四坑:串联电阻抹杀了焊盘上的真实网络名 看着板内锁着的旧 U1~U4 和板外新生成的 U1~U4,我极其自然地把板外的新 U1 拖过去覆盖位置 1 的旧 U1,锁定新器件、删掉旧器件。 为什么拖拽对齐时,连焊盘上的网络名都没能提醒我?因为这几个 398 都不是直接输出,输出端全部串了限流/输出电阻!真正有意义的信号网络名(A/B/C/D)标在电阻的另一头,而光耦引脚到电阻之间的这一小截走线,是系统自动生成的 Net-(U1-Pad3) 这种冗长的默认网络名!它连名字都跟着错位的 U1 自动变了,肉眼看光耦焊盘根本无从分辨! 
三、 为什么连软件兄弟都救不了我? 看到这儿肯定有同行会说:“不就是四个通道顺序乱了吗?让嵌入式软件改两行代码,把 GPIO 宏定义映射重新指一下不就完事了?” 最绝望的地方就在这儿——这几路 EE-SX398 的输出,连的全是 STM32F407 的特定硬件功能引脚(定时器硬件捕获与专用中断通道)!F407 的引脚复用矩阵在硅片里是死绑的,错位之后的引脚根本不支持对应的硬件外设功能,软件层面当场判了死刑。 那动烙铁割线飞线呢?偏偏这块板子是裸板安装结构,外面根本没有外壳遮丑,严禁出现任何飞线! 软件改不动,硬件不让飞,这批板子最终彻彻底底进了废品站,成了我今年最昂贵的一堂“EDA 流程课”。 四、 血泪提炼:写进《硬件工程门禁》的极简三板斧 犯错不可怕,怕的是只靠扣绩效和“下次注意”来复盘。当“原理图乱序摆放”遇上“串联电阻吞掉网络名”,光靠核对丝印位号(U1/U2)就是往火坑里跳。 为了从制度上彻底焊死这个漏洞,我在自己的《硬件设计防呆门禁》里加了极其好执行的三条死规矩: 原理图排布必须映射物理拓扑:严禁把结构定位器件(多路光耦、排针、限位开关、指示灯)像堆 104 电容一样随手乱放。在原理图绘制阶段,必须严格按机械结构的 1→2→3→4 物理顺序从上到下整齐排列。哪怕软件意外触发重标号,排出来的位号顺序也依然和机械坐标完全一致。 消灭系统匿名网络(源头引脚打标):只要传感器或接口引脚后方串联了阻容器件,严禁让中间网络保留 Net-(Ux-Padx) 这种系统默认乱码!必须在器件引脚根部显式打上带物理坐标的网络标号(如 POS1_RAW),让真实身份直接烙在器件焊盘上。 出图前 5 秒“点名终检”(终极保命符):哪怕前面操作再自信,出 Gerber 前必须执行最后 5 秒动作——左右分屏打开原理图和 PCB,直接按顺序点击串联电阻后端的最终信号名(1→2→3→4),肉眼盯住 PCB 上关联的电阻和光耦是不是顺着机械坐标依次跳动的。但凡出现折返乱跳,当场熔断拦截! 
天下英雄如过江之鲫,即便是“人皇”也难免阴沟里翻船,更何况普通如你我呢?所以,想要把风险压到最低,就要用系统化来兜住主观失误,这一个表格,我是常用常新,我在成长,它也在慢慢长大。这次的低级错误,各位道友就当看个笑话吧,哈哈。 
— END — 【本文联合出品班底】 • 出品人 / 案发总负责人 / 经费燃烧者:本人(亲手摆出乾坤大挪移的男主角) • 首席刑侦顾问 / 逻辑推演:DeepSeek(负责多角度抽丝剥茧、陪我一起破案盘逻辑) • 责任编辑 / 视觉制图:Gemini(负责文案精修润色、绘制全套防呆拓扑图) • 技术总审 / 门禁架构师:还是本人(毕竟 AI 说的梦话得靠人来把关兜底)



















































































