无人干预的全自动PCB组装可以实现吗?
在印制电路板(pcb)制造和组装行业中,术语“原始pcb”或“空白pcb”用来表示未组装(无载)pcb,而术语pcbA用于表示已组装(有载)pcb。
实际上,术语“pcbA”现在有点不合时宜。虽然它仍在业内使用,但大约从20世纪80年代,设计师和工程师就逐步不再用它;他们现在通常使用“pcb”来同时指代未组装和已组装的pcb(从该术语所在的上下文中得出其确切含义)。
说完这些,我们将在本文中使用术语“pcb”和“pcbA”来确保我们在谈论同一件事。
那么,我的问题是:我们离无人干预的pcbA下单甚至制造还有多远?我希望能像照片打印服务一样简单。除了使设计师和工程师能更经济、更容易地实现这一切,这种能力有助于使pcbA工厂重新回到“我国”。那么生产链中到底缺少什么,在阻止这种情况成为现实呢?
过去几年,我遇到了与计算机辅助设计(CAD)和计算机辅助制造(CAM)系统之间数据传输相关的各种问题和不同预期。为更好地理解所涉及的问题,我研制发布了一款名为Zofzpcb的3D Gerber Viewer(3D Gerber查看器),可以从zofzpcb.com免费下载。观看这个视频,可了解Zofzpcb的运行情况。
正如你可能想象,这类软件应用必须了解大量pcb(A)的相关知识,才能对其进行正确的可视化处理。我学到了什么?嗯,其中一件事是,我当然没想到事情会发生得这么乱。
我们来想象一下有这样一个独立于供应商的系统,它接受来自多家设计公司的文件——每个公司都可能使用不同的电子CAD(ECAD)软件包——并且只需点击一下按钮就可以制作和组装pcb(图1)。实现这样一个系统需要的不仅仅是“把数据丢过来”。必须检查设计的可制造性,同时根据元器件类型和可获得性、数量和所需的交付时间进行报价。如果需要人工输入,则双方都会在价格计算上消耗大量资源。详细的元器件选择及对供应商提供的专有格式元器件列表进行梳理将是场噩梦。此外,pcb上元器件的位置和旋转也必须予以核实。
图1:独立于供应商的系统,可接受来自多家设计公司的文件,只需点击一下按钮就可以制作和组装pcb。
对我来说,这种独立于供应商的系统,其概念是以3D Gerber查看器为中心的,其中,查看器可以是桌面应用或在线(基于云或云托管的)web服务。众所周知,到目前为止,Gerber文件是这项工作所最常使用的格式,因此我将针对这种文件,而暂时忽略ODB++/IPC2581。
CAD到CAM文件
由于与pcb设计和制造中所用Gerber格式有关,你有没有想过“Gerber”这个词的由来?如果有想过,那你可能想读下EEWeb主编Max Maxfield对David J. Gerber所著《The Inventor's Dilemma(发明家的困境)》一书的评论。
几年前,Gerber格式借助GerberX2形式的新计划和新倡导获得了新生。该标准欢迎我们所有人将我们的想法都输入到其中。这肯定是好事,但问题的重要部分不仅仅是经典的Gerber功能。例如,在这种方法中,拾放(P&P)文件、物料清单(BOM)文件(另请参阅《How to Build a pcb: The Bill of Materials(如何构建pcb:物料清单)》)和新的应用程序编程接口(API)格式是必需的。据我所知,当我们接受改变时,X2会覆盖大多数格式问题。
基本问题:文件的差异在哪里?
你是否知道,你可以将Microsoft Office文件的扩展名更改为“zip”,然后解压缩?然后,你可在里面看到一套不同的文件(媒体、文本、XML)所有这些文件都由zip容器装在一起。
这在概念上类似CAD/CAM Gerber文件集,也即将多个文件捆绑在一起形成一个“文档”。问题是我们缺少(或者有太多)文件名的正式定义。
Stackup描述文本文件也列出了用于每个层的文件,旨在由人来解读。如何正确加载Gerber文件?就Zofzpcb来说,我支持两种方法:自动和手动。对于自动方法,有一个Mask Set脚本,用于定义多个命名约定以及与每个约定的特定功能相关联的文件名。如果你没有修改ECAD的Gerber导出模块中的默认设置,则很有可能加载文件时不会出任何问题。如果有问题,你可以手动指配文件。
请注意,除了有其他非Gerber文件,且在GerberX2下这些文件不能自我识别外,X2解决了这个问题。但是,X2最近发布了扩展规范,而使用户可以在描述文件用途的文件中添加注释。此外,在最新版X2规范中,面向pcb生产推出了Gerber工作文件。
制造pcb裸板
无论文件格式如何,设计人员希望以图形描述的形式将某些内容传递给工厂。这些内容绘制在pcb层上,有时作为有效载荷层的补充。这些元素在其转变为铜箔之前必须要除去(图2)。
我们将Gerber描述转变为机器对机器(M2M)格式。让我们节省人工智能(AI)和光学字符识别(OCR)工作,试图识别哪些线条和其他元素是指真实物理对象,哪些线条是描述更抽象事物的文字或插图。为任何绘图元素添加注释,是种很好的解决方案。如果能自动添加描述成分,那最好,因为如果由人来添加合适的注释,则有可能被忽略。
X2中可以添加注释,我们只需坐享其成。在此期间,我们如何传递元信息?大多数情况下,这不再需要了。例如,电路板尺寸或每个层的功能标记已包含在了叠层中。如果确实需要,最好将此信息保存在单独层上,而不是作为叠层的一部分(图2)。
图2:pcb裸板制造。
电路板轮廓的标注:有多种方法可提供此信息:(1)作为单独文件;(2)使用特定的线宽(例如零线宽)绘制在某些层上;(3)作为钻孔文件上的走线。最后一种方法相对较新,也令人没底。
同样,对图形元素添加注释可解决这个问题(图3)。有趣的是,电路板的轮廓用多边形元素来描述会最好。但过去,轮廓只是用由走线制成的图形来构成。检测轮廓并实现转换的算法,希望看到一个闭环。当然,可能还有额外的闭环(代表切口)位于主轮廓内。我们还有一个小对象(即V形槽)需要正式定义,添加注释亦可完成这项工作。注意:用网络名和器件引脚名来注释焊盘,可以替代IPC356文件,从而不再需要它。
图3:电路板轮廓标注。
对pcb进行良好定义,可为执行设计规则检查(DRC)测试提供基础,并自动确定价格类别,而用于计算pcb制造价格。为此,pcb供应商需要以某种电子形式提供定价。对于我的情况,若我能读取标准的逗号分隔值(CSV)类型的文件(以为此目的定义的格式列出了价格计算规则),那我会很高兴。此想法是,设计人员可以向应用提供pcb制造商网站的URL,然后系统可以下载并使用这些定价规则。
在pcb制造商的接收端,会需要自动拼板软件。对于这项功能,Oshpark.com提供了一个很好的例子。现有的无人值守订单处理系统之间的主要区别在于:我们需要有一个M2M风格的API,能在多个供应商中通用。
总结:让我们决定使用GerberX2,以Gerber格式而不是Excellon格式来保持钻孔和布线数据,使用正确的带注释焊盘(使用IPC356或GerberX2),并在GerberX2中使用叠层文件。并且,在X2转换完成之前,使用Zofzpcb进行自动化处理。另外,pcb供应商应以CSV文件的形式在其网站上公开其特性、功能和定价,并提供上传pcb数据和订单信息的标准化方法。
BOM和元器件采购
小项目很乱。虽不像我的妻子在互联网上买双鞋,还要对其中成分精挑细选那么恐怖,但也差不太多。
在pcb的情况中,至少在设计人员的头脑中已经选好了元器件。当然,我们可以在设计阶段更改元器件,而且大多数设计人员无需付出大量精力,而去完美一致地填写BOM列表。事实上,确定特定制造商零件号的实际工作,可能要到设计阶段的后期才会去做。
理想情况下,分销商网站应帮助设计人员查找和确认零件号,并以合适的格式编写BOM。幸运的是,许多分销商都有便于自动报价和订单号检查的API。这是流程的一部分,在此过程中可以做很多事来简化工作。由于我一直在使用来自不同元器件分销商的API,我发现器件命名并不总是一致,这很令人不爽(我知道你被惊到了)。
虽然目前的系统可以供人使用,但其很难实现自动化。这可以搞定吗?我们必须有更高明的方法来做事。此外,其他所需考虑的重要因素包括:包装、重新包装选项,以及了解插播广告需要多少额外零件。
一些组装厂备有常用元器件,如去耦电容和电阻。相对于制造工程师必须确认每项决策(有时候他们不确定元器件的作用)来说,设计人员决定是否使用库存元器件要容易得多。
令人高兴的是,自动订单系统领域正在发生很多变化,包括分销商网站上的BOM解析器,以及来自SnapEDA.com、Supplyframe.com和OctoPart.com等网站的其他工具(图4)。WYSIWYG软件在此可提供元器件尺寸的可视化并检查它们是否适合相关的pcb封装。Zofzpcb现在可提供这些功能:BOM中的自动列检测;将其与IPC356中的元器件指示符列表进行比较;以及元器件的3D呈现。
图4:元器件搜索结果。
总结:分销商,请修改你数据库中的零件名!对于组装厂,请提供很简单的可下载网页文件——包含库存元器件以及对应大型分销商订货号的参考——以便其可以使用大型供应商的API。
组装
在我看来,P&P文件格式的概念有误。ECAD导出器可根据封装计算出重心,P&P机器可利用元器件的中心放置器件(无论这意味着什么)。
对于非对称(或仅一个对称轴)的元器件,两个参考中心是不同的,例如DPACK甚至SOT-23封装。焊盘越长,差异越大。P&P编程要求操作员修正位置。另一个问题是,P&P文件中的旋转值指的是库零件的原始旋转。虽然这些旋转不是任意的——IPC-A-610中对它们有规定——但在CAD的封装中,旋转和中心位置不对的情况司空见惯。此外,库可能是水平或垂直创建的,而两引脚有极性元器件的极性也可能弄反了。
不堪的P&P文件标准迫使P&P机器供应商采用其自己的文件格式(参见《An Interview with Jonathan Hirschman of pcb:NG(就pcb:NG采访Jonathan Hirschman)》)。在我看来,现有的P&P文件格式应被淘汰;取而代之,可以从IPC356或GerberX2中的焊盘注释中提取信息。每个重心应该用外接矩形的中心(如果使用的话)来替换。
P&P机器的编程仍是项需要花费大量人手的任务。这项工作的进步至少可显著减少工作量。通过为每种P&P机器类型编写单独的转换程序,可以实现完全集成。
在此,Zofzpcb可提供通用的元器件查看器(图5)。在客户端,设计人员可以检查器件的放置并决定是否批准通过;之后,组装厂可以参考所接受的设计,而无需有pcbA物理示例(点击此处,可查看图5的动画示例)。
图5:器件放置检查。
价格计算非常复杂,特别是要做到精确和有竞争力。焊接pcb未通过测试的预期概率,乘以该pcbA的成本,是价格的一部分。另外,器件数量、器件尺寸、最小间距等不得超过指定组装线的制造能力。API可能只是标准格式的可下载文件,其中含有每条组装线的规则。将规则应用于设计参数,可能是客户端软件的任务。
总结:P&P文件的新定义可以由IPC356提供或作为带注释的X2提供。Zofzpcb可以运行DRC/DFM和组装的定价模型。所需的是创建可在每个组装厂网站上获取的定价模型描述文件格式。
供应商列表
为了使系统能够浏览供应商网站,它需要知道它们各自的URL。一个想法是使用谷歌。首先,你必须对关键字(如“pcbA生产”)或某个特别发明的“魔法”词进行排名。然后就能对搜索引擎结果页面(SERP)解析并提取URL。系统会抓取列表,查找描述页面。另一个想法(为什么不同时使用这两种方法?)是只维护特定地址下的供应商列表。
取决于你……
那么,这一切你怎么看?非常期待收到您的意见、问题和建议。