首页> 中国专利> 具有重新开始程序块先行处理功能的数值控制器

具有重新开始程序块先行处理功能的数值控制器

摘要

本发明提供一种数值控制器。该数值控制器通过暂停机械加工程序的读取的程序块的分析并在所读取的程序块的前面的程序块的执行完成时重新开始在暂停阶段的所读取的程序块的分析来执行先行控制。该数值控制器预先连续地读取并分析机械加工程序的程序块,将分析的程序块存储在缓冲器中,然后执行所存储的程序块。该数值控制器包括:确定所读取的程序块是否包括暂停程序块的分析的先行停止代码的装置;当先行停止代码被确定时暂停程序块的分析的装置;确定在被暂停的程序块的前面的程序块的执行是否完成的装置;和当在被暂停的程序块的前面的程序块的执行完成时重新开始被暂停的程序块的分析的装置。

著录项

  • 公开/公告号CN101311857A

    专利类型发明专利

  • 公开/公告日2008-11-26

    原文格式PDF

  • 申请/专利权人 发那科株式会社;

    申请/专利号CN200810109063.5

  • 发明设计人 芳贺斌;细川匡彦;

    申请日2008-05-23

  • 分类号G05B19/4155;

  • 代理机构北京银龙知识产权代理有限公司;

  • 代理人郭凤麟

  • 地址 日本山梨县

  • 入库时间 2023-12-17 21:02:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-12-01

    授权

    授权

  • 2009-01-21

    实质审查的生效

    实质审查的生效

  • 2008-11-26

    公开

    公开

说明书

技术领域

本发明涉及用于控制机械工具的数值控制器。特别地,本发明涉及一种数值控制器,其中,在生成可执行数据之前从程序中读取命令块,该执行数据临时存储在先行缓冲器中,并且基于该执行数据执行插值处理;更具体地,本发明涉及能够缩短先行停止控制的周期时间的数值控制器。

背景技术

在数值控制器中执行先行控制中,直接执行机械加工程序的较后阶段的序列中的系统变量操作的程序块,而不存储在先行缓冲器中,因此这可能影响执行数据的处理,该执行数据被分析并临时存储在先行缓冲器中。在该情况下执行先行停止控制。

在数值控制器中的常规的先行停止控制中,用于该控制的命令作为一个程序块插入机械加工程序中,并通过该插入的程序块停止该机械加工程序的先行处理(look ahead)(图8a)。在图8a所示的程序示例中,插入先行停止代码的程序块N14以防止程序块N15被预先读取或先行处理。还存在一种先行停止代码,可以通过将该先行停止控制的代码插入该机械加工程序中来共同命令机械加工程序的程序块和该种先行停止代码。然而,在包括先行停止代码的程序块的全部处理完成之后才停止先行处理(图8b)。在图8b所示的程序示例中,将是辅助函数(auxiliary function)的M代码作为先行停止代码插入程序块N13中,以免预先读取程序块N14。此外,存在公知的技术,其中当在机器人控制方法中调整变量时,重新开始先行处理(见JP 05-218445A)。

存在一个问题:如果对一个程序块插入先行停止程序,则该程序块的处理时间必然被加到机械加工程序的处理时间,因此延长了机械加工时间。由于可以与机械加工程序一起发出的先行停止代码是辅助函数,而且在程序块的执行的结尾需要用于可编程控制器的信号操作。从而,执行被延迟,使得机械加工时间被进一步延长。

发明内容

本发明提供一种数值控制器,该数值控制器能够通过暂停机械加工程序的读取程序块的分析并且在所读取的程序块的前面的程序块的执行完成时重新开始暂停阶段的读取的程序块的分析来执行先行控制,以缩短先行控制的周期时间。

本发明的数值控制器通过预先地执行连续地读取并分析机械加工程序的程序块来获得执行数据的先行处理并在缓冲器中存储该执行数据,并且执行所存储的执行数据来进行数值控制。根据本发明的一个方面,数值控制器包括:代码确定装置,用于确定读取的程序块是否包括暂停所述读取的程序块的分析从而停止先行处理的暂停代码;暂停装置,用于暂停由所述代码确定装置确定所述读取的程序块为包括该暂停代码的所述读取的程序块的分析;执行完成确定装置,用于确定被暂停的程序块的前面的程序块的存储的执行数据的执行是否完成;及重新开始装置,当由所述执行完成确定装置确定被暂停的程序块的前面的程序块的存储的执行数据的执行完成时,重新开始被暂停的程序块的分析。

在这种情况下,数值控制器可以进一步包括使用参数来注册(registering)停止该先行处理的暂停代码的装置。

根据本发明的另一个方面,数值控制器包括:代码确定装置,用于确定读取的程序块是否包括宏变量操作的代码,对于该操作,所述读取的程序块的分析被暂停从而停止先行处理;暂停装置,用于暂停读取的程序块的分析,所述读取的程序块由所述代码确定装置确定为包括所述读取的程序块的分析要被暂停的宏变量操作的代码;执行完成确定装置,用于确定被暂停的程序块的前面的程序块的存储的执行数据的执行是否完成;及重新开始装置,当由所述执行完成确定装置确定被暂停的程序块的前面的程序块的存储的执行数据的执行完成时,重新开始被暂停的程序块的分析。

在这种情况下,数值控制器可以进一步包括使用参数来指示该宏变量的范围的装置,该宏变量的范围用于确定宏变量操作的代码,对于该宏变量操作,读取的程序块的分析要被暂停。

此外,数值控制器可以包括使用参数来指示宏变量操作的阶段的装置,对于该宏变量操作,读取的程序块的分析要被暂停。

根据本发明的再一个方面,数值控制器包括:代码确定装置,用于确定读取的程序块是否包括停止先行处理的先行停止代码;代码类型确定装置,用于确定由所述代码确定装置确定的先行停止代码是否是暂停所述读取的程序块的分析的代码;执行完成确定装置,用于确定该暂停的程序块的前面的程序块的存储的执行数据的执行是否完成;及暂停/继续装置,根据由所述代码类型确定装置确定的和由所述执行完成确定装置确定的结果,暂停包含要暂停所述读取的程序块的分析的代码的所述读取的程序块的分析并重新开始被暂停的程序块的分析以获得执行数据,或可选择地继续所述读取的程序块的分析以获得执行数据。

在这种情况下,数值控制器可以进一步包括使用一个或多个参数来注册一个或多个先行停止代码的装置。

通过在机械加工程序命令中包括暂停读取的程序块的分析来停止先行处理的代码,可以比在插入停止该先行处理的程序块的常规的方法的情况下缩短用于机械加工程序的周期时间。此外,在被插入机械加工程序的现有程序块中的常规的先行停止代码中还存在这样的问题:在包括先行代码的程序块的处理完成之后停止该先行处理。但是,通过暂停机械加工程序分析可以消除这个问题。由于机械加工程序的分析处理被暂停并从该暂停阶段重新开始,而且比常规的先行控制方法较少耗费(less wasteful),从而可以进一步缩短周期时间。

附图说明

图1是根据本发明的一个实施例具有控制机械工具的先行控制功能的数值控制器的示意图;

图2是表示根据该实施例的分析被暂停并被保存在先行缓冲器中的算法的流程图;

图3是表示根据该实施例的分析被暂停并不存储在先行缓冲器中的算法的流程图;

图4是表示根据该实施例包括两种类型的先行停止代码的算法的流程图;

图5是表示从该先行缓冲器读取执行数据并执行该数据的处理的流程图;

图6是表示对于G900被用作停止先行处理的代码的情况的程序示例;

图7是表示对于停止先行处理的代码被用作宏变量操作的代码的情况的程序示例;

图8a和8b表示对于G900被用作停止先行处理的代码的情况的程序示例。

具体实施方式

根据图1所示的本发明的实施例的数值控制器8提供先行停止代码表4。先行停止代码表4加载停止先行处理的类型的代码及暂停程序块分析以停止先行处理的类型的代码。在这些情况下,宏变量可以被用作存储在先行停止代码表4中的代码。参考图1,当执行时,程序读取/分析装置1连续地读取并分析当前程序块之前的一个或多个程序块,并将分析的结果加载入先行缓冲器2中。先行缓冲器2加载多条信息,例如用于每个程序块的模式信息、每个轴的移动、命令的主轴(spindle)速度、进给速度等。图1所示的程序读取/分析装置1从机械加工程序中一个一个地读取程序块并分析所读取的程序块。当在先行停止代码表4中注册的先行停止代码出现时,停止机械加工程序的先行处理。先行停止代码包括已注册的代码和宏变量,例如在图6的机械加工程序示例中的N14中的G900和在图7的机械加工程序示例中的N14中的#13020。

数值控制器8中的程序块分析表示将作为源代码的程序块转换为目标代码,即可由计算机识别的执行数据。该转换包括七个类型的处理:词法(lexical)分析(1),宏分析(2),宏执行(3),句法(syntactic)分析(4),语义(semantic)分析(5),目标代码生成(6)以及优化(7)。词法分析(1)是用于从数值符号中划分出字母符号的处理。宏分析(2)表示当词法分析的结果包括宏变量的特定符号时执行宏分析。分析变量值(variable number)和宏句法,并且如果在先行停止代码表4中注册的任意变量操作被执行,则停止该分析。宏执行(3)是已分析的宏的执行。依据该宏程序,根据词法分析的结果重写宏区域。例如G00X#100是这样含义的信息:当该命令被执行时,如果#100的值是350.0,则将350.0输入到词法分析的结果数据的X地址。句法分析(4)仅用于确定G命令的数值。语义分析(5)可以由G命令的数值指定该函数,从而对每个函数能够执行处理。目标代码生成(6)表示语义分析的结果的目标代码。在本发明的本实施例中,通过连续地先行处理的程序块的前述处理来生成执行数据。如果没有先行处理是基于宏变量操作执行的,则不执行宏分析(2)和宏执行(3)的转换处理。

如果在程序块中出现暂停程序块分析的类型的任意代码,则数值控制器8执行在预定的一个前述处理中暂停该程序块分析的处理。对数值控制器8提供先行停止代码注册装置5和宏变量范围指定装置6。使用参数可以在先行停止代码注册装置5中注册一个或多个先行停止代码。宏变量范围指定装置6可以使用参数来指定宏变量的范围,该宏变量用于确定程序块分析的暂停,从而当操作#10000到#11000范围内的变量时,可以暂停程序块分析以停止先行处理。此外,作为变量操作的示例,使用参数还可以指定(1)读取变量的值、(2)改变变量的内容等也可由参数指定。对于这些指定,可以对数值控制器8提供宏变量操作阶段指定装置7,宏变量操作阶段指定装置7可以指定仅操作(2)的先行处理被停止,而不允许停止操作(1)的先行处理。这在对数值控制器8仅提供这些装置5、6和7中的一个装置时才是必需的。

有一种方法,例如,通过指定作为参数的特定示例的变量值的范围进一步指定操作方法,包括:

参数15010=13000,

参数15010=13000(或数值例如100被输入),

参数15010=0:用于读和写操作,

1:仅用于读操作,

2:仅用于写操作。

例如,基于函数的指定方法,包括:

参数15000#0=1:当偏移(offset)函数的变量被读出和写入时停止先行处理。

参数15000#1=1:仅当偏移函数的变量被读出时停止先行处理。

参数15000#2=1:仅当偏移函数的变量被写入时停止先行处理。

因此,设置参数具有含义,并注册这些参数的一些设置。

图2是表示使用代码的先行处理的算法的流程图,该代码用于程序块分析的暂停及用于先行处理停止,该程序块分析是由本实施例的数值控制器的处理器执行的。像G900一样设置包括暂停程序块分析的类型的先行处理停止的代码,G900被用在图6的机械加工程序示例中。首先,从机械加工程序读取一个程序块(步骤A1)。确定所读取的程序块是否是程序结尾(步骤A2)。例如,通过识别序列号和表示程序结尾的代码可以确定所读取的程序块是否是程序结尾。在图6所示的机械加工程序示例中,通过识别M30可以识别该程序结尾,M30是表示程序结尾的辅助函数。如果识别出程序结尾,则机械加工程序的处理结束。

在步骤A3,确定为数值控制器提供的先行缓冲器是否为满。如果先行缓冲器是满的,则它等待直到先行缓冲器不再为满(步骤A3)。例如,通过识别表示位置的指针来确定先行缓冲器是否为满,在该位置先行缓冲器存储程序块执行数据。如果断定先行缓冲器不满,则确定表示先行处理停止的标记F是否设置为1(步骤A4)。如果标记F不是1(即,如果先行处理没有停止),则分析所读取的程序块(步骤A5)。在步骤A5的分析包括词法分析和句法分析。确定暂停程序块分析的类型的任何先行停止代码是否出现在步骤A5所分析的程序块信息中(步骤A6)。如果在步骤A6断定没有任何暂停程序块分析的类型的先行停止代码,则继续所读取的程序块的分析以生成执行数据(步骤A7)。以语义分析开始继续步骤A7中的分析。生成的执行数据保存在先行缓冲器中(步骤A8)。然后,过程返回至开始来读取下一个程序块。

如果在步骤A6断定有暂停程序块分析的类型的先行停止代码,则暂停包括该代码的程序块的分析(步骤A9)。然后,将用于先行停止的标记设置为1(步骤A10)。由于程序块分析被暂停,因此过程返回至识别程序结尾的步骤A2和确定先行缓冲器是否为满的步骤A3之间的阶段,以免下一个程序块被读取。

如果在步骤A4断定该标记为1,即先行处理被停止,则确定先行缓冲器是否为空,即被暂停的程序块前面的程序块的执行数据的执行是否完成(步骤A11),该前面的程序块已存储在该先行缓冲器中。如果在步骤A11确定先行缓冲器不空,则等待直到该缓冲器为空。如果断定先行缓冲器为空,则重新开始在步骤A9暂停分析的程序块的分析处理并被继续生成执行数据(步骤A12)。以语义分析开始继续步骤A12中的分析。生成的执行数据保存在先行缓冲器中(步骤A13)。由于重新开始并继续暂停的程序块分析处理,因此标记F重新设置为0以取消先行处理停止状态,以便能够执行下一个程序块的分析(步骤A14)。然后,过程返回至开始来读取下一个程序块。

图3是表示使用宏变量操作作为辨别代码的先行处理的算法的流程图,该辨别代码用于程序块分析的暂停及用于先行处理停止,该程序块分析是由本实施例的数值控制器的处理器执行的。首先,从机械加工程序中读取一个程序块(步骤B1)。确定所读取的程序块是否是程序结尾(步骤B2)。例如,通过识别序列号和表示程序结尾的代码可以确定所读取的程序块是否是程序结尾。在图6所示的机械加工程序示例中,通过识别M30可以识别程序结尾,M30是表示程序结尾的辅助函数。如果识别出程序结尾,则机械加工程序的处理结束。

在步骤B3,确定为数值控制器提供的先行缓冲器是否为满。如果先行缓冲器是满的,则等待直到先行缓冲器不再为满(步骤B3)。例如,通过识别表示位置的指针来确定先行缓冲器是否为满,在该位置先行缓冲器存储程序块执行数据。如果确定先行缓冲器不满,则确定表示先行处理停止的标记F是否设置为1(步骤B4)。如果标记F不是1(即,如果先行处理没有停止),则分析所读取的程序块(步骤B5)。步骤B5中的程序块分析包括词法分析和宏分析。确定要暂停程序块分析的类型的任何宏变量操作是否出现在步骤B5所分析的程序块信息中(步骤B6)。如果在步骤B6中断定没有前述类型的宏变量操作,则继续所读取的程序块的分析以生成执行数据(步骤B7)。以宏执行开始继续步骤B7中的分析。生成的执行数据保存在先行缓冲器中(步骤B8)。然后,过程返回至开始来读取下一个程序块。

如果在步骤B6断定有暂停程序块分析的类型的宏变量操作,则暂停包括该宏变量操作的程序块的分析(步骤B9)。然后,先行停止的标记设置为1(步骤B10)。由于程序块分析被暂停,因此过程返回至识别程序结尾的步骤B2和确定先行缓冲器是否满的步骤B3之间的阶段,以免下一个程序块被读取。

如果在步骤B4断定标记F为1,即先行处理停止,则确定先行缓冲器是否为空(步骤B11)。如果在步骤B11断定先行缓冲器不空,则等待直到该缓冲器为空。如果断定先行缓冲器为空,则重新开始在步骤B9暂停分析的程序块的分析处理并继续生成执行数据(步骤B12)。以宏执行开始继续步骤B12中的分析,并且进行执行处理(步骤B13)。由于重新开始并继续暂停的程序块分析处理,因此标记F重新设置为0以取消先行处理停止状态,从而允许先行处理,以便能够执行下一个程序块的分析(步骤B14)。然后,过程返回至开始来读取下一个程序块。

图2和3的流程图的区别在于步骤A13和B13。虽然在步骤A13中所获得的执行数据保存在先行缓冲器中,但是在步骤B13中直接进行执行处理,而不在先行缓冲器中保存该执行数据。

图4是表示使用在图1的先行停止代码表4中存储的两种类型的代码(用于暂停预先读取的程序块的分析的代码和用于继续分析处理以生成执行数据的代码)的先行处理的算法的流程图。首先,从机械加工程序读取一个程序块(步骤C1)。确定所读取的程序块是否是程序结尾(步骤C2)。例如,通过识别序列号和表示程序结尾的代码可以确定所读取的程序块是否是程序结尾。在图6所示的机械加工程序示例中,通过识别M30可以识别程序结尾,M30是表示程序结尾的辅助函数。如果识别出程序结尾,则机械加工程序的处理结束。

在步骤C3,确定对数值控制器提供的先行缓冲器是否为满。如果先行缓冲器为满,则等待直到先行缓冲器不再为满(步骤C3)。例如,通过识别表示位置的指针来确定先行缓冲器是否为满,在该位置先行缓冲器存储程序块执行数据。如果确定先行缓冲器不满,则确定表示先行处理停止的标记F是否设置为1(步骤C4)。如果标记F不是1(即,如果先行处理没有停止),则分析所读取的程序块(步骤C5)。步骤C5中的分析包括词法分析和句法分析。确定暂停程序块分析类型的任何先行停止代码是否出现在步骤C5所分析的程序块信息中(步骤C6)。如果在步骤C6断定没有先行停止代码,则继续所读取的程序块的分析以生成执行数据(步骤C7)。生成的执行数据保存在先行缓冲器中(步骤C8)。然后,过程返回至开始来读取下一个程序块。

如果在步骤C6断定有先行停止代码,则确定先行停止代码是否为暂停程序块分析的类型(步骤C9)。在图6的机械加工程序示例中先行代码G900表示为暂停程序块分析的类型。此外,图8a和8b表示M900为对所读取的程序块的分析处理和执行数据的生成的代码。如果在步骤C9断定有暂停程序块分析类型的先行停止代码,则暂停包括该代码的程序块的分析(步骤C10),并且标记设置为先行停止的1(步骤C11)。由于程序块分析被暂停,因此过程返回至识别程序结尾的步骤C2和确定先行缓冲器是否满的步骤C3之间的阶段,以免下一个程序块被读取。

如果在步骤C9断定先行停止代码如M900不是暂停程序块分析的类型,则继续包括这种类型的先行停止代码的程序块的分析(步骤C12)。获得的执行数据保存在先行缓冲器中(步骤C13)。然后,等待直到缓冲器为空(步骤C14),并且过程返回至开始。

如果在步骤C4断定标记F为1,即先行处理被停止,则确定先行缓冲器是否为空(步骤C15)。如果在步骤C15断定先行缓冲器不空,则等待直到缓冲器为空。如果断定先行缓冲器为空,则重新开始并继续在步骤C10暂停分析的程序块的分析处理以生成执行数据(步骤C16)。生成的执行数据保存在先行缓冲器中(步骤C17)。由于重新开始并继续暂停的程序块分析处理,因此标记F重新设置为0以取消先行处理停止状态,以便能够执行下一个程序块的分析(步骤C18)。然后,过程返回至开始来读取下一个程序块。

图5是表示从先行缓冲器中读取执行数据并执行该执行数据的处理的算法的流程图。确定先行缓冲器是否为空。如果先行缓冲器不空,则从先行缓冲器中取出并执行该执行数据。每次一块接一块的或每次多块的出取在先行缓冲器中存储的执行数据并执行。

图6表示G900被用作停止先行处理的代码的情况的机械加工程序示例。例如,“G90 G00 X0.Y0.;”是机械加工程序的开始程序块,“G41 D10 G01X100 Y100 F500.;”是下一个程序块。D10是工具直径校正值。“M30;”是机械加工程序的最后的程序块。图6中所示的机械加工程序由21个程序块组成。变量#13010是宏变量,如果内容改变,该宏变量可以改变工具直径校正的第十偏移值,并且指示#13010加载变量#100和0.5的和。如果在程序块分析中辨别出G900,则暂停程序的分析。“(CHANGE VALUE=D10)”(改变值=D10)是用于改变D10的值的帮助文本。

图7表示辨别程序块分析的暂停的代码被用作宏变量操作的代码的情况的机械加工程序示例。当由程序块分析辨别出N14的宏变量操作的代码时,暂停程序块分析。当程序块N13的执行完成时,从分析被暂停的程序块N14重新开始分析,并且也重新开始先行处理。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号