基于Windows CE的数控软件开发与实现
。若检查出无效组合,则设定其无效。例如:F 指令只对G01,G02,G03有效,对G00 无效。
(3)语义分析和译码:设计一个加工信息类CDrawInfo,用于保存译码得到的数据。为了保存整个代码信息,还需要设计一个链表类CListInfo。CDrawInfo 类的设计如下:
class CDrawInfo: public CObject{
public:
CDrawInfo();
virtual ~CDrawInfo();
UINT m_SerialNum; //加工序号
CPoint m_ptPrev; //前一点坐标
CPoint m_ptNext; //后一点坐标
CPoint m_ptCenter; //圆心坐标
UINT m_gcodeFun; //G 代码类型
CDrawInfo perator=(CDrawInfo); //赋值运算符重载
};
译码程序执行时,首先建立一个CDrawInfo 类的临时对象drawtemp。而后逐行提取代码的数据信息,并将其赋值到drawtemp 对象中。本行读取完毕,再把drawtemp保存到链表CListInfo。CListInfo 的声明如下:
CList listinfo;
如此循环操作,直至所有的NC代码都被提取出来并添加到链表listinfo中。
3.2 刀具补偿模块
单纯经过译码处理之后的加工代码,并不能直接用作插补加工,还需要经过刀具补偿计算。刀具补偿包括刀具长度补偿和刀具半径补偿。刀具长度补偿是为了使刀具顶端到达编程位置而进行的刀具位置补偿。刀具半径补偿是因为数控加工代码通常是按照刀具中心轨迹编辑的,但在实际加工中参与切削的是刀具的外缘,为此需要补偿一个半径值。
3.3 插补模块
无论选用哪种控制芯片做插补器,插补的原理都是相同的。为满足实时、动态输出控制脉冲的需要,一般都是利用硬件定时器做定时中断,中断后即输出控制脉冲。通过修改定时寄存器数值,即可改变输出脉冲频率,实现转速控制。再通过对输出脉冲个数的计数,实现位移控制[3]。以椭圆插补为例,采用逐点比较插补法。该方法的核心是通过逐点地比较刀具与所需插补曲线的相对位置,确定刀具的坐标进给方向,从而加工出零件的轮廓[4]。插补循环包括如下四步:偏差判别、进给、新偏差计算和终点判别。
![](../img/eep/emb/emb-29833aotzcvw5svb.jpg)
其中,r、t 为开关变量。r 为正负进给量判断,只取1 或-1 值;t 为进给与否判断,只取0或1。对于不同象限,进给方向及进给轴的选取都不一样。通过设定进给开关量,即可控制插补点位置。单一象限内插补运算较容易实现。对于多象限插补,需要在过象限时做特殊处理。相应的算法处理如下:
(1)判断起始点、终止点所在象限。
(2)结合转向(顺/逆时针),规划进给路径,即穿越象限编号。
(3)结合路径中的象限编号,逐象限插补运算。
程序实现部分源代码如下:
//路径规划函数
bool CrossQuadrant(int quad_bgn, int quad_end, int direction, int x_s, int y_s, int x_e, int y_e,
int* pCrossQuad){
int CrossPart[5]; //穿越象限编号数组
…………
for(i=0;i5;i++){ //初始化为-1
CrossPart[i]= -1; }
nCurPart= quad_bgn; //起始象限编号
if(nCurPart== quad_end){ //起始点、终止点在同一象限
if((nCurPart==0) || (nCurPart==2)){ //若在第1,3象限
if(fSlope_bgn>fSlope_end){ //斜率判断
if(direction== ClkWs){ //这种情况下,只走过本象限
blnCross= FALSE; //置标志位
}}}
……..
else{ //起始点在不同象限
do{
j++;
if(direction== ClkWs){ //顺时针
nCurPart--;}
else{ //逆时针
nCurPart++; }
if(nCurPart 0){ //若前一象限为第一象限,且顺时针转
nCurPart=3; } //则后一象限换为第四象限
if(nCurPart >3){ //若前一象限为第四象限,且逆时针转
nCurPart=0; } //则后一象限换为第一象限
CrossPart[j]= nCurPart;
}while(nCurPart!= quad_end); }}
4 小结
本文介绍的嵌入式数控软件已成功应用于数控玻璃雕刻机系统中,现场生产试验表明,系统运行效果良好。Windows CE嵌入式操作系统的出现为数控系统的应用开辟了新的领域,但由此也带来了软件开发上的复杂性。在嵌入式数控系统软件的开发过程中,必须针对数控加工的特点,对Windows CE 系统内核进行裁减定制,同时结合嵌入式硬件的具体情况,对代码进行合理优化,减少内存开支和不合理的CPU 占用,完成在嵌入式硬件上的编程。本论文在数控软件结构的合理构建以及开发的关键实现技术上做了有益的探讨。
本文作者创新点:在对数控平台应用进行Windows CE 系统定制的基础上,提出了嵌入式数控开发的软件架构。并对传统插补算法加以改进,解决插补数据过象限突变问题。本系统已成功应用于作者所在数控实验室的玻璃雕刻机中。与传统雕刻系统相比,本系统能节省设备成本30%-40%,加工时间缩短20%左右,已累计产生经济效益数十万元。
软件开发 实现 数控 CE Windows 基于 相关文章:
- 嵌入式软件设计中查找缺陷的几个技巧(03-06)
- SPARC高性能处理器集成开发环境及其编译器设计与实现(02-14)
- 基于Mobile的手机流媒体实时图像浏览客户端的软件设计(09-25)
- 嵌入式软件三大潜在问题及其测试技术(01-13)
- 嵌入式系统集成开发平台的设计与实现(01-15)
- CriticalBlue公司与飞思卡尔合作并简化多核软件开(09-12)