PCB贴装加工数据结构设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贴装加工数据结构设计
C系统主要而对*.PCB、*.PCBDOC、*.CSV、*.TXT四种格式的读収解析. 在换作过程中会生成余下三种恪式的文件。因此对数抓•结构的设计主要是謫足对前四种文件解析后的数据保存的需要。本文通过对上述文件的格式分析,可归为三种数据类型。
4.1 PCB FILE 6 VERSION2.B 数据结构设计
便用Prulel设计的PCB文件,包含了多种国元的昭息,眼抵文件恪式与系统需求分析,只有文件头、元件描述部分、口由图元部分、PCB版而显示伯息部分含有PCB_CNC 系统所盅要的缶息,因此木文迪过直接设计对应的结构体來保存这些们息:
1.文件头
此部分的数据比较少,只包含一行,关于文件的一些统计数据,本文设计一个结构体Siaiic$Data来保存相关信息。具体代码如下所示㈢):
typcdcf si rue 1(
ini conncclionrcmaining;//未完成布纟戈的连接数
ini iracks;//连接总数
ini drill s://钻孔总数
ini neldef;//网络总数
int arc;//圆弧总数
ini via:〃过孔总数
int compcnenls://芫件总数
int fills;〃填充区总数
int pads;〃焊盘总数
int strings;〃字符串总数
}StaslicsDala;
2.元件部分
文件中所有的元件都在包含在此部分屮,由于元件的数量不定,可臥便用一个链表來保存所有元件.对于单个元
件可用一个结构W COM Def表示,考虑到需耍解析的CP. CT、CA三种图尤的数口也不定.COMDcf通过保存链表描针来索引这些屈性。对于元件的综合厲性〈图层、封装型号、X与Y的参考坐标等)放到一个结构体中比较理想。除了文件中所含的信息,COMDef结构休的设计还要考虑到其它因素,例如料槽号.是否已贴装完,所含的CP、Cl\ CA总数等,因此在结构休中还需要对应的成员属性来表示.最重要的是rti-J—个元件包倉多个焊盘的信息(包括坐标、直径等).但在文件屮却没有指明元件的屮心坐标,当下位机拾収元件时.一般拾収元件的屮心位M13-1,此时必须考虑到元件的中心坐标值,所以木文定文了一个描述矩形区域的结构休SiruciReci,井在COMDef结构体中定义了此类型变量成员.由于此文件恪式中元件包括了图形倍息, 可以用于图片显示,因此COMDef中也缓存了此元件显示时所占矩形区域的大小。另外一个需要考虑的问题是COMDef写入文件时,只写入非指针类型成员数据,对于指针类型成员,需要写入具指向的链表数据内容,因此会出现数拡对齐的问题,因此成员的排列要按一定的规则排列.考虑到二进制MAN格式文件的读取.COMDcf同时也定义了三个鉴型变虽:.分别对应着兀件所包含的焊盘图元、圆弧罔兀、线段图兀相应的数II-3•自由图元部分
本部分需要解析的只有FP、FA两种图元,可分别市链表保存。对于FP图元.本文定义的结构体名为CompFA, FA图元用结构体CwnpCA來表示。
4.PCB版面显示信息部分
这部分包含了protcl显示此文件需要的参数。木文所需要的是坐标原点倍息,可用
GD1+-*-'{«的类PoinlF 來表示。
PCB文件对应的整休数掘•结构示意:图如图4.1所示。
FP 郡J 体
CFPsruci
一
—
C
■■
---
Gpsma
CompCT 4 *•
CorrpCA.
m 4」PCBv28数据结构示恿国 Fig. 4.1 The data structure of PCB v28
4.2 PCBDOC 数据结构设计
DOC 格式文件屮焊盘、同弧等忙息是在单独的段中.与PCBV28 式不同,不再被 包含在元件的描述行内.而
是通过1D 数来表示其归屈哪个元件卩叫因此对应的数据结 构也不同°本文需要解析的部分包括板描述段(Bzal)第一行、75件描述段(Comp^ncni)、 焊盘描述段Pad.文木推述段Text.
1. 板描述段
板段包含的信息一般是显示伫息与设计选项的一些参数变虽,其中包括了绘图过程 屮设定的原点坐标值,是B oard 段的第一行“IRE COR D=BoardlOR 1G IN X=xlO RIGIN Y=y ” 中的用x 与y 表示的值lM35,o 本文同样用GDI++中的类PoiniF 来表示。
2. 元件描述段
元件段包含了所有元件信息,每个元件占用一行。Itl 于在元件的表示中启用1D 标 识符來表示,从整数零开始递增,可以统计元件的总体数口,因此木文以整型index 变 址來表示。行里也包括了元件的中心点、的坐标值,但是这个值是rtl altium 软件中元件库 文件决定的,用户在绘制元件库的时候,理论上是可以随意指定中心点的坐标
自曲證世 CompGFA . ft | EP TCBv2Stf
r
删t
拾轉购体 STuc-Bec i
线段结呦体 ・| CA | CA.千
7-
线股崔农 .....t 亘■厂山即|司
值,与真实值有出入的(特别是在元件含有奇数个引脚的情况下),丙此不能依赖此坐标來确定元件的拾収点位宜坐标。考虑到元件有可能没有焊盘,所以术文在设计元件结构体的时候,同时保留了心y和拾収矩形三种变量成员。由于每个元件的属性描述与PCBv28恪式不同,例如COMDef中由于没有[D值,需要考虑到怎样才能査找到其所包含的基本图元, 因此设计了徒表结构。基于DOC恪式的元件在其屈性描述行中,并不描述所包含的基本图元值息,而是在每种基木图元中都会有所属的元件的索引值,考虑到读取的效率的问脛,木文在对元件结构体〃倚时使用J‘ CArrayVlype,lyp模板类,除厂和C arrays —佯,对索引元素的访问时间是常值.与数组大小无关.还可以在必要时动态压缩或者扩展数组大小。另外使用CArray类还有一个重要原因是数组元素在内存中是连续排列的. 方便写入二进制文件(PCB-CNC系统严生的中间文件屮叫对于焊盘所届的元件可匕方便的迪过索引茯得.
对于元件中的注释项、设计名称两种属性都在DOC文件中的文木段描述,由于这两种屈性需要写入到*-CFG 文件屮.为了降低读写的复杂度.木文段描述的属性在元件结构体中也设宜了对应的成员变虽。
3•焊盘描述段
在DOC格式文件中,所有的焊盘描述都在焊盘段,并且每个焊盘图元备占一行。
焊盘图元的结构体比较简单,其成员变址包括中心点坐标、图层号、大小、形状、孔直径等。需要注意的是,在*.(2卜9文件中"图元的描述包括贴片类型屈性,在DOC文件屮对兀件描述行并没有提供此屈性.因此可以通过具所包含的焊盘的迪孔直径值来判断元件类型,当值为零时,为贴片元件"非零时则为其它元件。由于焊盘只是在计算元件中心点坐标、判断贴片类型和图形显示时才会用到,并且元件结构休己包含前两者的成员变虽,丙此•所有焊盘可以独立保存在CArray模恢类屮,在需要时可以迅速的通过ID索引到所属元。
4.文木描述段
文本描述段包括了所有元件文木描述信息。每个文不各占一行,包括两种性质描述, 可以根据行中的注释项(COMMENT)或者设计名称项(DESIGNATOR)屈性来判断. 一般来说,同一个元件对应着连续的两行文木描述。由于文木所含属性比较简单,定丈的结构体只包含了字符串、坐标、角度等屈性,在文本的读取时直接賦值到对应妁元件