ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OrCAD Capture CIS数据库配置全攻略:从ODBC到BOM的完整链路

OrCAD Capture CIS数据库配置全攻略:从ODBC到BOM的完整链路 1. 为什么要在 Capture CIS 里折腾数据库很多人在 Cadence 里画原理图用了一段时间 OrCAD Capture突然发现身边有人能直接从一个窗口里拖出来电阻电容器件编号、封装、参数、厂家、价格全都整整齐齐BOM 还能按分类导出来。你问他怎么搞的他轻描淡写一句配了个 CIS 数据库。这事听起来简单实际动手配置的时候卡住的人不在少数。配置 ODBC 数据源、在 Capture.ini 里写路径、CIS 配置文件的字段映射、原理图库里把 symbol 和数据库记录关联起来每一步都有坑。我最早一次配 CIS 数据库光是让 Capture 的Place Database Part窗口正常显示数据就折腾了两天后来发现原因居然只是 ODBC 驱动位数装错了。先解释一下 CIS 是干什么的。CIS 全称 Component Information System是 OrCAD Capture 里的一个组件信息系统。它本身不存元器件数据而是通过 ODBC 接口去读外部数据库——Access、Excel、SQL Server、Oracle 都可以。你的元器件库放在数据库里CIS 负责把你选中的记录对应到原理图里的 symbol 上并把属性一起带进原理图。换句话说CIS 解决的核心问题是元器件数据从哪里来怎么进到原理图里BOM 怎么保证一致性。没有 CIS 的时候画一个电阻要手动敲 value、封装、厂家、料号敲完还得担心 BOM 里对不对得上。有了 CIS选一个料所有属性都是数据库里预先维护好的原理图里放进去的瞬间就已经是正确的料了。下面我按照实际配置的顺序把整条链路拆开讲。文中的操作和配置以 Cadence 16.6/17.2/17.4 系列为主这几个版本在 CIS 配置逻辑上基本一致。2. 动手前先想明白数据库、ODBC、Capture 三者到底是什么关系2.1 三个角色各干各的活CIS 这套体系里数据库、ODBC 驱动、Capture CIS 各司其职数据库存放元器件的主数据包括器件编号、类型、value、封装、厂家、料号、价格、丝印、功耗等字段。Access 和 Excel 适合几百到几千条记录的团队SQL Server 适合几万条以上、多人并发编辑的场景。ODBC 驱动Windows 提供的统一数据访问接口。Capture CIS 本身不关心你背后是 Access 还是 SQL Server它只按 ODBC 标准去取数。ODBC 数据源名称DSN就是连接数据库的门牌号。Capture CIS原理图前端。它通过 ODBC 读到数据库记录后把记录的关键字段通常是 value、封装、料号映射到原理图 symbol 的引脚和属性上。理解这个分工后你就能明白为什么很多人配不成功——他们只在 Capture 里面设置了配置文件但 ODBC 数据源根本没建对或者数据库文件的路径变了导致 DSN 失效。2.2 先决定数据库格式再决定 ODBC 驱动位数这一步是最容易被忽略的前置条件。Cadence 是 32 位应用Capture CIS 只能加载 32 位的 ODBC 驱动。Windows 自带两个 ODBC 管理器32 位 ODBC 管理器路径C:\Windows\SysWOW64\odbcad32.exe64 位 ODBC 管理器路径C:\Windows\System32\odbcad32.exe如果你用的是 Access 数据库安装的是 64 位 Office系统里默认的 Access ODBC 驱动是 64 位的。很多人在控制面板里创建的 DSN 是 64 位Capture 加载的时候根本看不到就会报找不到数据源或者驱动不匹配。正确做法是手动运行C:\Windows\SysWOW64\odbcad32.exe用这个 32 位管理器创建用户 DSN。如果连的是 SQL Server 或 Oracle同样要装 32 位的客户端驱动。这一条是 CIS 配置里最容易踩的大坑后面我还会专门展开讲。2.3 关于 CIS 配置文件Capture.ini 和 .dbc 文件CIS 的配置体系分两层Capture.ini全局配置文件里面记录了 CIS 的 DSN 路径、数据库配置文件的引用路径。.dbc文件CIS 的数据库配置文件定义了你连的是哪个 ODBC 数据源、哪些表是元件表、每个字段映射到原理图的哪个属性。.dbc文件可以用 Capture CIS 自带的 Configuration 工具生成也可以手写。通常流程是先在 Capture CIS 里调用配置向导选择 DSN然后指定表、指定字段映射最后保存成CIS_Demo.dbc。我建议你不要手写 .dbc 文件除非你已经很熟悉它的格式。配置向导虽然看起来步骤多但每一步都有下拉框能避免很多格式错误。3. 从零开始创建一个 Access 数据库作为 CIS 的数据源3.1 准备一张规范化的元件表先不急着打开 Cadence第一步是把数据库准备好。这里我以 Office Access 为例因为中小型硬件团队最常用文件即拷即用不需要单独部署数据库服务。新建一个 Access 数据库比如叫ComponentDB.accdb在里面建一张表Components至少包含这些字段字段名类型说明PartNumber文本唯一料号CIS 关联的主键Value文本电阻值/电容值等核心参数SymbolName文本原理图库中的 symbol 名称PCBFootprint文本PCB 封装名称Manufacturer文本厂家Description文本器件描述Price数字参考价格Status文本活跃/停产等状态字段名建议用英文。如果要用中文在 .dbc 里映射时容易因为编码问题显示乱码还要额外调整 Capture 的字符集。3.2 填写数据的注意事项Access 里录入器件参数有几个细节会影响后面 CIS 用起来顺不顺畅PartNumber必须唯一不能有重复值。CIS 是靠这个字段去匹配 symbol 和数据库记录的重复会导致选料时出现歧义。SymbolName和PCBFootprint必须和 Capture 原理图库里的器件名称、PCB 封装名称严格一致。CIS 不会替你模糊匹配差一个字符都关联不上。Value字段建议规范写法比如电阻写10k而不是10K或10 kΩ统一格式对 BOM 的生成和后处理都有好处。每个器件都应该有Description这样在 CIS 浏览窗口里搜索关键词时能快速过滤。这些数据维护的事情看着琐碎但数据质量直接决定 CIS 上线后大家愿不愿意用。数据库里一堆垃圾数据还不如继续手动敲属性。3.3 用 32 位 ODBC 管理器创建 DSNAccess 数据库文件准备好之后打开 32 位 ODBC 管理器按Win R输入C:\Windows\SysWOW64\odbcad32.exe回车。在用户 DSN或系统 DSN选项卡里点添加。选择Microsoft Access Driver (*.mdb, *.accdb)。如果列表里没有说明安装了 64 位 Office 且没装 Access 数据库引擎需要先安装 2007 Office System Driver 或 Access Database Engine 的 32 位版本。填写数据源名称比如CIS_Demo然后选择数据库文件ComponentDB.accdb。点测试确认连接成功。这里有个小技巧DSN 名称里尽量不要用空格和中文CIS_Demo这样的命名最稳。Capture.ini 和 .dbc 文件里引用的就是这个名称如果名称带空格后期排查问题会多很多干扰因素。4. Capture 端配置从 Capture.ini 到 CIS 的 .dbc 配置文件4.1 先了解 Capture.ini 的作用Cadence 的 Capture 启动时会读取Capture.ini这个文件位于用户目录下比如C:\Cadence\SPB_17.4\tools\capture\Capture.ini也可能在%APPDATA%下具体看你安装时的配置。Capture.ini里有一段[CIS]配置类似这样[CIS] CIS_CFG_FILEC:\CIS_Config\CIS_Demo.dbc CIS_DB_PART_TABLEComponents其中CIS_CFG_FILE指向 .dbc 配置文件。Capture 启动 CIS 功能时会先去读这个 .dbc 文件再根据 .dbc 里的 DSN 名称去 ODBC 管理器里找数据源。很多教程会让你直接改Capture.ini建议你先把原文件备份一份用文本编辑器改改完再启动 Capture。如果改了之后 Capture 启动异常恢复备份就行。4.2 用 CIS 配置向导生成 .dbc 文件在 Capture 里点击菜单Options - CIS Configuration或者在 Place 菜单下找到 Database Part 相关的入口会弹出 CIS 配置界面。接着按向导走选择新建配置文件指定 .dbc 文件的保存位置。选择 ODBC 数据源这里应该能看到你刚才创建的CIS_Demo。选择主表ComponentsCIS 会把这张表的所有记录加载进来。指定关键字字段通常选PartNumber。配置字段映射把数据库字段对应到原理图属性比如把Value映射到Value把PCBFootprint映射到PCB Footprint。保存配置。第 5 步是核心如果映射没配好放置器件时原理图里的 value 或封装就是空的。4.3 字段映射的具体做法Value、PCB Footprint、Manufacturer 不能少数据库字段映射到原理图属性时至少要有三个映射PartNumber - Part NumberValue - ValuePCBFootprint - PCB Footprint其他像Manufacturer - Manufacturer、Description - Description也建议映射上。为什么PCB Footprint一定要映射因为 CIS 在原理图里放置器件时会把这个属性写到元件属性里后续导网表或转 PCB 时Allegro 要靠这个属性去找封装。如果你漏了映射PCB 导入后会出现一堆封装缺失的错误。另外如果你的原理图库里的 symbol 命名和数据库里的SymbolName不一致CIS 会弹出一个匹配对话框让你手动选 symbol。如果你希望全自动匹配务必保证SymbolName与 Capture 库里的名字完全一致。4.4 关于 .dbc 文件格式的补充如果打开 .dbc 文件看会发现它本质上是文本格式类似[ODBC] DriverMicrosoft Access Driver (*.mdb, *.accdb) DSNCIS_Demo DbqC:\Components\ComponentDB.accdb [Components] PartNumberPart Number ValueValue PCBFootprintPCB Footprint ManufacturerManufacturer这个文件可以直接手写但前提是你非常清楚字段定义。第一次配置建议用向导生成之后如果需要修改映射可以直接改文本再刷新。5. 配置完怎么验证从打开 CIS 窗口到真实放置一个器件5.1 打开 Place Database Part 窗口的几种方式配置完成后在 Capture 的工程中打开原理图页面点击菜单Place - Database Part或者按快捷键Z部分版本支持会弹出 CIS 浏览窗口。这个窗口左侧是数据库字段的筛选区右侧是器件列表。你可以按Value筛选按Manufacturer筛选甚至直接在搜索框里输入PartNumber关键字。双击某条记录Capture 会弹出Place Part对话框让你选择对应的原理图 symbol放置后器件属性自动填充。如果Place - Database Part是灰的说明 CIS 功能没启用检查一下Capture.ini里是否配置了CIS_CFG_FILE以及 Capture 是否正常加载了 .dbc 文件。5.2 验证字段是否正确带入原理图放置完一个电阻后双击这个电阻查看属性确认以下内容Value是否为数据库里的值PCB Footprint是否为数据库里的封装名Part Number是否为数据库里的料号Manufacturer、Description等是否正常显示如果字段是空的回到 .dbc 配置里检查映射如果字段显示为乱码检查数据库文件是否用了中文表头或字段名。5.3 常见验证失败的快速排查清单现象可能原因处理方式找不到 ODBC 数据源创建的是 64 位 DSN或 DSN 名称不对用 32 位 ODBC 管理器重建 DSN双击器件没反应数据库表没设置关键字字段在 .dbc 里指定 PartNumber 为关键字放置后 Value 为空字段映射漏了 Value检查 .dbc 映射放置后封装不对SymbolName 或 PCB Footprint 与库不一致统一命名6. 数据库不是 Access 一份文件这么简单Excel、SQL Server 的现实考量6.1 Access 和 Excel 的边界在哪里很多团队最初用的是 Excel 表来维护元器件后来想用 CIS 直接读 Excel。这里要说清楚CIS 确实能通过 ODBC 读 Excel但 Excel 作为 CIS 的数据源有几个明显问题多人同时编辑 Excel 容易锁文件导致 CIS 读取失败。Excel 的数据类型不够严格料号可能被自动转成科学计数法或日期格式。字段长度、文本格式不可控容易出现看起来一样但实际匹配不上的情况。Access 比 Excel 稳定得多但同样有并发问题。如果你所在的团队超过三个人同时维护器件库我建议直接上 SQL Server 或 MySQL。6.2 连接 SQL Server 时容易踩的坑连接 SQL Server 需要用 32 位的 SQL Server ODBC 驱动。在 Windows 上安装了 64 位 SQL Server 客户端不代表 Capture 能用必须确保 ODBC 管理器里能看到 SQL Server 相关的 32 位驱动。连接 SQL Server 的 .dbc 配置通常是[ODBC] DriverSQL Server DSNCIS_SQL_Demo Server192.168.1.10 DatabaseComponentDBDSN 在 ODBC 管理器里配置好后服务器地址和数据库名都不用写在 .dbc 里ODBC 管理器会帮忙记住。如果数据库在局域网内注意防火墙和 SQL Server 的 TCP/IP 是否开启否则 Capture 连接时会报超时。另一个常见问题是登录账号权限。CIS 读取数据库只需要 SELECT 权限但很多人图省事用了 sa 账号这不仅是安全隐患还可能在数据库连接数多的时候出问题。建议单独建一个只读账号给 CIS 用。6.3 多人协作时的数据维护方式无论用 Access 还是 SQL ServerCIS 本身只负责读取数据不负责写入。也就是说数据库的维护需要单独的工具或流程来做。比较合理的做法是由硬件工程师或库管理员统一维护数据库。新增器件走审批流程申请 - 填写参数 - 审核 - 写入数据库。版本更新时尽量只标记旧器件为停产不要把旧记录删除否则历史原理图重新打开时可能找不到对应记录。如果不做这些管理规范CIS 数据库很快会变成无人维护的死库。工具只是一半流程同样重要。7. 踩坑实录我配 CIS 数据库时遇到过的三个顽固问题7.1 问题一Capture 提示Data source name not found and no default driver specified这个问题的原因几乎都是 ODBC DSN 创建不成功或者创建的位置不对。这里要特别注意在 Windows 控制面板的管理工具里打开ODBC 数据源(64位)创建的是 64 位 DSNCapture 看不到。我当时的排查过程和办法先确认 DSN 在 32 位 ODBC 管理器里能看到。再确认 DSN 名称和 Capture.ini 里的CIS_CFG_FILE指向的 .dbc 文件里写的 DSN 完全一致注意大小写和空格。最后在 32 位 ODBC 管理器里点测试确认数据库文件能正常打开。如果测试报文件已在使用之类的错误说明 Access 数据库正被占用关闭所有打开的 Access 窗口再试。7.2 问题二CIS 窗口能打开但器件列表始终是空的这个问题我遇到时第一反应是数据库连接失败但 ODBC 测试是成功的。后来发现是 .dbc 配置里的表名写错了或者数据库里的表名和 .dbc 里的大小写不完全一致。SQL Server 里的表名区分大小写与否取决于排序规则Access 一般不分。排查时可以这样打开 .dbc 文件确认[Components]段下面有没有把表名写成Components。回到数据库确认表名确实是Components而不是Component或components。用向导重新生成 .dbc不要手写表名。另外如果数据库表里设置了复杂的查询视图CIS 不一定能正确识别尽量用实际表不要用视图。7.3 问题三放置器件后原理图里出现重复属性这种情况通常是因为原理图 symbol 本身已经带有Value、PCB Footprint等属性CIS 放置时又写入了一遍导致同一个属性名出现两个值。解决办法是检查原理图库里的 symbol 属性定义把和 CIS 映射冲突的默认属性清空或者统一在 CIS 映射里覆盖。比较稳妥的做法是symbol 里只保留Part Number、Value、PCB Footprint这三个属性其他属性全部删除。所有属性通过 CIS 写入不在 symbol 里预填避免重复。如果 symbol 里必须预填某些属性确保和数据库映射字段名不冲突。这个问题的隐蔽性在于原理图里看着属性是双份的导出的 BOM 会出现重复列等你发现的时候可能已经交付过一版 BOM 了。8. 从 CIS 数据库到 BOM整个链路的价值兑现CIS 配置完成之后真正的收益体现在 BOM 输出上。不用 CIS 的人BOM 靠手工整理经常出现原理图里是 10kBOM 里写 10K封装写 R0603 或 0603 不统一这类问题。用了 CIS所有字段从数据库来BOM 的一致性问题就大幅减少。在 Capture 里输出 BOM 时选中设计点击Tools - Bill of Materials在属性列表里勾选需要导出的字段比如Part Number、Value、PCB Footprint、Manufacturer、Description排序后导出 CSV 或 Excel。这里有个建议BOM 的字段顺序和数据库字段顺序尽量一致这样采购工程师拿到 BOM 后可以直接按列筛选不需要重新调整格式。如果数据库里已经维护了价格和供应商BOM 里也可以加上省去采购询价时反复沟通。还可以配合 Capture 的变量功能把 BOM 模板做成公司标准格式。这样所有项目导出的 BOM 都是统一风格对质量体系审查也很有帮助。9. 进阶玩法把 CIS 数据源接到 PLM/ERP 或者用脚本批量维护很多公司走到 Access 这一步后开始觉得维护成本高器件加了几千条靠手工在 Access 里录效率太低。这时候可以考虑用脚本批量导入。如果你有 Python 环境可以写一个简单的脚本读取外部的 Excel 清单校验字段后写入数据库。比如用pandas读 Excel用pyodbc写 Access 或 SQL Server。这样采购或硬件工程师在 Excel 里维护候选料每周跑一次脚本同步到数据库CIS 就能看到最新数据。import pandas as pd import pyodbc df pd.read_excel(candidate_parts.xlsx, dtype{PartNumber: str}) conn pyodbc.connect( rDRIVER{Microsoft Access Driver (*.mdb, *.accdb)}; rDBQC:\Components\ComponentDB.accdb; ) cursor conn.cursor() for _, row in df.iterrows(): cursor.execute( INSERT INTO Components (PartNumber, Value, PCBFootprint, Manufacturer, Description) VALUES (?, ?, ?, ?, ?), row[PartNumber], row[Value], row[PCBFootprint], row[Manufacturer], row[Description] ) conn.commit() conn.close()把脚本放到 Windows 计划任务里每天跑一次就能实现Excel 修改 - 自动入库 - CIS 读取的半自动链路。但脚本里最好加上对重复PartNumber的检查否则跑第二次就会因为主键冲突报错。如果公司已经上了 PLM 或 ERPCIS 数据库也可以从这些系统里做视图同步。常见做法是在 SQL Server 里建一个视图把 ERP 的物料数据按Components表的字段格式暴露出来然后让 .dbc 指向这个视图。这样 ERP 里的物料审核通过后CIS 自动就能查到。这种做法的前提是 ERP 或者 PLM 的数据库表结构比较稳定且能从业务库抽取。如果你们的系统权限卡得紧也可以由 IT 定时导出 CSV再通过脚本写入 CIS 库。总之思路是不要让工程师手工在 Access 里录数据人和库之间要有一层自动化工具。10. 日常维护的几个习惯让数据库长期不出乱子10.1 定期备份与恢复演练Access 文件小复制一份就完成备份但一定要在备份后实际打开验证不要等到库文件损坏了才发现备份不可用。SQL Server 的话建议设置每周全量备份每天增量备份并在测试环境里做一次恢复演练。10.2 字段命名保持稳定CIS 的原理图文件里会保存属性名比如Part Number。一旦数据库字段名变了你会面临旧原理图里的属性名是 A新原理图里却是 B的混乱情况。改字段名之前先想清楚能不能承受历史数据的迁移成本。10.3 用状态字段而不是删除记录数据库里建议加一个Status字段记录器件的生命周期状态Active、EOL、Not Recommended。CIS 浏览窗口里可以按状态筛选。这样新设计不会选到停产料旧设计打开时又能看到原始数据。如果直接把停产的料删掉历史原理图重新打开时CIS 会提示找不到记录虽说不影响原理图已有的属性但你想重新生成 BOM 或者查看原器件信息时就麻烦了。10.4 多人使用时的权限控制SQL Server 场景下建议给不同人不同的权限库管理员有写权限硬件工程师只有读权限。这样避免有人误改数据库字段导致所有工程都受影响。如果团队小、用 Access可以在打开数据库时设置独占和只读选项但这只适合单机使用不适合多人并发。11. 一些经验之谈CIS 上线前先在测试工程里跑一遍全流程说一千道一万配置完 CIS 之后别直接拿正式项目试水。你至少应该花半天时间新建一个测试原理图工程把 CIS 配置、放置器件、导出 BOM、导入 PCB 这一整条链路全部走一遍。具体要验证的点包括CIS 窗口能正常刷新数据新增的数据库记录能立即看到部分数据源需要刷新或重开窗口。放置的器件属性完整没有重复属性或乱码。原理图能正常导出网表Allegro 能正确导入对应封装。BOM 导出后列对齐、字段完整可以直接发给采购。这个测试过程花的半天时间会在后续项目里节省无数个小时。另外在配置过程中如果遇到奇怪的问题试试重启 Cadence License Manager 和 Capture有时候配置文件更新后需要重启才能生效。还有人遇到过 .dbc 文件被占用导致保存失败的情况那通常是因为 Capture 还开着配置界面关掉重开就能解决。
返回列表