光圈标志--D码(D-CODE) D10-D999
不象 D01、D02、D03 ,D10到D999是数据而不是命令,它们是标注光圈或光圈轮上的位置。早期的光绘机使用的是一种有24孔/槽的光圈轮。
表1是早期的光绘机的光孔与D码的对应表。
表 1. D码(D-CODE)与光圈(APERTURE)的对应
D码 光圈序号18 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规范中已经对坐标数据作了一些处理。
·在X、Y数据中省略了小数点
·省略了不必要的零(前面的或后面的)
·大部分软件只输出变化X或Y数据
省略小数点的规则
与其它字符相比小数点是最"不重用"的一个,特别是事先规定了它的位置时。实际上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)。
因此:当别人给您文件时一定要问清楚数据格式;当您给别人文件时一定要告诉他文件格式。(当然如果是RS274X格式的话就没有下面的说法了。)
如果您的客户也不知道数据格式,客户给的又不是RS274X格式的话!嘿嘿!您惨了。怎么办?猜吧--!小第把自己累计的经验做了一个总结欢迎大家来信共同交流交流!仔细听好了,下面告诉您一些猜格式的技巧!!
方法一:根据板面大小
硬质板中很少有板面尺寸大于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。
,PCB之RS274格式随谈(推荐)