硬件工程师必备技能之Variant
在项目开发中硬件工程师经常会使用同一块PCB裸板焊接不同的器件,实现不同版本的PCBA,从而节省成本。但是不同版本之间的原理图,BOM,装配图等文件却缺乏有效的管理方法,容易造成不同版本之间混乱,文档维护困难,回板与设计预期不符,最终导致项目交期滞后。本文介绍AltiumDesigner软件的Variant(装配变量)功能,从原理图,BOM,装配图进行实战演示,可以极大减少出错概率,提高文档管理效率。Variant(装配变量)是AltiumDesigner专门针对单工程进行管理多版本PCBA的工具,可以在不同的装配变量下设置器件为焊接/不焊接(NC),或者替代器件的操作。笔者建立了一个RC-01的工程,并且绘制完了PCB,工程非常简单,顶层有两个电阻(R1,R2),底层有两个电容(C1,C2),但足可以说明问题。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430018914_8dt4p4.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430021052_04w09e.jpg?imageView2/0)
首先找到右上方的绿色小按钮(很多人用了很多年AD也不知道这是什么作用...),打开Variant管理界面,点击新建Variant,然后输入变量的名字,最后点确定。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430020086_0pxpbx.jpg?imageView2/0)
笔者分别建立了prjA和prjB两个装配变量,假设目前A项目需求为R1不焊接,B项目需求为R2不焊接。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430018663_hcn732.jpg?imageView2/0)
单击prjA那列中的R1,会出现一个...的图标,单击,出现Fitted(焊接)、Not Fitted(不焊接)、Alternate Part(替代零件),这里选Not Fitted,点击确定。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430022235_hao8a9.jpg?imageView2/0)
同样的方法设置prjB中R2为Not Fitted,设置完成后如下图。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430020448_nuucns.jpg?imageView2/0)
接下来设置不焊接器件的显示方式,点击Drawing Style,分别设置原理图和PCB图中的显示方式,可以设置文字,选择是网格状还是打叉,还可以设置字体大小,这里按个人习惯就好,笔者按下图设置,设置完成后点OK结束设置。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430023750_heop3r.jpg?imageView2/0)
接下来验证设置是否生效,点击Variant旁边的▼图标,可以看出,默认情况为No Variation,即所有器件都按默认参数焊接,此时工程中已增加了prjA和prjB两个变量。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430023126_xpup32.jpg?imageView2/0)
单击切换到prjA后,原理图中的器件并没有发生变化(只有左上方的文字发生了变量,原因是该文字被设置为 =VariantName,这样打印成pdf原理图后非常方便的能分辨属于哪个装配版本),别着急,点击左下方Editor旁边的RC按钮,跳出编辑模式。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430021935_9umjnt.jpg?imageView2/0)
切出编辑模式后,可以看到,R1按照先前的设置成为了NC状态,选择prjB,R2变为NC状态,至此,我们的装配变量设置生效。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430025457_8xapzr.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430019165_k553bs.jpg?imageView2/0)
NC器件较多时,可以在非编辑模式下使用绿色图标右边Toggle Part Fitted Or Not Fitted,使用十字光标单击器件就设置为NC,再单击一下设置回焊接,哪里不要点哪里,简直不要太爽,这里很快就把PCB弄成裸板了。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430024844_x5r58u.jpg?imageView2/0)
以上原理图中Variant的设置就完成了,接下来要做原理图,BOM和装配图的输出,这里强烈建议使用Ootput Job功能进行文件输出。在工程下直接输出,一旦文件发生改变,每次重新生成都需要重新设置一次,效率低下,而且容易发生文件之间版本不一致的情况。而使用Ootput Job只需要设置一次,文件发生改变后,文件都是按先前的设置一键生成,一劳永逸,而且Output Job文件可以在项目间复用。首先为工程增加Output Job File,文件名任意。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430023391_3xbbcb.jpg?imageView2/0)
界面如下图,首先生成pdf原理图,在Documention Outputs栏中单击增加原理图文件,注意这里一定要选择Project Physical Doumements,否则无法使用Variant功能。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430019831_x2p1r4.jpg?imageView2/0)
增加任务后,右键Page Setup和Configure中分别设置正确的页面大小和属性,这里先保持默认。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430022537_s7ha1w.jpg?imageView2/0)
接着将该输出任务交给PDF这个output container,先单击PDF容器,再点击任务的Enable按钮,这样任务就交给了PDF这个工具人了,点击Change可以修改文件路径、名称等,大家自己探索。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430025133_hywhvr.jpg?imageView2/0)
一切设置完成,选择想要的Variant,这里以prjA为例,点击Generate content,即可生成,打开pdf版原理图,R1按照设置成为了不焊接,完美。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430022839_vc5hec.jpg?imageView2/0)
接下来生成顶底层装配图,前面设置Drawing Style就会与这个环节相关了,这次依然要用到PDF Container这个工具人,在Assembly Drawing下增加任务,选择绘制好的RC.PcbDoc![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430021379_f284o9.jpg?imageView2/0)
依然右键PageSetup设置大小和方向,Configure设置文件属性,一般装配图的设置稍微麻烦一些,需要包括板框,顶底层器件位置图等。注意,因为这里要使用Variant,需要分布给顶层装配增加Top层,低层装配增加Bottom层,但增加的时候需要将该层所有元素设置为Hide,最终顶层保留三层:顶层,顶装配层,板框层,底层同样设置,设置为镜像。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430021668_3xx5o8.jpg?imageView2/0)
设置完成后生成prjA和prjB对应的装配图,NC器件按照预先的设置的显示了出来,perfect!并且笔者事先在装配层增加Variant的名称,方便区别。这样的图交给板厂或者基板检查人员,简直是他们的福音。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430019635_u7xwgm.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430019390_zt22dw.jpg?imageView2/0)
最后是BOM的生成,BOM与设计意图的一致性是一块PCB板功能正常的基础,很多工程师为了省事,处理NC器件往往采用最暴力的方法:手动修改器件属性,甚至手动修改BOM。这样非常容易出现重号、数量与位号不符、型号错误等问题,真可谓BOM不扎实,回板两行泪!使用Variant功能后,既省事又不容易错,这次我们使用Folder Structure这个容器,毕竟BOM 一般是文件类型的。在Report Outputs中增加BOM表任务。 ![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430020704_6t2piq.jpg?imageView2/0)
![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430024167_779xb3.jpg?imageView2/0)
可以看出,prjA这个变量下,R1已经不出现在BOM里了,但笔者认为R1应该出现,因为按照目前这个BOM 去检查基板,只能保证该焊的器件焊了,却无法保证不该焊接的器件未焊接,不该焊接的机器焊接了电路板功能也会不正常。这个AD也为我们想好了,勾选左下方Include Not Fitted Components,这样不焊接的器件也会出现在BOM中,并且数量为0,Fitted可以作为分组条件,但是不用作为输出。然后工程师可以选择自己公司的BOM模板进行BOM 输出,这里不再演示。![](https://public.fangzhenxiu.com/fixComment/commentContent/imgs/1659430024526_78mmk8.jpg?imageView2/0)
以上,Variant的基本操作就为大家演示完了,实际中我还会遇到C项目需要将R1改成10k电阻的情况,这就要用到Variant中Alternate Part功能,请大家自行练习。这里提醒大家,一定不要图省事直接修改器件属性,要先在原理图库中建好需要的新部件,再使用Alternate Part选择到该器件,这样能最大程度减少BOM出错的概率。熟练使用Variant功能,能够帮助硬件工程师更加高效的管理多PCBA版本,降低BOM出错的概率,降低维护文档的难度,是硬件工程师必须掌握的技能。------------ END ------------ 著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-17
最近编辑:1年前