光圈(D-CODE)、绘图文件(Gerber)

介绍

不管你的设计软件如何强大,你都必须最终创建Gerber格式的光绘文件才能光绘胶片。很好地理解可以减少您对它的厌恶感。 错误地理解光绘文件的内容,PCB 设计系统和光绘系统的关系是这个行业中产生废胶片的最大的原因。

光绘机的简单描述

在详细介绍光绘文件之前,简单的讨论一下光绘机会使下面的材料更容易理解。
早期的光绘机是由精确的伺服系统及受它控制的用来装高对比度胶片的 X-Y 桌面组成的。一个很亮的光源直透过快门,透过光圈,聚焦在胶片上。控制系统把 Gerber 命令成适当的桌面移动、轮子的转动和快门的开闭。

图 1 . 光绘机原理
当快门打开,光柱透过光圈把光圈的影像暴光在胶片上。当快门打开、桌面同步移动时,线条或条纹被影像到胶片上。使用正确的命令控制桌面的移动、光圈的选择和快门的操作,光绘机就能在胶片上生成任何需要的影像。

Gerber Scientific (现在的 Gerber 系统)开始通过生产精密的机器来控制光绘机工业。“Gerber”这个词在光绘业已经名不副实,从现在开始我仍将延用 “Gerber” 文件这种说法来说明 RS274D 光绘命令。

 

 

Figure 2. .光绘机操作

简洁: 一把双刃刀

Gerber 数据最漂亮的地方就在于它的简洁,它只有四个基本的命令加上对应的数据。数据库不得不定义得简单和紧凑是因为第一台机器是由打孔纸带驱动的。这就需要把尽可能多的信息压缩到尽可能少的字节以说明许多“问题”,当时我们并没有预料到存储空间是用数以百计的兆字节代替数以百计的字节来计量的今天。

但是,简洁也有它自己的代价。Gerber文件缺乏驱动光绘机必需的基本信息。这些丢失的信息是由设计者另外交给光绘操作员的,这正是错误的源泉。实际上,定义一种非标准的扩展命令的诱惑是无法抗拒的。每个光绘机生产商都支持在基本GERBER命令上加上一些他们认为区分他们的光绘机所必须的信息。这样造成的后果就是一家厂家的特性而另一家却不支持。

Gerber 文件介绍

下面简单的举例说明GERBER格式的内容和结构:

G90*                   1
G70*                   2
G54D10*                3
G01X0Y0D02*            4
X450Y330D01*           5
X455Y300D03*           6
G54D11*                7
Y250D03*               8
Y200D03*               9
Y150D03*               10
X0Y0D02*               11
M02*                   12

(在右边的行号不是文件的内容。)即使是一个对GERBER文件一窍不通的人也能正确推断出这里每一行表示一个特殊的机器命令,而且星号(*)是命令的结束符。这在有些软件和教材中被称为块(Block),大多数机器和软件只是按块处理Gerber命令,而不理会行。这里可以看出不同命令的相同之处:使用 G、D、M等命令和X、Y对应的数据。

G-Codes: 设置初始条件

Gerber 调用Gxx命令作为初始码。大多数情况下,这些码被用来配置机器在绘图之前的状态。有一些G码对认识Gerber文件是很重要的:

G90/G91 相对/绝对坐标  在第一行的G90命令告诉机器数据坐标是绝对的,每一个坐标的设置都是相对于桌面的原点(0,0)。绝对的反面就是相对,也就是所有的坐标都是相对与前一坐标增加的。相对坐标就是通过G91 命令设置的。

现在您也许很少看到 G90 ,因为许多软件把绝对坐标作为默认的设置,并且不再标注 G90。这就产生了一个问题——许多后来产生的数据格式也不再费心于 G91 命令。如果您在您的CAM工作站上看到象图3那样的一团“爆炸图”,那就有可能是您试图用绝对坐标方式来读用相对坐标方式生成的文件;当然,也有可能是您使用相对坐标方式来读绝对坐标方式的文件。

图 3. 用绝对方式显示相对方式文件。G70/G71

G70/G71 英寸/毫米 :第二行的G70表示下面的数据是使用英寸(INCH)作单位的, 这也是一个在GERBER文件中很少出现但很重要的G码。在美国和欧洲大部地区习惯使用英寸,而在世界大部分地区却习惯使用毫米(millimeters)做单位,或者两者都使用。G71就是表明单位是公制。 1英寸等于25.4毫米。

G54. D码选择 :在第三行的G54是用来表明光圈转换的,它是最常用的G码,是用来指示光绘机把光孔轮转到适当的位置,这个位置是由紧跟在G54后面的Dxx来指示的。现在G54常常被省略,只是靠D码(除D01、D02、D03)来指示光绘机变换光圈。

G04:注解命令 大多数的光绘机都会忽略G04后面的内容。G04就好象MS-DOS批处理文件中的“REM”命令一样,它后面的内容只是为了帮助人们更容易理解文件.

G01画直线命令   在一些光绘机中要求圆弧命令必须用G01配合,G01只是表示光绘机桌面的移动是直线的。

画圆弧命令G02/G03 G74/G75

如果有必要而且Gerber文件里有相应的命令,Gerber 光绘机也能画圆弧。
在很早的时候,圆弧是很少用到PCB(print circuit board,印刷电路板)设计中。后来,为了平衡板材的张力、还有一些是为了减小高速电路的高频发射,在PCB设计中开始使用圆弧。并且使Gerber命令有了相应的发展。

基本的圆弧命令语法
G##X#####Y#####I#####J#####D##*

实例: G02X40Y30150J0D01*

G##代表GO2、G03。G02是指示光绘机顺时针画弧,G03是指示光绘机逆时针画弧。I,J表示圆弧的另一个重要的点——圆心。这些命令最好是不要省略。

下面我们将花费一点时间来详细讨论画圆命令。早期的光绘机只能画弧度不超过90度的圆弧,现在的光绘机已经能画360度的圆弧。这就留下一个问题:360度的弧的数据格式也同90度一样,只是在文件头上用G74、G75标出,当光绘机读到G74时,它就开始以90度方式处理下面的数据;当它发现G75时就以360度的方式处理下面的数据。如果您的数据没有错,而且您的CAM软件能正确处理圆弧,那么在您处理90度文件时,您的工作站的显示器上就不应该出弧度大于1/4圆的弧;相反并不成立,处理360度文件时,有可能看到弧度很小的弧,这是因为大多数“新”光绘机在设计时就考虑到兼容性问题。

现在我们来研究一下光绘机是如何处理圆命令的,刚刚了解Gerber文件的人大多数会认为G##X#####Y#####I#####J#####D##*会包含一个圆弧的所有内容,其实不然,它前面的一个点也是很重要的,这个点就是圆弧的起点,而G##后面的点是圆弧的终点,I,J是圆心相对与起点的相对坐标。所以大多数软件生成的圆弧命令是这样的:G01X#####Y#####D02*G##X#####Y#####I#####J#####D01*

顺便提一下,您选购您的CAM软件时一定要试一试它处理圆弧的能力。

画线和画点命令 D01、D02、D03

D码,简单讲就是第一位字符是“D”。Gerber 文件中有三个D码是用来控制桌面沿着X-Y移动的。

D01 (D1): 打开快门,同时移动桌面到对应的X-Y坐标。
D02 (D2): 关闭快门,同时移动桌面到对应的X-Y坐标。
D03 (D3): 打开快门,同时移动桌面到对应的X-Y坐标。然后快速地打开、关闭快门,
                    这样就形成一个曝光点。


D01 是一个画线的命令;D02 是一个只移动桌面而不曝光胶片的命令。 打个比方,D01、 D02 就好象笔式光绘仪中的落笔画线和提笔移动笔架。

D03 是“闪烁”命令,桌面移动时快门是关闭的,当桌面移动到对应的坐标时快门打开一下又马上关闭——这样就会在胶片上留下光圈的影像。 D03在画印刷电路板上的焊盘时是一个十分有效的命令。

D01、D02、D03 命令总是跟在他们对应的数据后面,正如下面的例子:

X0Y0D02*
X450Y330D01*
X455Y300D03*

这段数据将让光绘机做如下动作:关闭快门,移动桌面到原点;打开快门,移动桌面到450,330;(这样就从0,0画线到450,330。)关闭快门,移动到455,300,打开快门,关闭快门。

光圈标志——D码(D-CODE) D10-D999

不象 D01、D02、D03 ,D10到D999是数据而不是命令,它们是标注光圈或光圈轮上的位置。早期的光绘机使用的是一种有24孔/槽的光圈轮。

表1是早期的光绘机的光孔与D码的对应表。

表 1. D码(D-CODE)与光圈(APERTURE)的对应

  D码   光圈序号    D码      光圈序号                              
  10       1        20        13
  11       2        21        14
  12       3        22        15
  13       4        23        16
  14       5        24        17
  15       6        25        18
  16       7        26        19
  17       8        27        20
  18       9        28        21
  19       10       29        22
  70       11       72        23
  71       12       73        24

可以看出从D10到D19是按正常顺序排列的,紧跟在后面就是D70、D71,而D20被排到第13位。从D20到D29依次顺延。到D30时光圈序号应该是23,但是D72、D73被插到D30之前。大多数光绘、CAM软件需要您根据D码输入光圈的信息(形状、大小),少数软件是按光圈序号输入的(此时就需要根据上面的对应表重新排列)。
值得提一下的是D3到D9是一种特殊码,最早时是用来表示虚线、点画线等特殊线段,现在已经很少用到它们了,即使用到也只是某些落后的光绘机的专用代码,它们的具体含义就请查阅光绘机的说明书。

杂项命令 M-码

Gerber 文件中最常用的M码是 M00、M01、M02。
我们经常在文件末尾看到M02。M00/M01/M02都是表示Gerber 文件结束,只不过不同的机器使用不同的M码,而大多数软件是使用M02。但是要注意的是有一些软件为了确保在读入文件时不会和其它的数据混合,在文件头上加了M02等M码,而其它的软件一旦读到“M02”就认为文件已结束,从而会是数据丢失。另外一种情况是,有的软件喜欢把多个文件合并在一起,中间用“M02”区分,这些软件在处理这种文件时会自动把数据分开,但是其它软件就不一定会如此处理了。
还有一些软件会在文件头上加上M码作为文件的标识符,具体是何种M码各种软件各不相同。但现在大多数软件都会忽

X,Y 坐标数据

正是大量的坐标数据构成了Gerber文件,而Gerber文件中最多的就是X-Y坐标数据,只有压缩坐标数据才能达到压缩Gerber文件的目的。所以,您要手工排版Gerber文件中的坐标是非常困难的,因为在Gerber规范中已经对坐标数据作了一些处理。

省略小数点的规则

与其它字符相比小数点是最“不重用”的一个,特别是事先规定了它的位置时。实际上Gerber文件也的确是这样做的,在Gerber文件中您是很难看到一个小数点的。小数点的位置是人为地设置,由光绘机控制软件来定位的。新手门常犯的一个错误就是主观的用他们常用的数据格式来读新数据,甚至根本就不知道省略小数点这回事。
请看下面这段Gerber命令:

X00560Y00320D02*
X00670Y00305D01*
X00700Y00305D01*

假定这段命令是使用英寸作单位的。第一句的意思很容易理解——桌面移动到点(00560,00320)处,而不画线。可是新的问题又产生了,(00560,00320)到底表示的哪一点?是(5.6Inch,3.2Inch),还是(0.56Inch,0.32Inch),亦或是(0.056Inch,0.032Inch)?谁也不能说清楚。但是如果设计者告诉您,在小数点前有几位、小数点后面有几位,那您就能快速的确定这些数据到底代表的是多少。比如,设计师告诉您这段Gerber文件是英制2-3,那么您就能清楚地知道00560表示0.56Inch(00.560),00320是0.32Inch(00.320)。

因此:当别人给您文件时一定要问清楚数据格式;当您给别人文件时一定要告诉他文件格式。

如果您的客户也不知道数据格式,嘿嘿!您惨了。怎么办?猜吧——!仔细听好了,下面告诉您一些猜格式的技巧(这可是密笈嗷)。
方法一:根据板面大小
硬质板中很少有板面尺寸大于20Inch的,而大于20Inch X 20Inch 的是没有的。据此,如果您读出来的图形大于20Inch,那就是小数点前的位数太多了。相反,如果您读出俩的图形都堆到原点附近,那十有八九是小数点后的位数太多了(也就是说,小数点前的位数太少了)。
这里需要注意的是,小数点前的位数加上小数点后的位数一定要等于Gerber文件中最长的数的位数,上例中就是5(2+3=5)。
方法二:根据已知尺寸
如果您知道一些关于板子的尺寸,那就好办多了。您只要不停的试,大了就把小数点前的位数变小(小数点后的位数同时变大);小了就把小数点后的位数变小(小数点前的位数同时变大),如果单位没有搞错,一两次就能正确了。如果您没有任何尺寸,那您只能找板子上的器件。有一些器件,如DIP(双列直插集成电路)、PGA封装和一些插座,它们引脚的中心距离是0.1Inch(2.54mm),根据这一点您也能大概地确定数据格式。

省略前面和后面的零

在Gerber文件中还有什么东西可以省略?很自然,谁都会想到那些在数学中被称为“无效零”的玩意。可是用什么规则?
我们再回头看上面的例子中第一行X00560Y00320D02*,现在我们把00560前面的零省略变成560,那么根据客户告诉我们的数据格式是英制2-3,那么我们就可以推断出560代表的数据是什么。因为是2-3制的,我们先保证小数点后面的三位,那560就变成.560,我想您应该知道.560是什么意思,反正我是知道!
——这样处理方法就是省前零(Leading zero)。
下面我们就把上面的例子生成省前零,您能把它们试着恢复吗?。

 不省零                省前零
                                   

X00560Y00320D02*   X560Y230D2*
X00670Y00305D01*   X670Y305D1*
X00700Y00305D01*   X700Y305D1*

现在我们来数数这两种格式的字节数,不省零占用48字节,省前零占用33字节。节约了31.2%,而图形却是一样的。您瞧多好的主意,这对当时节约打孔纸带是多么有效,多么的重要。

还有一种省零的方法,省去后面的无效零。也就是保留前面的无效零而去除后面的无效零,恢复时只要保证格式前面的位数,来确定小数点的位置。下面的例子说明了省后零(Trailing Zero)。

   不省零                       省后零
                    

X00560Y00320D02*   X0056Y0032D2*
X00670Y00305D01*   X0067Y00305D1*
X00700Y00305D01*   X007Y00305D1*

除了这两种省零的方法,还有些软件喜欢把前后零都省去,这样一来就必须保留小数点。如果您的软件不支持小数点,那您就赶快找软件去编辑它们吧,或者去书店买一本 MS-OFFICE ,我知道用MS-WORD和MS-EXCEL能把它们转换成您所需要的格式。

因此:当您把GERBER文件给别人时一定要告诉他是省前零还是省后零;当别人给您文件时一定要问清楚是省前零还是省后零。

如果您不知道是省前零,还是省后零,您也可以猜,而且这比猜格式容易多了。只要用字编辑软件打开它看一看,如果前面有零就有可能是省后零;如果后面有零就有可能是省前零。唯一要注意的是,有些软件在处理省前零时只把小数点前的零省掉,如00.050就成了050,省后零也一样;而有些软件则是把前面的零都省略,如00.050就成了50,省后零同样。这时就需要补零定小数点。

有样式(Modal)数据坐标

到现在为止,您已经知道省略小数点、省零。或许您认为您已经完全了解Gerber数据了,千万别自满。请您回顾一下光绘机的工作原理,您也许又会产生新的想法。光绘机的X-Y的移动是相互独立的,而且Gerber数据中也有许多点排在与X或Y平行的线上。说到这里,您也须明白还有一种方法可以压缩Gerber文件。

“为什么不让机器记住X、Y 的数值,与下一个点比较,只输出变化的数据?”好办法!Gerber数据格式定义者们也想到了这一点,也采用了这种方法,这就是有样式数据。
下面就是一段无样式数据与有样式数据的比较。

所有数据               有样式数据

X560Y230D2*          X560Y230D2*
X670Y305D1*          X670Y305D1*
X700Y305D1*          X700D1*

当机器执行完一句命令后它并没有把数据删除,再执行下一句时,它只是把有的数据填进去而生成一个新的坐标。如机器执行完第二句时,它的存储器中的数据是X-0.67,Y-0.305(假定格式是英制2-3),在读入第三句时机器把0.7填进X,Y没有就跳过,那么新的数据就是X-0.7,y-0.305。
如果您的设计软件在生成Gerber数据时有自动排序功能,那您使用这种数据格式会很有效果。同时它不象数据格式和省零方式那样必须知道,所有的光绘机及光绘处理软件都支持两种数据。

有样式命令

有样式数据是一种很好的方法,这种方法同样也适用于命令。比如说,您有一段连续的线条要画,那么在Gerber中就表现为一长串以D01*结束的块(block),为什么不能把它们省略直到下一个不同的命令出现呢?当然可以,这种处理方法就是有样式命令方式。

D1 not modal D1 modal
X560Y230D2* X560Y230D2*
X670Y305D1* X670Y305D1*
X700D1* X700*
X730D1* X730*
X760D1* X760*
Y335D1* Y335D1*

由上表看来,我们都希望所有命令都使用有样式命令。可是总有一两处不如意的地方,首先是闪烁命令D3/D03,有许多光绘机非常的执着地希望在每一个闪烁命令后能看到D3/D03。如MDA公司的FIRE9000系列,我们在CAM工作站上很清楚的看到焊盘,可是光绘出的胶片上就是没有,后来我们在一些闪烁命令后加上D03*,问题就得到了解决。所以如果您遇到这种情况,不妨试一试无样式数据(No modal)。

另外一个不安份的命令是画圆弧命令G02/G03,许多光绘机在G02/G03命令时必须使用画直线命令——G01。

『PCB资源网 欢迎软件交流,如有需要请发信与版主联系,谢谢支持!』