news 2026/9/26 1:19:32

原理图位号乱?AD20自动编号从原理到实操一次讲清

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
原理图位号乱?AD20自动编号从原理到实操一次讲清

位号乱成一团这种事,干过原理图设计的都懂

先说个场景:一张板子画到第三版,原理图从两页长到八页,电阻电容一堆,LED、接口、芯片每块功能都从库里拖出来就放,位号完全是“出生顺序”。等到要出BOM、投板前整理,放眼望去 R12 旁边是 R3,C38 隔壁是 C9,U5 和 U2 隔了三页纸。PCB 那边导网络表倒是能导,但一查封装、一对 BOM,整个人就开始在工程文件里反复找元件。这还算是能忍的,最怕的是同一个位号出现在两张图上——编译直接给你飘红一片。

这个问题的正经解法,就是 Altium Designer 里最不起眼也最容易被低估的原理图元件自动编号(Annotate)功能。尤其是 AD20 之后的版本,原理图编辑器里那一套Tools > Annotation的菜单,做位号自动排序、重排、复位,非常成熟。花十分钟把规则设置清楚,几百个元件的原理图,一秒钟给你重新排得整整齐齐,而且完全符合你的阅读和装配逻辑。

这篇文章不打算只讲按钮在哪,我想把位号排序这件事从原理讲到实操,再到各种翻车场景都捋一遍。你如果画过多页原理图、需要出正规 BOM、或者被审图工程师疑问过“为什么你的位号是乱的”,那这篇应该能给你省下不少时间。

1. 位号为什么必须“重排”,而不是仅仅“要有一个编号”

很多新手会觉得,位号这东西不就是 R1 R2 C1 C2 嘛,能区分元件就行了,为什么非要搞“自动编号”和“重新排序”?这个想法短期没问题,但等你项目复杂到一定程度,就会明白位号秩序不只是给元件一个名字,它是一条贯穿原理图、PCB、BOM 和装配的全链路索引线索。

我给你拆成三个层面看。

1.1 位号是原理图与 PCB 之间唯一的“共同语言”

原理图上画的是一个个符号,PCB 上放的是一个个封装。符号和封装长得完全不一样,唯一的关联靠什么?就是位号。当你从原理图导入 PCB 或者反过来从 PCB 回标到原理图,工具匹配的逻辑就是“位号相同则视为同一个元件”。如果位号乱、或者更糟糕是有重复,那么 PCB 导入时轻则错位,重则直接报告 “Duplicate Designator” 之类的错误停在那里。平时手动画一两块小板子可能感受不深,但一颗板上有数百甚至数千颗元件时,这种混乱是要出大事故的。

1.2 位号秩序直接决定选料和装配效率

投板之后,工厂那边是按位号来贴装的。位号排得越有规律,备料员、贴片编程、手动补焊的人就越省事。假如一块电源板上,电阻从上到下、从左到右依次是 R1 到 R40,电容是 C1 到 C30,那别人一眼就能知道“哦,板上右下角那一排大概率是 R31 到 R40”。反过来,如果位号是按你画图时的鼠标点击顺序生成的,布局上根本没有规律,产线工人补焊一颗料还要对着图纸找半天。审图工程师看到这种图纸,第一印象就是设计者的工程素养不够——虽然这话有点苛刻,但现实就是如此。

1.3 位号重排是“可追溯性”的起点

正规的研发流程里,版本管理、ECN(工程变更)、故障溯源,都要依赖位号。比如客户反馈“U3 温度异常偏高”,如果你原理图上位号是乱编的,别人拿到图纸根本分不清 U3 究竟在哪一块功能电路里。而如果你按功能区块和信号流向来重排位号,U3 一看就知道属于主控核心区,问题定位会快很多。

所以,“重新排序”这四个字的重点不是“排序”本身,而是“让位号排列符合人的认知习惯与生产装配顺序”。这跟 Excel 里给几百行数据排个序是一个道理——数据本身没变,但可读性和可用性完全变了。

2. 自动编号背后的规则在哪里:AD20 的 Annotate 菜单深挖

AD20 的位号自动排序功能,集中在两个入口:菜单栏的Tools > Annotation以及Tools > Schematic Preferences(或者从 Preferences 里的 Schematic > Annotation 打开全局设置页)。我见过不少人用过一次“Annotate Quietly”就认为会自动排好,结果发现只是补了一下空缺编号,位置顺序完全没变。这其实就是没搞懂自动编号里那几组选项各自管什么。

2.1 Annotate 对话框里的四组核心设置

当你点击Tools > Annotation > Annotate Schematics Quietly旁边的那个下箭头,选Annotate...时,会弹出一个对话框。里面四块内容,缺一不可:

  • Scope(范围):决定对哪些图纸进行编号。常见选项有“All Schematics”(所有原理图图纸)、“Current Schematic”(仅当前图页)、“Selection”(仅选中的元件)等。如果你第一遍做整板编号,基本就是选 All Schematics。
  • Order of Processing(处理顺序):这里就是你“重新排序”的核心。里面有一堆方向选项:Up Then Across、Down Then Across、Across Then Up、Across Then Down 等等,下面我单开一节细说。
  • Designator Index Control(起始索引控制):决定编号从几开始、按什么步进递增。一般就是 Start at 1、Increment by 1,保持默认即可。不过有些公司规范要求位号按百位段分配(比如电阻从 R101 开始),就在这里改起始值。
  • Match By(匹配规则):默认情况下 Altium 会按物理元件(Physical Instance)来匹配,也就是“同一个逻辑元件在原理图上多次出现时只编一次号”。这个选项牵扯到多通道设计,后面进阶部分我会讲。

这四组设置配合使用,你就能按自己的意志重塑整张图的位号秩序。想全图一起重排就选 All;想只重排“当前选中区域”那就在原理图里框选元件之后再进对话框,范围选 Selection,这样其他图纸和区块的位号就完全不受影响。

2.2 全局设置里的“Resets”和“Reorder”逻辑

还有一个藏在 Preferences 入口的设置也值得注意:在Tools > Schematic Preferences(也就是 Preferences 对话框里 Schematic 分类下的 Annotation 页面),你会发现上面有 Reset Designators、Re-Order Designators 等按钮以及 “Remove Duplicate Designators” 之类的选项。这些其实是对编号状态进行“清零”和“清洗”的全局操作。

Reset Designators 会把所有位号清除成问号状态,比如变成 R?、C?、U?。这个步骤在很多重排流程里要故意先做一次,目的是让所有元件的位号先归零,然后再用接下来的规则统一编号,避免旧位号残留干扰排序结果。记住一个关键点:你先 Reset,再做完整 Annotate,才能得到“完全按要求从零开始”的编号。如果你不 Reset,只是点 Annotate Quietly,则只会在旧位号的基础上补号——很多时候这并不会让位号变得有规律。

3. 实操:完整做一次 AD20 位号重排的六个步骤

我知道看理论容易犯困,直接上操作。下面这套流程是我在常规项目里反复用过的,每一步都带原因,你可以直接照着抄。

3.1 备份工程文件

位号自动编号会影响原理图库中的元件实例属性,虽说不至于炸掉整个工程,但如果你操作错了方向、或者中途发现排序逻辑没设置对,往回退是很麻烦的。所以第一步永远是File > Save Project并顺手把整个工程目录复制一份,或者用版本管理工具(Git、SVN 都行)提交一个现场快照。这不丢人,是专业习惯。

3.2 复位所有元件位号

打开原理图工程,进入任意一张原理图,执行Tools > Annotation > Reset Schematic Designators。如果弹窗询问范围,就选 All Schematics。执行完之后,你去看原理图,上面元件位号全部变成 R?、C?、U? 这种带问号的形式。这一步的意义,是把之前可能已经乱掉的编号体系完全打碎,让后续编号没有任何历史包袱。

看到满图问号不要慌——这说明复位成功了。此时如果编译工程,交叉参考列表里会显示一堆未编号元件,这属于正常中间状态。

3.3 配置排序规则:方向、范围和起始值

在确保复位完成后,打开Tools > Annotation > Annotate...。如果只想对某一页做重排,在左侧的图纸列表里就只勾选那一页;如果是整板统一排,就勾选所有图纸。注意最好让“当前打开并显示的图纸”是第一页(或者你最希望作为编号起点的图纸),因为某些排序方向在决定“从哪张图开始”时会有影响。Direction 这一行,选 Down Then Across 还是 Across Then Down,区别人我放在下一节讲。起步索引默认从 1 开始,按 1 递增。

3.4 点击 OK 执行编号,并查看报告

设置完成之后点 OK。Altium 会立即执行编号,并在原理图上把位号全部更新。执行完强烈建议看一眼弹出的 Annotate Report 窗口——里面会列出元件总数、重新编号前后的映射关系(Old Designator -> New Designator)。这个报告不是摆设,核心价值是让你核对几件事:

  • 总元件数量有没有异常(比如凭空多了或少了);
  • 位号切换是否合理(特别是 FPGA 之类的大元件,位号有没有被乱改);
  • 是否存在任何报警(Warnings)或者错误(Errors)。

如果报告里有 Warning,别急着关。最常见的警告是 “Designators are already unique” 或者 “Part instances found with same physical designator”,前者说明你没有重复位号,不用管;后者就需要注意了,说明存在多个物理实例共用同一个位号的情况。真正出现这种情况时,到 PCB 导入阶段基本必炸。

3.5 验证电路连接与编译结果

位号变了,原理图电气连接本身不该有任何变化——如果 Altium 告诉你连接被修改,那多半是你复位之后还没来得及编号就编译,或者工程里有其他历史问题。验证的办法是Project > Compile Document / Compile All。编译若无错误,再打开Project > Project Options > Options里的“Netlist”或交叉引用相关项,确认元件相关交叉引用都正常。我相信大部分人在这一层就能放心继续画图。

3.6 检查 PCB 侧是否同步(如果需要回标)

如果你已经画了 PCB,位号重排之后,PCB 上元件位号不会自动跟着变。你需要Design > Update PCB Document更新一下工程变更(ECO),让 PCB 端的元件位号与原理图保持一致。这一步很多人会漏,结果就是原理图 Beautiful,PCB 一片旧位号,导出坐标文件跟 BOM 对不上。别问我怎么知道的。

4. 排序方向的选择:这个选项直接决定位号好不好看

排序方向的选项,是自动编号里最让人困惑、但也最值得花时间去理解的。AD20 提供了好几组:

方向选项含义适用场景
Up Then Across先按列自下而上,再按行从右向左图纸元件以列布局为主,或希望位号沿竖直方向走
Down Then Across先按列自上而下,再按行从左向右图中元件分多列,列内从上到下排,这是最常用的
Across Then Up先按行从左向右,再按列自下而上元件以横向布局为主,希望行内先排满
Across Then Down先按行从左向右,再按列自上而下最经典、最符合阅读习惯的方式:从左到右、从上到下

理解它们的关键,是搞清楚 Altium 在计算顺序时的“行”和“列”是怎么定义的——Altium 会把当前原理图图页的坐标当成一个网格系统,然后根据元件的坐标、以及你选择的处理顺序,按行/列扫描。所以,想让位号从左上角开始呈蛇形往下走,还是从左下角开始往上走,完全由方向决定。

实际设计里我最常用的还是 Across Then Down。理由很简单:绝大多数人的阅读习惯是从左到右、从上到下,位号按这个方向走,原理图拿给别人看的时候,别人能顺着正常视线从上往下找到元件,基本不用来回跳。Down Then Across 适合那种高度方向很长(比如一页原理图被拉得特别高)的图纸,或者你想让同一列内的元件优先形成一组连续的号段。

还有个小技巧:如果你希望“同一个功能模块内部的位号连续”,不要只依赖全局排序,而是分两步走。第一步:先在各原理图内手动/半手动调整模块内元件的位置,让它们排列成你希望编号追循的视觉方向;第二步:用 Selection 或单页 Annotate 对每个模块分别编号。虽然手动干预多一些,但结果往往最理想。全图一把梭的自动编号,再怎么设方向,都不可能百分百贴合你脑子里的模块划分,这点要有预期。

5. 位号重排的四个经典翻车场景与排查链路

光讲顺风顺水的流程,不讲翻车,那不是合格的工程分享。下面这几个坑我都在实际项目里见过,有的还是自己踩的,现在把完整链条写出来。

5.1 场景一:手动改过的位号,被自动编号“一键清零”

有位同事辛苦半天把手感好的位号全部手动改完,然后突然想到“哦我还没做自动编号”,顺手执行了一遍带 Reset 的重排,结果所有手动改的位号全部消失。他的本意其实只是想“让编号更整齐”,没想到先复位再编号等于把旧位号全扔了。

排查链路很简单:进入原理图后点开几个元件看属性——如果位号全变成 R? 或 C?,说明你在 Annotate 之前先点了 Reset;如果位号变了一组新的顺序但跟你手动改的完全不同,说明你在 Annotate 时选的规则覆盖了手动设置。

方案是:如果你已经在原位号上做过精细调整,就不要走“Reset -> Annotate”的完整流程,而是直接Annotate Schematics Quietly(或者 Annotate 但取消 Reset),这样 Altium 只会填补空缺和修正重复,不会把已有位号全部推翻。Allegro/Cadence 那边叫“位号重排”,规则类似:用不当就是大面积复位。

5.2 场景二:多图纸工程里,编号顺序不符合跨页逻辑

一个八页的原理图工程,第一页是电源,第二页是主控,第三页是接口。用户设置 Across Then Down,执行完发现整个工程的位号从第一页的电源开始排,然后才轮到底下接口页。如果公司规范倒是无所谓,但如果希望按“主控在前、电源次之、接口最后”的顺序走位号段,那你得先把图纸顺序在工程面板里调好,或者干脆分页分别编号,再把起始索引错开。

我自己的习惯是:先规划好每个功能页的目标位号段(比如 U1-U10 留给主控,U11-U20 留给电源,U21-U30 留给接口),然后每一页单独选中元件、用 Selection 范围、并手动设好起始索引来编号。这样图纸再多,位号段也不会互相污染。

5.3 场景三:位号重复导致编译/PCB 导入直接报错

这种事情通常发生在从其他 EDA 工具转过来的工程,或者多个子原理图合并时。症状是编译工程时出现 “Duplicate Net Identifier” 或不带响的直接列出重复位号,PCB 导入时报 “Failed to match designators”。

排查顺序建议:先Project > Compile All,看 Messages 面板里具体哪个位号重复;再用原理图编辑器的Edit > Find Similar Objects(或直接按 Ctrl+F 搜索位号文本),把重复元件一个个找出来。找到之后,按我们第 3 节的重排流程对部分图纸做一次 Annotate,Altium 会自动分配新的不重复位号。

这里提一个技巧:在 Annotate 对话框里,有一个 “Confirm” 相关选项,有些版本编号前会列出预计变化,你可以借此检查所有将要变化的位号,确认没有自己关注的特殊元件被改掉。

5.4 场景四:位号重排之后 BOM 的行顺序变乱

有位朋友做完重排,导出 BOM 后发现 Excel 里的表排序跟以前不一样了,以为自动编号把 BOM 搞坏了。事实上 BOM 行顺序跟位号顺序关系不大,BOM 排序通常由你导出的表格工具的排序规则决定。你真正该做的,是确认位号字段和 PCB 坐标文件里的位号完全一致,而不是纠结 Excel 里谁先谁后。

如果要让 BOM 跟 Schematic 位号顺序完全对应,导出时可以在 Altium 的 BOM 生成器里设置排序字段位 Designator/Item Name,并选择升序。这属于输出侧设置,不是原理图侧的问题。

6. 位号镜像、多通道与复用模块:自动编号的进阶思维

这一节写给已经有几年经验、手里画过多通道或者复用型项目的工程师。AD20 的自动编号不只是“给电阻排个号”,它背后的“物理实例匹配”和“图纸选择”机制,能帮你在复杂项目里少掉不少头发。

6.1 “位号镜像”到底是什么、什么时候要处理

热搜词里有“ad20如何位号镜像”,这个实际上是指:在画板子时,某些元件需要镜像放置(比如双面贴装、或者对贴的两块板),这时元件符号上显示位号的方向会跟着镜像。位号镜像本身跟自动编号是两个维度的事,但在按“镜像模块复制”时容易引发位号混乱。如果你复制了一个模块到另一处并维持镜像,Altium 默认会为新元件生成带问号的位号,需要再次 Annotate 才能分配编号。此时手动将复制元件的位号改成“原模块位号 + 后缀规律”(比如 A 面 U1~U10,B 面 U101~U110),反而比自动重排更可控。

6.2 多通道设计的位号策略

AD20 里多通道(Multi-Channel)项目的核心特点是同一张原理图在编译时被实例化多次。如果你直接对多通道原理图做自动编号,Altium 会依据 “Match By” 规则,判断所有通道里的元件是否属于同一个物理元件,还是不同物理元件。这里有一个非常容易踩的坑:如果你选用 “Ignore Part Instances”(忽略实例)之类的宽松匹配,可能会把所有通道的同一个器件编成同一个位号,这通常不是你要的效果(除非你真的打算所有通道共用封装和位置)。

我的建议:多通道项目位号,尤其是 FPGA、电源模块这种重复度极高的设计,优先用 “Channel Format” 标签,比如 $Component_$Channel,让位号带上通道信息。这样在 PCB 上你可以清楚地知道 U1A、U1B 分别是哪个通道的。自动编号在这种场景下,扮演的更多是“补号/校验”角色,而不是严格重排。老老实实把通道属性搞明白,比追求一套自动重排规则管用得多。

6.3 位号重排与团队协作

如果是多人协作同一个工程,最忌讳的就是每个人各自动手重排位号。经常出现的情况是:A 同事在自己电脑上重排了 U1~U50,保存后上传到版本库;B 同事一同步,发现自己的图纸上一堆 R? C?——因为他的本地原理图库里的元件状态和 A 同步过来的编号状态不一致。

这种情况下,你应该定一个规矩:位号重排只由一个人(通常是硬件负责人)执行,并且每次重排后必须连同 Annotate 报告一起提交到版本库。其余成员更新工程后,不要立刻自己重排,而是先 diff 一下报告,确认哪些位号发生了变化,再决定是否接受。这不是 Altium 的短板,而是工作流层面的事,但对最终成品质量影响巨大。

最后分享一点个人习惯

画了这么多年板子,我自己在 AD20 里最顺手的位号管理流程是:工程一开始就建好图纸顺序和功能分区,每画完一个模块马上框选做一次 Selection 范围内的编号;整板功能模块都画完、电气规则检查通过之后,再做一次全工程的复位重排,并导出编号映射报告存档。这一步看起来多花了五分钟,但换来的却是后续所有环节的省心——尤其是评审时别人能顺着位号看懂你的设计逻辑,这个价值很难用数字衡量。

如果你现在手上正有张原理图位号乱到不想看,别犹豫,按上面第 3 节流程走一遍。原理图元件自动编号这件事,本质上就是让设计秩序回归工具化、规则化,少让手工劳动和人为失误来拖后腿。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 1:18:13

CodeBuddy规则不生效?搞懂CODEBUDDY.md与rules加载机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:17:50

全栈自造Status Deck:用Tauri+Go+Vue构建开发者桌面仪表盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:16:39

华为杯数学建模竞赛AI使用说明:赛前5天必读的合规指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:15:48

MySQL安装全攻略:从下载到排错,小白也能一次搞定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:15:32

软件项目设计文档模板详解:从需求分析到数据库设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 1:14:54

2026届六大降AI率神器实测:TaoToken统一Key接入与效果验证配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华