OrCAD——BOM文件输出

 


前言
在电路原理图和PCB设计完成后,我们需要导出BOM(又称物料清单或焊接清单),用于器件采购和PCB焊接。在使用Cadence Orcad时,不同的设计方式对应不同的导出BOM的操作,本文总结了基于CIS数据库的设计方式以及普通设计方式分别如何导出BOM。

考虑到普通设计方式导出的BOM可能比较混乱,本文还分享一段Python脚本用于整理BOM。

一. 基于CIS数据库的设计方式导出BOM
1.1 选中*.dsn,右击 -> Part Manager,打开元器件管理界面

 

1.2 选中任一行,右击,Update All Part Status,更新所有元器件,使其与数据库一致

 

1.3 在工具栏上单击CIS,或者Reports -> CIS Bill of Materials-> Standard…,打开BOM配置界面

 

1.4 选择要导出到BOM的属性并排序,选中Export BOM report to Excel,OK
如果不选中Export BOM report to Excel,则会导出以.bom结尾的BOM文件,需要使用Excel打开再另存为.xslx格式,相较于直接用Excel打开,多一步操作,故建议选中此项。

 


1.5 查看BOM并保存
为方便展示,这里调整了原始的表格格式。

 

 


基于CIS数据库的方式设计原理图,导出的BOM属性均来自于数据库,每个元器件都是数据库中的一个单独元件,无需手动设置Value,PCB Footprint等属性,所以导出的BOM很规整,根据需要略作修改即可使用。

二. 普通设计方式导出BOM

 


2.1 Tools-> Bill of Meterials…或者点击工具栏上的CIS图标,打开BOM配置界面

2.2 配置Header与Combined property string,选中Place each part entry on a separate line,OK
Header指的是表头,它和Combined property string(组合属性字符串)是一一对应的,参考配置如下:

Header:

Item\tQuantity\tReference\tPart\tPCB Footprint\tMPN
1
Combined property string:

{Item}\t{Quantity}\t{Reference}\t{Value}\t{PCB Footprint}\t{Model}
1
其中MPN指的是manufacturer’s part number即制造商元器件编号,在我的原理图中用Model属性表示,需要根据实际情况修改。

 


这里有两种操作方式:

不选中Place each part entry on a separate line(每个元器件单独成行),则会将其它属性完全相同的位号合并,同时选中Open in Excel,则位号能正常合并为一行。如果未选中Open in Excel,则生成的BOM中位号无法正常合并,一行只能5个位号,如下图所示。

 

选中Place each part entry on a separate line,则每行都只有一个元器件,方便后续通过脚本来调整,同时不选中Open in Excel,就以.BOM为后缀生成原始BOM文件。
如果原理图设计比较规范,导出的BOM比较规整,稍作整理就可以使用,则推荐使用操作1;

如果原理图设计比较混乱,同型号的元器件Value值和制造商编号可能不统一,则推荐使用操作2,后续再通过本文分享的脚本整理BOM。

2.3 整理BOM,存为Excel,或者使用以下Python脚本自动整理BOM
因为不是基于CIS数据库的设计,所以很多参数都是手动修改的,这样就很难统一设计风格。特别是从一些老原理图中复制过来的电路,因为每个人的喜好不一致,同一个元器件的Value可能有多种不同的写法,如100nF电容有时会写做0.1uF或者0.1u,这使得原本是同一个元器件会因为Value值不一致被分开。

如下图展示了一个风格不一致的原理图中导出的BOM。

 


从下图中可见,0805封装0.1uF的电容因为0.1u和0.1uF的区别,以及制造商物料型号的区分被分为了三块,其实在同一个电路板中,它们应都焊接同型号的电容。如果还有人喜欢将0.1uF写成100nF,则同型号电容会被分成更多块。

使用Python脚本来整理BOM将会节约大量的手工整理时间,且不会出错,脚本效果如下图所示。

所有0.1u,0.1uf,100n等格式都会被标准化为100nF;2200pF会被标准化为2.2nF,其它容值同理,电阻的1k和1kΩ会被标准化为1K。

所有同型号的制造商元器件编号均会被保留下来,由设计人员手动确认。

 


Value以OPEN开头的元器件被认为不焊接,会被整理到BOM最后几行。

 


经过此脚本整理的BOM,设计人员只需要确认最后一列的制造商元器件编号即可。

Python脚本部分代码如下:

检查BOM格式是否正确:

# 存储错误行的序号
error_row_num = bom_components_begin_row_num
# 位号不允许重复 存储位号
reference_ls = []
# 检查BOM表是否出错,前两列应全为空或全为数字,第三列应为序号,应是字母+数字的形式且不能重复,第四列为Value和第五列PCB Footprint应不为空
is_valid_reference_pattern = r"^[A-Za-z]+\d+$"
for row in origin_sheet.iter_rows(min_row=bom_components_begin_row_num, values_only=True):
if any(row): # 判断整行是否存在非空值,为空则跳过
if ((type(row[0]) == int and type(row[1]) == int) or (row[0] == None and row[1] == None)) == False:
pyautogui.alert(f'第{error_row_num}行={row}的前两列格式错误,非空,也非数字', '提示')
sys.exit()
if (re.match(is_valid_reference_pattern, row[2]) == False):
pyautogui.alert(f'第{error_row_num}行={row}的前三列格式错误,并非位号', '提示')
sys.exit()
elif (row[2].strip() in reference_ls):
pyautogui.alert(f'第{error_row_num}行={row}的位号重复', '提示')
sys.exit()
else:
reference_ls.append(row[2].strip())
if row[3] == None:
pyautogui.alert(f'第{error_row_num}行={row}的前四列格式错误, Value缺失', '提示')
sys.exit()
if row[4] == None:
pyautogui.alert(f'第{error_row_num}行={row}的前五列格式错误, PCB Footprint缺失', '提示')
sys.exit()
error_row_num += 1

# pyautogui.alert('此BOM表格式正确!', '确认')

标准化电容值函数:

def convert_capacitance_unit(value):
cap_unit_ls = ['mF', 'uF', 'nF', 'pF', 'fF']
cap_value = 0.0
index = 0
cap_other = ''
for j in range(len(cap_unit_ls)):
for i in range(len(value)):
if value[i : i+2] == cap_unit_ls[j]:
cap_value = float(value[:i])
index = j
cap_other = value[i+2:]
break
if cap_value != 0.0:
break
if cap_value >= 1000:
cap_value = cap_value / 1000
index = index - 1
elif cap_value < 1:
cap_value = cap_value * 1000
index = index + 1
else:
pass
if cap_value.is_integer():
cap_value = int(cap_value)
value = str(cap_value) + cap_unit_ls[index] + cap_other
return value

三. 总结与分享
显然,使用CIS数据库的原理图设计方式是更具优势的,但元器件数据库需要专人维护,通常只有大公司才能负担得起,小公司一般还是使用的普通原理图设计方式,通常一些电路经过多人修改后,风格会非常混乱,整理BOM会花费大量时间,这部分工作枯燥且易出错,而使用Python脚本就能一步到位,所以,这里将我编写的BOM整理脚本分享出来,供需要的同学使用。

分享的文件包含脚本源文件Cadence Orcad BOM整理.py已经需要安装的库文件列表requirements.txt,如下图所示。

 


对于Python小白,你需要先下载安装Python,参考:Python下载与安装教程_徐晓康的博客。

然后在命令行中运行以下命令,注意更改requirements.txt的路径,等待脚本运行需要的库安装成功。

pip install -r C:\Users\xu\Desktop\Cadence Orcad BOM整理脚本\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
1
请注意,要直接使用本脚本需要满足以下三个条件:

 


推荐使用Vscode查看、修改与运行Python脚本。

对改进脚本有兴趣的同学可以私信我。

欢迎大家关注我的公众号:徐晓康的博客,回复以下四位数字获取。

5101

建议复制过去不会码错字!
————————————————
版权声明:本文为CSDN博主「徐晓康的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42837669/article/details/132052784

posted @ 2023-10-18 11:20  苍月代表我  阅读(3186)  评论(0编辑  收藏  举报