随着运动控制系统的蓬脖发展,由于可以结合PC平台进行二次开发,故其数据来源逐渐由手工输入或教导,转向兼容大量绘图软件所生成的图形图像文件。如:CorlDraw,AutoCAD,MasterCAM,Pro/E等工具。由于这些绘图软件得到普遍大众的使用,并且具备强大的功能,一般而言,作为小型项目开发,只需要把它们所生成的文件读入,并作一些简单的数学处理(如:平移,镜像,旋转,错切)即可。这样也获得较高的开发效率,可以有效地节省开发者及客户使用者的成本。
以下我们简介几种常用于数控运动的文件格式,以帮助开发人员对此有个大概的理解,更好的把握项目的开发。
一、CNC文件
CNC由国外流进,早期大量的应用于数控车铣床,故CNC包含的大量指令代码都可以通过机械加工之类的杂志获取,CNC以一种一统天下的海量囊括了所有运动控制动作。有很多指令,可以由用户自行定义(这是威力所在),在国内有很多数控设备厂商,基本上都支持标准CNC代码。如:成都广泰。
CNC文件格式一般分为非压缩格式及压缩格式两种,非压缩格式其数制形式基本上直接以小数出现。
压缩格式,数制有前省零,后省零两种,实际数值还需要由整数位和小数位决定。
如非压缩格式:
X123.456即表示当前X数值为123.456
生成此格式的,常用工具有MasterCAM、Pro/E等
压缩格式:
X123456(没有小数点)
若以前零省,4位整数,3位小数,则X=0123.456=123.456
若以后零省,4位整数,3位小数,则X=1234.560=1234.56
生成此格式的,常见于PCB板绘图工具,如:CAM350,V2000,V2001
Protel。
支持CNC标准的文件后缀名一般常见有:
.NC,.CNC,.TXT,.ROT,.GBR,.GBX,.ROU,.DRL等
以下列出CNC常用G代码指令的含义:
G00快速定位到有效位置
G01直线插补
G02顺圆弧插补
G03逆圆弧插补
G04延时暂停
G05钻孔操作
G32顺铣整圆
G33逆铣整圆
G40取消让刀(让刀一般也称作补偿)
G41开始左让刀
G42开始右让刀
G84钻圆操作
G85钻槽操作
G90绝对坐标系
G91相对坐标系
G93设定工作原点
以下列出CNC常用M代码指令的含义:
M30程序结束
M48程序开始
M71公制
M72英制
M15开始铣削
M16结束铣削
模块复制操作指令:
M25块头
M01块尾
M02块操作开始
M08块操作结束
M70XY交换
M80X镜像
M90Y镜像
R重复排列指令
以上指令,有些有特定的格式,若有需要进一步深入分析,可来电话与我们联系。
二、DXF文件
DXF文件格式,常见的由AutoCAD,CorlDraw绘图软件生成。DXF具有不同的版本,开发人员在分析DXF文件时,需要注意这一点,DXF文件格式的详细说明,可以到www.google.com网站上,输入“DXF文件格式”,即能找到相关的资料。
其操作码的说明,非常之丰富,本人手头的相关电子文档有十几页之多,故在此简单介绍几种常元素。
1、直线LINE
2、圆弧ARC
3、折线LWPOLYLINE
4、圆形CIRCLE
5、圆弧ARC
6、椭圆ELLISPE
7、BZ曲线ELLIPSE
8、文字(一般会自选SHX字体文件)MTEXT
DXF文件操作码和数值在文件中各占一行,如:
10
100.000
20
100.000
30
0.000
11
200.000
21
100.000
31
0.000
以上展示的是一条直线段,起点坐标为(100.000,100.000,0.000),终点坐标为(200.000,100.000,0.000)
三、PLT文件
PLT文件源自于HP绘图仪,在AutoCAD/R14版及CorlDraw软件中可以见到(需要导出),其实基于此类设备的还有EPS的一种矢量格式,即EPS文件,在此不多描述。PLT的操作指令非常丰富,不过常用以下几种指令就差不多够了。
PA到达指定的绝对位置
PU抬笔动作
PD下笔动作
SP换笔动作
AA圆弧动作
LB文本路径
PLT的操作码格式有许多形式,如抬笔动作:
PU1002323402;达到指令位置后抬笔
或PU10023,23402;
或PA10023,23402;PU;
还有就是PA指令:
PA12344567;(注意,两个数值之间有空格或者’,’分隔符)
PA83242345;
或
PA1234,4567,8324,2345;(多坐标放在一起)
一般而言,从CorlDraw或AutoCAD/R14版生成的PLT文件,其路径大部分只包含PU,PA,PD,SP有效指令,且路径已经为最优化的运动轨迹了(在此省去开发人员对最短路径的优化处理,而DXF文件则需要根据工艺,需要再次优化,因为它的路径与绘图顺序有关,这样有时频繁编辑或修改出来的图形路径会非常纹乱,不适合直接加工处理,所以还需要开发人员再次优化路径,以达到最好的加工轨迹)。
四、BMP文件
以上介绍的图形都属于矢量文件,BMP作为图像文件,几乎在Window的图像编程当中,是路人皆知,其简单的文件结构非常易理解,加上Microsoft的强大MSDN帮助,实在没有赘述的必要。
在此,考虑到运动控制的计算必须与图像尺寸进行匹配,故还需要提示一下如何设定这种对应关系的方法。实质上,在激光位图扫描或位图雕刻时,常需要这种关系设定,即多少像素对应多少毫米。取得这个当量关系很简单。
以Win98系统为例,点击“开始”菜单,选择“程序”项,进入“附件”,选择“画图”工具。
然后打开你所需要的目标文件,选择菜单“图像”的“属性”项,可以看到“单位”信息框中的几个单选项,我想,到此为止,稍微聪明一点的人,也许不用再指点什么东西了吧。
由于BMP文件实在是太普遍了,所以,几乎所有的图像处理软件,看图软件都支持将其它图像文件格式转换成BMP文件格式,如大名鼎鼎的Photoshop及最好用的看图软件ACDSee。
故其它的PCX,JPG,GIF,TGA,PIC图像就不是什么问题了。
五、其它字体文件简介
Windows系统的字体文件结构非常复杂,虽然只有两种基本元素,即直线和BZ曲线,若想完成分析明白,还是要下一番苦功,好歹有一些伟大的作家将此事基本了解,可以参见一个华裔作家的《Window图形图像编程》,此书中对Window的字体作了全面的分析,且带光盘,对拿来主义者将是最大的礼物了。
若没办法购到此书,也不是就绝人之路了,在CDC的对象内,有一套方法,可以取得所有绘图的路径,文字路径就更不在话下了。
举例:
1.开始路径捕捉
CDC*pDC=GetDC();//自定义
pDC->BeginPath();
pDC->TextOut(0,0,”Hello,path!?”);//输出想要的文字
pDC->EndPath();
是不是很简单呢
2.还原路径
在还原路径之前,用户还可以任意旋转,镜像,错切路径。
Intncount=pDC->GetPath(NULL,NULL,0);
CPoint*pPoint=newCPoint[ncount];
char*pCtrl=newchar[ncount];
for(inti(0);i
{
switch(pCtrl[i]){//识别控制字,
case….
}
}
delete[]pCtrl;
delete[]pPoint;
对于AutoCAD的SHX字体,分析起来完全靠代码处理,因此非常困难,若有这方面需求的用户可直接与我们联系。还有早期DOS系统下,TC2.0有BC3.1编译环境还带有一些chr矢量字库,用户若有需求请联系我们即可。
来源:互联网