发明内容
针对现有技术中数控程序解释器存在的无法解释单轴运动指令的不足之处,本发明要解决的技术问题是提供一种能够解释单轴运动指令的单电机驱动多轴的数控系统加工程序解释器实现方法。
为解决上述问题,本发明采用的技术方案是:
本发明单电机驱动多轴的数控系统加工程序解释器实现方法包括如下步骤:
读取加工程序代码,对各加工程序代码进行语法分析,得到符合语法内部格式要求的加工程序数据;
对上述加工程序数据进行解释,得到数控系统能够识别的命令格式。
对各加工程序代码进行语法分析包括:打开加工程序或MDI方式下输入一行加工代码;
读入一行加工代码中的一行NC程序,进行格式化处理并转换为符合内部格式要求的格式进行存储;
对内部格式进行语法检查,判断是否有语法错误;
如果没有语法错误,则接续判断代码类型步骤。
对加工程序数据进行解释过程如下:
判断加工程序数据对应的代码类型,当加工程序数据对应的代码为G代码时,判断其为运动G代码还是非运动G代码,如果为运动G代码,分别确定各运动G代码的格式是否符合规范;
对符合规范的G代码判断G代码中对应的轴数是否为单轴,不是单轴则采用优化算法生成切换轴优化序列;
判断优化序列中的待处理的轴是否为当前轴,如果是,则直接下发直线执行命令;
判断各轴是否处理完,如果各轴没有处理完,则返回判断下一轴是否为当前轴步骤,直到所有轴都处理完;
当所有轴都处理完时,如果包含当前G代码的NC代码处理完成则结束加工程序中一行指令的解释,返回语法分析步骤中读取加工程序代码的读入一行NC程序步骤。
所述优化算法为:处理一行包含多个轴指令的运动G代码中各轴的执行顺序,以切换时间代价之和最小的序列依次执行换轴操作。
如果优化序列中的待处理的轴是不为当前轴,则下发换轴命令进行换轴操作,再下发直线执行命令,接续判断各轴是否处理完步骤。
是否为当前轴的判断过程为:提出当前轴的概念,加入一组分配轴的新的内部命令;
解释器中维持当前轴的状态,在解释一行运动G代码指令时,针对每一个运动轴进行单独处理;
如果要处理的运动轴为当前轴,则直接下发一条直线运动指令,否则在下发直线运动命令前先下发一条切换轴命令,指示机床先切换到目标轴后再执行该轴的运动操作,按照这样的方式处理一行程序段中的每个轴指令,从而一条G代码会被解释成多条命令顺序挂入命令队列中。
当G代码中对应的轴数为单轴时,则接续直接判断是否为当前轴步骤。
当G代码为非运动G代码时,进入各非运动G代码的处理,生成执行指令,或设置解释器的内部状态。
在外部机床出现异常或加工被中断时,通过同步操作实时更新内部状态信息,如当前各轴的位置、加工速度、当前轴状态等使解释器与机床当前的实际状态保持一致。
本发明具有以下有益效果及优点:
1.利用本发明方法在解释一行包含多个轴指令的运动G代码时,对生成的切换轴命令序列采用动态规划方法的思想进行优化,以期减少切换轴时间,提高机床的执行效率;在外部机床状态可能发生改变的情况下,通过解释器同步实时更新解释器内部的状态信息,保证解释器正确高效的运行。
具体实施方式
下面结合附图对本发明做出进一步详细的说明。
解释器在处理一行加工程序时,主要经过语法分析和解释执行这两个阶段。具体来说,解释器在读入一行加工代码后,要完成读取信息、格式化、错误检查、保存为内部格式等工作,为进一步的处理做准备。数控机床通常使用G代码来描述机床的加工信息,如走刀轨迹、坐标系选择等,此外还包括M、F、S、T等辅助信息码,将G代码解释为数控系统能够识别的命令格式是加工程序解释器的主要功能。
图1为本发明单电机驱动多轴的数控系统加工程序解释器实现方法流程图,实现过程如下:
读取加工程序代码,对各加工程序代码进行语法分析,得到符合语法内部格式要求的加工程序数据;
对上述加工程序数据进行解释,得到数控系统能够识别的命令格式。
在上述步骤基础上,本发明还可以包括以下步骤:
在外部机床出现异常或加工被中断时,通过同步操作实时更新内部状态信息,使解释器与机床当前的实际状态保持一致。
对各加工程序代码进行语法分析包括:打开加工程序或MDI方式下输入一行加工代码;
读入一行加工代码中的一行NC程序,进行格式化处理并转换为符合内部格式要求的格式进行存储;
对内部格式进行语法检查,判断是否有语法错误;
如果没有语法错误,则接续判断代码类型步骤。
对加工程序数据进行解释过程如下:
判断加工程序数据对应的代码类型,当加工程序数据对应的代码为G代码时,判断其为运动G代码还是非运动G代码,如果为运动G代码,分别确定各运动G代码的格式是否符合规范;
对符合规范的G代码判断G代码中对应的轴数是否为单轴,不是单轴则采用优化算法生成切换轴优化序列;
判断优化序列中的待处理的轴是否为当前轴,如果是,则直接下发直线执行命令;
判断各轴是否处理完,如果各轴没有处理完,则返回判断下一轴是否为当前轴步骤,直到所有轴都处理完;
当所有轴都处理完时,如果包含当前G代码的NC代码处理完成则结束加工程序中一行指令的解释,返回语法分析步骤中读取加工程序代码的读入一行NC程序步骤。
所述优化算法为:处理一行包含多个轴指令的运动G代码中各轴的执行顺序,以切换时间代价之和最小的序列依次执行换轴操作。
如果优化序列中的待处理的轴是不为当前轴,则下发换轴命令进行换轴操作,再下发直线执行命令,接续判断各轴是否处理完步骤。
是否为当前轴的判断过程为:提出当前轴的概念,加入一组分配轴的新的内部命令;
解释器中维持当前轴的状态,在解释一行运动G代码指令时,针对每一个运动轴进行单独处理;
如果要处理的运动轴为当前轴,则直接下发一条直线运动指令,否则在下发直线运动命令前先下发一条切换轴命令,指示机床先切换到目标轴后再执行该轴的运动操作,按照这样的方式处理一行程序段中的每个轴指令,从而一条G代码会被解释成多条命令顺序挂入命令队列中。
当G代码中对应的轴数为单轴时,则接续直接判断是否为当前轴步骤。
当G代码为非运动G代码时,进入各非运动G代码的处理,生成执行指令,或设置解释器的内部状态。
本实施例在解释器中引入了当前轴的概念,在解释器内部会保存当前轴状态,并根据解释出的新的命令或解释器同步操作实时更新当前轴状态;为了实现切换轴的动作,定义了一组新的内部命令——换轴命令,指示机床从当前轴切换到新的目标轴,将运动控制G代码指令(如直线快移G0、直线进给G1和固定循环命令G81~G89)进行了特殊处理,也就是说,针对每一个运动轴都会先行判断是否与解释器状态中的当前轴一致,如果一致,则解释出一条直线运动命令,指示当前轴的运动;否则,解释成两条命令:选择轴命令和直线运动命令,先使机床切换到新的目标轴,再进行单轴运动,此时解释器的当前轴状态更新为新的目标轴,按照这样的方式处理完一个轴指令后再接着处理下一个,直到一行程序段中的所有轴指令都被解释完为止。一条G代码可能会解释出多条命令,由解释器依次挂入命令队列中,从而这一组命令序列完成了一条G代码指令。
在一行包含运动G代码的加工程序段中,如果轴指令数多于一个,会出现频繁的切换轴动作,考虑到机床从某个轴切换到其它不同轴所花费的时间代价不同,如果合理的安排解释器解释出的换轴命令的顺序,是可以明显改善代码的执行效率,提高机床的加工速度的。由此,本解释器不再按照指令中的先后顺序来下发换轴命令,采用优化处理算法对各轴的执行顺序进行优化,以优化后切换代价小的命令序列执行切换轴操作。假设一个单电机驱动六轴的数控机床,其六个运动轴为X、Y、Z、B、U、W,每两个轴之间切换的代价权值如下表所示:
|
X |
Y |
Z |
B |
U |
W |
X |
0 |
10 |
15 |
10 |
16 |
20 |
Y |
5 |
0 |
12 |
7 |
15 |
10 |
Z |
6 |
13 |
0 |
11 |
16 |
14 |
B |
15 |
8 |
10 |
0 |
13 |
12 |
U |
9 |
8 |
9 |
15 |
0 |
9 |
W |
8 |
8 |
7 |
13 |
14 |
0 |
从当前轴位置开始,依次经过一行程序段中出现的每个轴恰好一次,其中权值之和最小的那组排序即为所求,该问题可以抽象描述如下:设G=(V,E)是一个具有边成本的连通图,V代表图中的各个结点,V={1,2,...,n},n>1;E代表图中的各条边,其中每一边(i,j)∈E都有一非负整数耗费Cij(即边上的权记为Cij,i,j∈V)。要找出G的一条最小代价路径(即从某一点出发,经过图中每个点恰好一次的路线,该路线上所有边的权值之和最小)。
求解最短路径可以有多种方法,但由于一行加工程序段中的轴指令不能重复,考虑到此类问题规模较小,本发明采用动态规划方法的思想求解。其基本原理是假设周游路线是开始于某一点并终止于该点的简单路径,则每一条周游路线都是由一条边<l,k>和一条由结点k到结点l的路径所组成,其中k∈V-{l};而这条由结点k到结点l的路径通过V-{l,k}的每个结点各一次。如果这条周游路线是最优的,那么这条由k到l的路径必定通过V-{l,k}中所有结点的由k到l的最短路径。设g(i,S)是由结点i开始,通过S(S为连通图G中的结点)中的所有结点,在结点l终止的一条最短路径长度。g(1,V-{l})是一条最优的周游路线长度。动态规划算法的一般表达式为:
g(i,S)=min{cij+g(j,S-{j})} 其中j∈S
如果使g(i,Ф)=0,结点l代表当前轴,那么由g(1,V-{l})可得一条最短路径长度。如果对每个g(i,S),保留使表达式右边取最小值的那个j值,可得优化后的切换轴命令序列。例如,一行指令G0X_Y_Z_W,假设当前轴是X轴,则经过算法所得切换轴的优化路径为X-Y-W-Z,权值之和为27,而如果采用顺序的方式解释所得序列为X-Y-Z-W,权值之和为36,可见优化后提高了切换轴的效率。
解释器通过优化算法,尽可能的找到最小代价序列,尽量减少切换轴的次数、降低切换轴所花费的代价,从而节约运行时间,提高加工效率。
在机床运行过程中,加工可能被中断,或者由于系统中出现某些异常,如硬件无法运动到正确位置等,此时会调用到解释器的同步操作。解释器同步作为一种解释器与外部机床沟通的手段,在解释器的执行过程中起着非常重要的作用,同步的主要目的是使解释器的内部信息与当前机床的实际状态保持一致。在外部机床状态有可能发生改变的情况下都要调用解释器同步,比如模式切换、机床启动、急停、复位、错误处理等操作都会触发同步。同步操作会更新解释器中当前各轴的坐标点位置、进给速度、主轴转速、快移速率、修调开关、主轴状态,当前轴,当前挡位等信息,使解释器做出实时的改变。解释器在解释加工指令时会根据当前状态做出判断,因而同步操作是解释器能正确执行的必要条件。
上述给出了本发明的一个具体实施方式,本发明是为单电机驱动多轴的数控机床系统所开发的加工程序解释器,适用于任何采用单电机控制两个或多个进给轴的数控机床。针对单电机驱动多轴的特性,在处理加工指令时解释器采取了相应的措施,改变了传统G代码的处理方式和产生的命令序列,经过实践证明,本解释器实现了对数控机床各种指令和功能的正确解释,可以满足系统的要求。