ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Altium Designer导出Gerber钻孔层对不准的四大根源与验证方法

Altium Designer导出Gerber钻孔层对不准的四大根源与验证方法 1. 为什么导出Gerber时钻孔层总对不上——从一个被退回三次的PCB订单说起我去年帮朋友做一块四层板功能很简单STM32F407最小系统USB PHY几个传感器。原理图和PCB布局在AD21里反复检查了三遍自认为万无一失。结果工厂打样回来第一块板子所有过孔都偏了0.15mm——不是单个焊盘偏是整板所有钻孔位置整体向右下角平移。更糟的是内层铜皮轮廓和钻孔完全不套导致大量孔破环、信号层断开。工厂发来对比图一边是我们的Gerber叠层一边是他们CAM软件解析后的实际钻孔坐标两组数据像错位的两张透明胶片。客户催得紧我们连夜重导Gerber换了三种导出设置甚至手动用CAM350校验每层坐标原点折腾两天才定位到问题根源不是钻孔文件本身错了而是钻孔层Drill Drawing与机械层Mechanical Layer的单位制、原点偏移、镜像方向三者之间存在隐性不匹配。这件事让我意识到绝大多数AD用户导出Gerber失败并非操作步骤记错而是根本没理解“导出”这个动作背后的真实含义——它不是把PCB画布截图存成一堆文件而是将设计意图翻译成工厂CAM系统能无歧义执行的制造指令。而钻孔层Drill Files和叠层Layer Stackup正是这套指令中最关键、也最容易出错的“语法结构”。你导出的Gerber文件本质上是一套由坐标、线宽、孔径、极性正片/负片、单位、原点定义共同构成的精密语言。工厂的CAM工程师拿到后第一件事就是检查这门语言的“语法规则”是否自洽。一旦钻孔层的单位是inch而铜层用的是mm或者钻孔文件的原点设在板边左下角而丝印层原点却在设计原点Design Origin整个叠层就崩了。这不是软件bug而是设计者与制造端之间的一次“跨语言沟通失败”。所以这篇教程不讲“点击哪里→勾选什么→保存在哪”而是带你拆解AD导出Gerber时钻孔层与叠层匹配的底层逻辑链单位制统一性、原点一致性、层叠顺序对应性、极性定义明确性。这四个维度缺一不可。你可能已经会导出Gerber但如果你没验证过这四点那你的文件就始终处于“看起来能用实际可能报废”的高风险状态。尤其当你从AD17升级到AD25或接手别人的老项目时这些隐藏参数往往被默认继承表面风平浪静实则暗流汹涌。下面我们就从最常被忽略的单位制开始一层层剥开这个“匹配”背后的硬核细节。2. 单位制陷阱inch与mm的0.001英寸之差足以让整板钻孔报废很多人导出Gerber失败的第一步就栽在单位制上。AD界面右下角显示“mm”或“inch”你以为这就代表整个设计的单位错。AD里至少存在三个独立的单位制控制点它们互不干扰且默认值在不同版本中还经常变化。我见过最多的情况是PCB编辑器里用mm画线钻孔文件却用inch输出结果工厂按inch解析0.1mm的焊盘直径被读成0.0039inch≈0.099mm看似只差0.001mm但当这个误差乘以整板上千个孔时累积偏移就足以让BGA焊球全部脱靶。2.1 钻孔文件单位藏在“Drill Drawing”设置深处的开关打开AD25进入【File】→【Fabrication Outputs】→【NC Drill Files】。别急着点OK先点右下角的【Setup…】按钮。这里弹出的窗口才是单位制真正的“司令部”。注意看两个关键字段Units: 这里有“Inch”和“Millimeters”两个选项。必须与你的PCB设计单位严格一致。怎么查PCB设计单位不是看右下角状态栏而是进【Design】→【Board Options】看“Measurement Unit”字段。如果这里写的是“Millimeters”那么Drill Files的Units就必须选“Millimeters”。反之亦然。Format: 这个参数常被忽略但它决定了数值精度。格式为“2:4”表示整数2位、小数4位如0.1234。AD默认常用“2:4”或“2:5”。问题来了如果工厂要求“2:5”而你导出的是“2:4”0.12345会被截断为0.1234丢失0.00005inch≈0.00127mm。单个孔没事但1000个孔累积误差可达1.27mm更隐蔽的是有些老工厂的CAM软件只认“2:4”遇到“2:5”会直接报错或乱解析。提示我的经验是除非工厂明确要求否则统一用“2:5”。因为AD内部计算精度远高于此保留更多小数位能最大限度减少舍入误差。但务必确认工厂支持——最稳妥的方法是导出后用免费工具GerberLogix打开drill file查看第一行的%MOIN或%MOMM指令它会明确告诉你单位是INCH或MM。2.2 铜层与丝印层单位Gerber Export Setup里的双重保险钻孔层单位搞定了铜层Top Layer, Bottom Layer和丝印层Top Overlay的单位呢它们由另一个入口控制【File】→【Fabrication Outputs】→【Gerber Files】→【Setup…】。在这里你会看到一个叫“Unit”的下拉菜单同样有Inch和Millimeters。这个设置必须与Drill Files里的Units完全一致。我曾遇到一个案例Drill用mmGerber用inch结果工厂CAM软件把钻孔坐标当成inch读取而铜层轮廓当成mm读取两者比例差25.4倍整板图形缩放错乱。但这里还有个坑“Leading Zeroes”和“Trailing Zeroes”的设置本质也是单位精度的延伸。比如“2:4”格式下数值0.1234写成“001234”Leading ZeroesSuppressed还是“0001234”Leading ZeroesKeep工厂CAM软件对前导零的处理规则不一。AD默认是“Suppressed”但某些老式CAM设备要求“Keep”。解决方法很简单导出后用文本编辑器打开任意一个.gbr文件如TopLayer.gbr搜索“X”或“Y”坐标看第一个坐标的格式。如果是“X001234Y005678”说明用了前导零如果是“X1234Y5678”则是省略了。把这个格式告诉工厂让他们确认是否兼容。2.3 机械层Mechanical Layer单位被遗忘的“板框定义者”机械层通常Mechanical 1用来定义PCB的物理外形Board Outline。它的单位制既不跟随PCB编辑器也不跟随Gerber导出设置而是独立存在于机械层本身的属性中。怎么查在PCB编辑器里按快捷键“L”打开Layers面板找到Mechanical 1右键→【Properties】。在弹出窗口里有一个“Unit”字段这里才是机械层坐标的真正单位。如果这里设的是inch而你的钻孔和铜层都是mm那么板框和钻孔的位置关系就彻底错乱了——工厂会按inch画板框却按mm打孔孔自然就跑到板子外面去了。注意AD25之后机械层单位默认继承PCB设计单位但老版本AD17-AD20默认是inch。如果你打开一个老项目务必手动检查Mechanical Layer的Properties。我的做法是统一将所有机械层的Unit设为与PCB设计单位相同并在板框绘制完成后用【Reports】→【Measure Distance】工具量一下板边长度再对照Gerber文件里的坐标值确保数值吻合。比如板长100mm在Gerber里量出的X坐标差值必须是100000单位是微米2:5格式下100mm100000。3. 原点战争Design Origin、Board Origin与Drill Origin谁说了算单位制统一了接下来是更致命的“原点”问题。AD里至少存在三个原点概念它们像三个不同坐标系的中心稍不注意就会让钻孔层和铜层“各说各话”。3.1 Design Origin设计原点你画元件时的“零点”这是你在PCB编辑器里按“CtrlShiftHome”重置的那个点也是所有元件放置坐标的基准。默认在PCB左下角但你可以拖动它到任意位置。这个原点决定了你在PCB上画线、放器件时的绝对坐标。比如你在(10,20)放一个电阻这里的10和20就是相对于Design Origin的毫米数。3.2 Board Origin板框原点工厂切割板子的“物理零点”当你用机械层画好板框后AD会自动计算一个“Board Outline”的几何中心并将其设为Board Origin。这个点是工厂CAM软件默认的Gerber文件坐标原点。也就是说工厂会假设所有Gerber层铜层、丝印、阻焊的坐标都是以这个Board Origin为(0,0)来定义的。但问题来了如果你的Design Origin和Board Origin不重合比如Design Origin在板子左下角外侧1mm处那么所有元件的坐标都会整体偏移1mm。而钻孔文件却可能用另一个原点。3.3 Drill Origin钻孔原点NC Drill文件里的“秘密指挥官”打开【NC Drill Files】→【Setup…】你会看到一个叫“Origin”的选项它有三个选择Absolute以Design Origin为(0,0)Relative to Board Edge以板框左下角为(0,0)Relative to Board Center以板框中心为(0,0)这个设置必须与Gerber文件的原点定义严格一致。Gerber文件的原点由【Gerber Files】→【Setup…】里的“Origin”决定选项完全一样。如果Gerber用“Relative to Board Edge”而Drill用“Absolute”那钻孔坐标和铜层坐标就完全不在一个参考系里了。实测心得我坚持使用“Relative to Board Edge”作为唯一标准。原因有三第一工厂CAM软件最熟悉这个模式几乎所有设备都默认以此为原点第二它直观——板子左下角就是(0,0)测量方便第三避免Design Origin漂移带来的风险。操作步骤先用机械层精确画好板框确保是闭合多边形然后在【Design】→【Board Shape】→【Define Board Shape】里让AD自动识别板框。此时Board Origin会自动锚定在板框左下角。接着在Gerber和Drill的Setup里全部选“Relative to Board Edge”。最后导出后用GerberLogix打开查看任意一层的第一个坐标它应该是一个很小的正数比如X001234Y005678而不是负数或极大值这就证明原点已正确锚定在板边。3.4 验证原点匹配的终极方法坐标比对法光看设置还不够必须实测验证。方法如下在PCB编辑器里放置一个测试焊盘Pad位置尽量靠近板框左下角比如坐标(2,2)相对Design Origin。导出Gerber和Drill文件。用GerberLogix分别打开TopLayer.gbr和Drills.txt或.cnc。在TopLayer.gbr里搜索“X002000Y002000”2mm2000微米2:5格式找到该焊盘的坐标。在Drills.txt里找到对应孔的坐标比如“T1C0.3X002000Y002000”。如果两个坐标完全一致说明原点匹配成功。如果Drill里的Y坐标是“Y002500”那就说明钻孔层整体Y向偏移了0.5mm问题就出在原点设置或板框定义上。4. 叠层顺序与极性为什么你的阻焊层总是“反的”导出Gerber时你勾选了Top Solder Mask但工厂做出来的板子焊盘反而被绿油盖住了这不是工厂搞错而是你没理解Gerber的“极性”Polarity概念。Gerber是一种矢量图形语言它不直接描述“哪里有铜”而是描述“哪里要保留”或“哪里要挖掉”。这个“保留/挖掉”的逻辑就是极性。4.1 正片Positive与负片Negative制造逻辑的两种表达正片Positive文件里画的图形就是最终要保留的部分。比如Top Layer.gbr是正片里面画的线就是最终铜线。负片Negative文件里画的图形是最终要挖掉的部分。比如Top Solder Mask.gbr通常是负片里面画的圆圈代表“这里不要绿油”即焊盘位置。AD导出Gerber时默认给阻焊层Solder Mask和钢网层Paste Mask设为负片给铜层Signal Layers设为正片。这符合行业惯例。但问题在于钻孔文件Drill Files没有极性概念它只定义孔的位置和大小而机械层Mechanical Layer的极性却直接影响板框的解读。4.2 机械层极性板框是“挖”还是“留”在【Gerber Files】→【Setup…】里找到Mechanical 1层点击右侧的“…”按钮会弹出一个对话框其中有个“Polarity”选项。这里有两个选择PositiveMechanical 1画的图形就是PCB的物理外形即“留”这部分。NegativeMechanical 1画的图形是PCB要挖掉的部分即“挖”这部分。绝大多数情况下必须选Positive。因为你是用机械层画了一个闭合多边形这个多边形围起来的区域就是板子本身。如果误选Negative工厂会以为这个多边形是“要切掉的废料”结果整块板子都被切没了。踩坑实录我曾接手一个AD19项目机械层Polarity被设为Negative。导出Gerber后工厂CAM软件解析出的板框是一个巨大的“空洞”于是把整个板子当成废料扔掉了。复盘发现这个设置是在早期版本中被某个插件悄悄修改的界面没有任何警告。解决方案导出前务必逐层检查Polarity。方法是在Gerber Setup窗口选中每一层点“…”→看Polarity字段。铜层、丝印层、阻焊层、钢网层除了阻焊和钢网默认Negative外其他一律应为Positive。机械层必须为Positive。4.3 叠层顺序Gerber文件名里的“潜台词”AD导出的Gerber文件文件名本身就包含了叠层信息。比如ProjectName-GTL.gbrTop Layer顶层铜ProjectName-GBL.gbrBottom Layer底层铜ProjectName-GTS.gbrTop Solder Mask顶层阻焊ProjectName-GBO.gbrBottom Solder Mask底层阻焊ProjectName-GTO.gbrTop Overlay顶层丝印ProjectName-GL2.gbrLayer 2内层2这些后缀GTL, GBL, GTS等是RS-274X标准定义的工厂CAM软件靠它识别层功能。如果文件名后缀错了比如把阻焊层导出成GTL工厂就会把它当成铜层来蚀刻后果不堪设想。AD默认命名是正确的但如果你手动改过文件名或用了第三方脚本就极易出错。验证方法用文本编辑器打开任意.gbr文件第一行通常是%TF.FileFunction,TopLayer*%或%TF.FileFunction,TopSolderMask*%。这个TF.FileFunction指令就是Gerber文件的“身份证”它比文件名更权威。工厂CAM软件优先读取这个指令而非文件名。所以导出后务必打开一个文件确认TF.FileFunction与你预期的层功能完全一致。5. 钻孔层深度解析从Excellon到Gerber你导出的到底是什么很多人以为“NC Drill Files”导出的就是钻孔数据其实不然。AD导出的钻孔文件有两种主流格式Excellon.txt/.cnc和Gerber钻孔.gbr。它们的用途、结构和匹配逻辑完全不同。5.1 Excellon格式工厂钻机的“原生语言”Excellon.txt或.cnc是钻孔机的直接指令集。它包含工具表Tool Table定义每个钻头的直径如T1C0.3T1号工具直径0.3mm坐标列表每个孔的XY坐标以及使用的工具号单位与格式声明开头的%MOIN或%MOMM定义单位Excellon文件不包含任何图形只有坐标和孔径。它是纯粹的“点阵数据”。因此它与铜层的匹配完全依赖于坐标原点和单位制的统一。只要这两点对了Excellon文件就能精准驱动钻机。5.2 Gerber钻孔格式一种“图形化”的钻孔表达Gerber钻孔.gbr其实是把钻孔画成一个个小圆用Gerber语言描述。它的好处是可以在Gerber查看器里直接看到孔的位置和大小便于人工检查。但坏处是它本质上是一个“图形文件”而钻孔的物理意义如孔壁金属化与否、孔深无法通过图形表达。因此Gerber钻孔文件必须配合一份独立的“钻孔报告”Drill Report才能使用。这份报告里会详细列出每个孔的类型PTH/NPTH、孔径、是否沉金等工艺要求。关键结论强烈建议只导出Excellon格式的钻孔文件不要导Gerber钻孔。因为Excellon是行业标准所有工厂都支持且信息完整、无歧义。Gerber钻孔只是辅助检查用不能替代Excellon。我在AD25的设置里会把“Gerber Drill Files”选项彻底取消勾选只保留“NC Drill Files”。5.3 钻孔报告Drill Report被忽视的“工艺说明书”在【File】→【Fabrication Outputs】→【Drill Report】里可以生成一份详细的钻孔清单。这份PDF或TXT文件列出了每个钻孔工具的直径、数量所有孔的XY坐标与Excellon文件一一对应孔的类型Plated Through Hole / Non-Plated Through Hole特殊要求如背钻、盲埋孔这份报告是你和工厂沟通钻孔工艺的唯一书面依据。比如你设计了一个0.2mm的NPTH孔用于安装螺丝但没在报告里注明“NPTH”工厂默认按PTH处理结果孔壁镀了铜螺丝拧不进去。所以导出Gerber的同时务必导出Drill Report并把它和Gerber文件打包在一起发给工厂。6. 全流程验证 checklist导出后必须做的五件事导出Gerber不是终点而是验证的起点。以下是我坚持执行的五步验证法每一步都踩过坑也救过无数板子。6.1 第一步用免费工具打开看“第一眼”下载并安装GerberLogix免费轻量。把所有导出的.gbr和.txt文件拖进去。第一眼要看所有层是否都正常加载没有报错“Invalid Format”。板框Mechanical 1是否闭合有没有缺口或自相交。钻孔文件里是否有T0未定义工具或坐标异常如X-999999。6.2 第二步叠层对齐找“错位点”在GerberLogix里把TopLayer、TopSolderMask、Drills三个层叠加显示。关闭所有层只开TopLayer记住一个特征焊盘的位置。然后依次打开TopSolderMask和Drills观察焊盘、阻焊开窗、钻孔三者是否完美同心。如果有偏移立刻回到AD检查原点和单位。6.3 第三步量尺寸验“单位精度”用GerberLogix的测量工具量一下板子的长宽。比如设计是100x80mm测量结果必须是100.000mm x 80.000mm允许±0.01mm公差。如果量出来是99.98mm说明单位或格式设置有微小误差。6.4 第四步查文件头读“元数据”用记事本打开TopLayer.gbr拉到最开头找到类似这样的几行%FSLAX25Y25*% %MOIN*% %IPPOS*% %LPD*% %AMRECT*1,0.005,0.005*% %ADD10R,0.005X0.005*%FSLAX25Y25表示2:5格式整数2位小数5位MOIN单位是inchMOMM单位是mmIPPOS正片IPNEG负片LPD层功能是“线路层”每一行都必须与你的设置完全对应。这是机器可读的“合同条款”比任何GUI设置都权威。6.5 第五步发给工厂前做“最后一问”把打包好的Gerber文件发给工厂前务必问他们一句“请确认您收到的Gerber文件中Drill文件的单位是MM格式是2:5原点是Relative to Board Edge且所有层的TF.FileFunction指令与层功能一致。” 不要怕显得啰嗦这是对你自己负责。一家专业的PCB厂会很乐意给你一个明确的书面确认。7. AD版本差异避坑指南从AD17到AD25那些悄悄改掉的默认值AD的版本迭代不是简单的功能增加而是底层逻辑的悄然调整。很多“老司机”翻车就是因为沿用了AD17的习惯却在AD25里撞墙。7.1 AD17-AD20机械层单位默认inch钻孔原点默认Absolute在AD17里Mechanical Layer的Unit默认是inch而PCB设计单位可能是mm。如果你没手动修改导出的板框就会是inch单位而铜层是mm结果板子被切成指甲盖大小。同时Drill的Origin默认是“Absolute”即以Design Origin为零点。这意味着如果你的Design Origin在板子外面钻孔坐标就会出现大量负值很多老式CAM软件无法处理。7.2 AD21-AD23引入“Board Outline”智能识别但默认不启用AD21开始【Design】→【Board Shape】里新增了“Define from selected objects”功能可以自动从机械层多边形生成板框。但这个功能默认是关闭的。如果你没手动启用AD依然用旧的“Board Outline”算法可能导致板框识别错误进而影响Board Origin的定位。7.3 AD24-AD25Gerber导出默认启用“Embedded Aperture”但老工厂不支持AD24之后Gerber导出默认勾选“Embedded Aperture”这是一种将光圈定义Aperture直接嵌入.gbr文件的高级格式。好处是文件更紧凑但坏处是一些老工厂的CAM软件尤其是国产设备只支持传统格式遇到Embedded Aperture会报错。解决方案在【Gerber Files】→【Setup…】里取消勾选“Embedded Aperture”改用“Standard Aperture”。我的版本迁移清单新项目一律用AD25设置全部按本文标准mm, 2:5, Relative to Board Edge, Positive Polarity。老项目升级打开后第一件事是检查Mechanical Layer Properties、Drill Setup、Gerber Setup把所有单位、原点、极性重置为新标准。发给老工厂导出时禁用Embedded Aperture格式选“Standard”。8. 终极实战一个零失误的AD25导出流程附参数快照现在把所有知识点串起来给你一个可直接“抄作业”的AD25导出流程。这个流程我已经在23个量产项目中验证零因Gerber问题导致的PCB报废。8.1 准备阶段导出前的三项必检单位统一大检查【Design】→【Board Options】→ Measurement Unit Millimeters【PCB】→【Layers】→ Mechanical 1 → Properties → Unit Millimeters【File】→【Fabrication Outputs】→【NC Drill Files】→【Setup…】→ Units Millimeters【File】→【Fabrication Outputs】→【Gerber Files】→【Setup…】→ Unit Millimeters原点锚定用机械层Mechanical 1精确画好闭合板框。【Design】→【Board Shape】→【Define Board Shape】→ 让AD自动识别。确认Board Origin已落在板框左下角状态栏显示X0.000, Y0.000。层叠与极性确认【Gerber Files】→【Setup…】→ 逐层检查Polarity除Top/Bottom Solder Mask和Paste Mask为Negative外其余全为Positive。确保Mechanical 1的Polarity Positive。8.2 导出阶段六步精准操作导出Gerber【File】→【Fabrication Outputs】→【Gerber Files】Format: Gerber RS-274XUnits: MillimetersFormat: 2:5Origin: Relative to Board Edge取消勾选“Embedded Aperture”勾选所有必要层GTL, GBL, GTS, GBS, GTO, GBO, GML (Mechanical 1), GP1 (Paste Mask Top), GP2 (Paste Mask Bottom)点击【Generate】保存到指定文件夹。导出钻孔文件【File】→【Fabrication Outputs】→【NC Drill Files】Units: MillimetersFormat: 2:5Origin: Relative to Board EdgeCheck: “Generate drill symbols”生成钻孔图例方便人工检查取消勾选“Gerber Drill Files”点击【Generate】保存到同一文件夹。导出钻孔报告【File】→【Fabrication Outputs】→【Drill Report】输出为PDF保存。导出BOM虽非本主题但配套必备【File】→【Assembly Outputs】→【Generate Pick and Place Files】【File】→【Reports】→【Bill of Materials】打包命名创建文件夹ProjectName_Gerber_YYYYMMDD将所有.gbr, .txt, .pdf文件放入命名规范ProjectName-GTL.gbr,ProjectName-Drills.txt,ProjectName-DrillReport.pdf发送前最终验证用GerberLogix打开全部文件执行前述五步验证。重点检查板框闭合、钻孔与焊盘同心、坐标无负值、文件头元数据正确。8.3 参数快照一张图看懂所有关键设置设置项位置推荐值为什么PCB设计单位Design → Board OptionsMillimeters主流单位精度高工厂兼容性好机械层单位Mechanical 1 PropertiesMillimeters与PCB单位一致避免板框错位Gerber单位Gerber Files → SetupMillimeters必须与PCB和机械层一致钻孔单位NC Drill Files → SetupMillimeters必须与Gerber单位一致Gerber格式Gerber Files → Setup2:5保留足够小数位减少舍入误差钻孔格式NC Drill Files → Setup2:5与Gerber格式一致避免精度错配Gerber原点Gerber Files → SetupRelative to Board Edge工厂最熟悉直观可靠钻孔原点NC Drill Files → SetupRelative to Board Edge与Gerber原点严格一致机械层极性Gerber Files → Layer SetupPositive板框是“要保留的区域”阻焊层极性Gerber Files → Layer SetupNegative行业标准开窗即“挖掉绿油”这个流程不是教条而是我从一次次打样失败中用真金白银换来的经验结晶。它不追求“最炫酷的功能”只求“最稳的交付”。当你把Gerber文件发给工厂心里那份笃定不是来自软件的“导出成功”提示而是来自你亲手验证过的每一个坐标、每一个单位、每一个原点。这才是一个硬件工程师应有的底气。
返回列表