随着运动控制系统的蓬脖发展,由于可以结合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 块操作结束
M70 XY交换
M80 X镜像
M90 Y镜像
R 重复排列指令
以上指令,有些有特定的格式,若有需要进一步深入分析,可来电话与我们联系。
二、 DXF文件
DXF文件格式,常见的由AutoCAD, CorlDraw绘图软件生成。DXF具有不同的版本,开发人员在分析DXF文件时,需要注意这一点,DXF文件格式的详细说明,可以到网站上,输入“ 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的操作码格式有许多形式,如抬笔动作:
PU10023 23402; 达到指令位置后抬笔
或 PU10023,23402;
或 PA10023,23402; PU;
还有就是PA指令:
PA1234 4567;(注意,两个数值之间有空格或者’,’分隔符)
PA8324 2345;
或
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. 还原路径
在还原路径之前,用户还可以任意旋转,镜像,错切路径。
Int nCount = pDC->GetPath( NULL, NULL, 0 );
CPoint *pPoint = new CPoint[nCount];
char *pCtrl = new char[nCount];
for( int i (0); i
{
switch( pCtrl[i] ){//识别控制字,
case ….
}
}
delete []pCtrl;
delete []pPoint;
对于AutoCAD的SHX字体,分析起来完全靠代码处理,因此非常困难,若有这方面需求的用户可直接与我们联系。还有早期DOS系统下,TC2.0有BC3.1编译环境还带有一些CHR矢量字库,用户若有需求请联系我们即可。
(转载)