Cadence Orcad导出BOM的方法与整理BOM的脚本分享

您所在的位置:网站首页 cadence导出原理图pdf Cadence Orcad导出BOM的方法与整理BOM的脚本分享

Cadence Orcad导出BOM的方法与整理BOM的脚本分享

2024-03-11 07:49| 来源: 网络整理| 查看: 265

Cadence Orcad导出BOM的方法与整理BOM的脚本分享-6 前言

在电路原理图和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并保存

为方便展示,这里调整了原始的表格格式。

Cadence Orcad导出BOM的方法与整理BOM的脚本分享-6

基于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

Combined property string:

{Item}\t{Quantity}\t{Reference}\t{Value}\t{PCB Footprint}\t{Model}

其中MPN指的是manufacturer’s part number即制造商元器件编号,在我的原理图中用Model属性表示,需要根据实际情况修改。

这里有两种操作方式:

不选中Place each part entry on a separate line(每个元器件单独成行),则会将其它属性完全相同的位号合并,同时选中Open in Excel,则位号能正常合并为一行。如果未选中Open in Excel,则生成的BOM中位号无法正常合并,一行只能5个位号,如下图所示。 Cadence Orcad导出BOM的方法与整理BOM的脚本分享-11 选中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。

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

Cadence Orcad导出BOM的方法与整理BOM的脚本分享-13

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3