GERBER是一种光绘文件格式,用于描述光绘机进行各种绘制或运动行为。
GERBER格式是EIA 标准RS-274D的子集;扩展GERBER格式是EIA标准RS-274D格式的超集,又叫RS-274X。RS-274X增强了处理多边形填充,正负图组合和自定义D码及其它功能。它还定义了GERBER数据文件中嵌入光圈表的规则。 所以,RS-274D类型的Gerber文件不包含Aperture(光圈)数据,即需要同时附带D码文件,才能完整描述一张图形;而RS-274X类型的Gerber文件则不用附带。
GERBER格式文件由一系列数据块组成。所有的数据块以结束(EOB)符结尾,EOB字符通常是星号(*),而每个数据块包括了一个或多个参数组成,例如X10000Y0DO1*。
数据块的类型主要包括以下几种类型:
标准的RS-274D中,数据类型包括了坐标数据以及功能码,如D码,G码,M码等。
坐标数据主要是定义在平面的中点数据,在RS274D的术语中称为地址。坐标数据可能是:
1)X和Y坐标定义的点,
2)相对于X,Y方向的便移量数据,称为I,J数据
FS(Format Specification) 格式定义指示了数字如何被解释的。
坐标系采用右手坐标系。坐标是模态(modal) 的,如果一个X被忽略,则X将保留上一次的X坐标值,如果在当前层的第一个X被忽略,因为没有上一次的X的坐标值,那么X坐标将被视为零。类似地,Y坐标也是这样处理的。
偏移量不是模态上的,如果I或J被忽略,则缺省值为零。
注意:GERBER的读者有时候会错误地处理缺省值零。为了清晰和鲁棒性,推荐总是显式地指定第一个坐标(即便就是零,也显式指定),这样就不用考虑缺省的零。
示例:
X100Y200* 坐标点 (+100, +200)
Y-300* 坐标点 (+100, -300)
I200J100* 平移 (+200, +100)
X300Y200I150J50* 坐标点(+300, +200) 且平移(+150, +50)
X+100I-50* 坐标点 (+100, +200) 且 平移 (-50, 0)
功能码描述的是如何解析相关联的坐标数据,如画一条线或画一个圆。(通常,但不是所有,这些代码是延续已经过时的RS-274D的格式,它们被称为字(words)或码(codes)),如
G04 PC Circuitry*
G54D10*
G54D11*
G01X466000Y240000D02*
X474000D01*
X470000Y236000D02*
....
G74*
X0Y0D02*
M02*
每个指令都会影响到其后的数据块,直到遇到另外一个相同类型的代码或生成新层时结束。我们称这种持续性的活动为模态(modal)。例如G02指示的是顺时针圆弧插补。在遇到另外一个插补指令或生成新层之前,该指令后的所有坐标数据都被解释为顺时针圆弧插补。
D01 划线,开光圈。 不能用自定义光圈划线
D02 关光圈
D03 闪绘光圈,反复曝光
D04 绘画笔提取,快速移到
D05 结束D04的动作
D10-D999 选择由AD命令定义的光圈
参数定义了整个图像或单层的各种特征。它们被用于解释其他的数据类型,(通常,这些参数被称为Mass 参数)。控制整个图像的参数通常会放在文件的开始处。产生新层的参数被放置在文件恰当的位置。参数由两个字符加一个或多个紧随其后的可选修改符组成。参数的限定符号为“%”.每个包含在数据块内的参数必须以“*”结束。并且参数限定符必须立即跟在块结束符后面,不允许插入空格,例如:
%FSLAX23Y23*%
参数必须是在成对的参数限定符内,限定符内可以放一个或多个参数,两个限定符之间最大的字符数为4096个,例如:
%SFA1.0B1.0*ASAXBY*%
为了提高可读性,两个参数间允许换行,如:
%SFA1.0B1.0*
ASAXBY*
%
当然,为了简化和可读性,推荐每行是只设置一个参数。与参数联合的所有数值都使用显式的小数点,如果不使用小数点,数值应当认为是整数。
参数的语法为:
%参数指令<必选修饰符>[可选修饰符]%
语法 | 说明 |
参数指令 (parameter code) | 两个字符的指令,如AD,AM,FS等 |
必选修饰符(required modifiers) | 必须是完整的定义 |
可选修饰符(optional modifiers) | 依赖必选修饰符的定义 |
具体参数分类如下:
格式:%MI[A[0|1]B[0|1>*%
其中,0 -- 不镜像,1 -- 镜像
格式:%IN
命名当前图像为name
格式:%AM
[
其中,
1(圆) Exp 直径 圆心X 圆心Y
2/20(线) Exp 线宽 起点X 起点Y 终点X 终点Y 角度
21(长方形) Exp 宽 高 中心X 中心Y 角度
22(长方形) Exp 宽 高 左下X 左下Y 角度
4(多边形) Exp 点个数 起点X 起点Y X1 Y1 。。。 角度
5(正多边形) Exp 顶点数 中心X 中心Y 直径
6(Moire) X0 Y0 外径 环宽 环间距 环个数 十宽 十长 角度
7(散热形) X0 Y0 外径 内径 口尺寸 角度
最后,以实际的gerber文件, 分析结果如下
- *
- *
- G04 PADS VX.2.7 Build Number: 15549477 generated Gerber (RS-274-X) file*
- G04 PC Version=2.1* //G04表示本行是注释描述
- *
- %IN "mcuplane.pcb"*% //Image Name图形名称
- *
- %MOIN*% //模式单位,IN:inch MM:milimeter
- *
- %FSLAX35Y35*% //格式描述:忽略前导零,XY轴数据格式都为3个整数+5个小数(数值单位为inch)
- *
- *
- G04 PC Standard Apertures*
- *
- *
- G04 Thermal Relief Aperture macro.*
- %AMTER* //光圈自定义,命名为TER
- 1,1,$1,0,0* //第一个参数为形状类型,1表示圆形
- 1,0,$1-$2,0,0*
- 21,0,$3,$4,0,0,45*
- 21,0,$3,$4,0,0,135*
- %
- *
- *
- G04 Annular Aperture macro.*
- %AMANN* //光圈自定义,命名为ANN
- 1,1,$1,0,0*
- 1,0,$2,0,0*
- %
- *
- *
- G04 Odd Aperture macro.*
- %AMODD* //光圈自定义,命名为ODD
- 1,1,$1,0,0*
- 1,0,$1-0.005,0,0*
- %
- *
- *
- G04 PC Custom Aperture Macros*
- *
- *
- *
- *
- *
- *
- G04 PC Aperture Table*
- *
- %ADD010C,0.001*% //设置D码为10的光圈,圆图形,直径为1 mil
- %ADD011C,0.01*% //设置D码为11的光圈,圆图形,直径为10 mil
- *
- *
- *
- *
- G04 PC Circuitry*
- G04 Layer Name mcuplane.pcb - circuitry*
- %LPD*% //设置Layout层为正
- *
- *
- G04 PC Custom Flashes*
- G04 Layer Name mcuplane.pcb - flashes*
- %LPD*% //设置Layout层为正
- *
- *
- G04 PC Circuitry*
- G04 Layer Name mcuplane.pcb - circuitry*
- %LPD*% //设置Layout层为正
- *
- G54D10* //选择D码为10的光圈
- G54D11* //选择D码为11的光圈
- G01X466000Y240000D02* //1倍线性运动,关闭光圈,移到坐标点(4660.00 mil,2400.00 mil)
- X474000D01* //打开光圈,移到坐标点(4740.00 mil,2400.00 mil)
- X470000Y236000D02* //关闭光圈,移到坐标点(4700.00 mil,2360.00 mil)
- Y244000D01* //打开光圈,移到坐标点(4700.00 mil,2440.00 mil)
- ....
- X348909Y113875*
- X348364*
- G74* //关闭圆周运动
- X0Y0D02* //关闭光圈并回到原点
- M02* //文件结束