一种用于数控系统的命令多发机制的实现方法

文档序号:6323271阅读:198来源:国知局
专利名称:一种用于数控系统的命令多发机制的实现方法
技术领域
本发明涉及数控系统的命令发送技术,具体的说是一种用于数控系统的命令多发机制的实现方法。
背景技术
在数控装置中,为了实现数控机床对复杂型面的加工,必须先采用CAD系统进行实体模型设计,再由CAM系统根据加工工艺,将三维模型转换成由程序段(直线段、圆弧段、 样条程序段等)组成的加工程序,由数控系统进行加工处理。为了确保由直线、圆弧、样条等拟合工件的形状与精度,CAM产生的程序段所规定的路径位移通常很短,而产生的程序段数量通常很大。这些海量短程序段一方面将导致电机的频繁启停,同时过短的加工位移也会造成速度处理中的“数据饥饿”。为此,人们设计开发了多种类型的数控系统微小程序段处理功能。数控系统传统命令发送方式为每个任务控制器周期发送一条命令,由于运动控制周期通常小于任务控制周期,因此随着微小程序段处理方法的不断改进,运动控制器性能不断提高,时常会发生命令队列处于“数据饥饿”状态的情况。学术界和工程开发人员提出各种“前瞻”和“预处理”方法,从一定程度上缓解了“数据饥饿”问题。然而,上述方法一方面增加了工件程序开始运行时的等待时间;另一方面对于长工件程序(此处指大于5万行程序段的工件程序),上述方法仍然难以避免“数据饥饿”问题。

发明内容
针对现有技术中数控系统的命令发送方式存在难以避免“数据饥饿”等不足之处, 本发明要解决的技术问题是提供一种能够适应数控系统运动控制器的处理性能,避免在运动控制器插补过程中产生“数据饥饿”的用于数控系统的命令多发机制的实现方法。为解决上述技术问题,本发明采用的技术方案是本发明用于数控系统的命令多发机制的实现方法包括以下步骤在数控系统启动时,进行初始化操作,确定需要发送的命令个数;数控系统中的任务控制器在单个任务控制周期内根据命令个数多次发送命令信息,通过数控系统的两块共享通讯缓冲区传递给数控系统中的运动控制器;两块共享通讯缓冲区分别作为命令缓冲区和状态缓冲区;运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中。在单个任务控制周期内多次发送命令信息过程为对输入的工件程序进行解释,得到系统能够识别的命令形式;控制指令的加工顺序和加工逻辑,按上述命令形式对部分需要立即处理的命令进行处理;将处理后的命令存储到任务队列中,同时更新任务队列相关参数;判断上一条命令的状态信息是否已经返回;
如果上一条命令的状态信息已经返回,清空等待计数;从任务队列中取出一条命令,写入临时命令数组;判断是否继续写命令;如果不继续写命令,则向运动控制器发送写终止命令;任务控制器将临时命令数组中的内容写入命令缓冲区的命令数组中;更新命令号,清空临时命令数组;本周期任务控制结束,进入下一个任务控制周期。如果继续写命令,则返回至从任务队列中取出一条命令步骤。如果上一条命令的状态信息没有返回,则进行等待计数累加;判断等待计数是否超过系统设置的计数边界值;如果没有超过该计数边界值,则返回判断上一条命令的状态信息是否返回步骤。如果超过该计数边界值,则系统产生报错信息;本周期任务控制结束,进入下一个任务控制周期。运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中, 其过程为判断运动控制器是否能够读取命令;如果能够读取命令,分发命令缓冲区的命令数组中的命令到命令队列中;更新状态缓冲区中的状态信息;执行运动控制器中的加工控制功能。如果运动控制器不能够读取命令,则直接执行加工控制功能;本周期运动控制结束,进入下一个运动控制周期。本发明具有以下有益效果及优点1.效率高。应用本发明方法可以在程序运行开始前设置保证数控系统运行平滑的最小的“前瞻”或“预处理”段数,减少了数控系统加工运行前的等待时间,在一定程度上提高了数控系统的执行效率。2.速度快。应用本发明方法可以提高数控系统的命令发送速度,解决了数控系统高速运行过程中的“数据饥饿”问题。3.通用性强。本发明方法不更改传统数控系统任务控制队列向运动控制队列中发送命令的函数和相关命令结构类型,具有极强的通用性。4.灵活性好。本发明方法提供了参数配置功能,用户可以通过系统配置文件更改单周期最多发送命令个数的极限值,结合数控系统的任务控制周期和运动控制周期,获得最佳效果。


图1为本发明方法中应用的数控系统结构图;图2为本发明方法中应用的数控系统任务控制器与运动控制器之间通信方式示意图;图3为本发明方法中应用的数控系统模块调度时序图;图4为本发明方法中任务控制器执行流程图5为本发明方法中运动控制器执行流程图;图6为本发明方法中共享通讯缓冲区访问状态转换图。
具体实施例方式本发明用于数控系统的命令多发机制的实现方法,结合共享通讯缓冲区写访问互斥原理,在分析数控系统任务控制周期和运动控制周期特性的基础上,提出能够保证两块共享通讯缓冲区差时轮询互斥写访问的命令多发机制,实现海量命令数据的快速传递。本发明方法包括以下步骤在数控系统启动时,进行初始化操作,确定需要发送的命令个数;数控系统中的任务控制器在单个任务控制周期内根据命令个数多次发送命令信息,通过数控系统的两块共享通讯缓冲区传递给数控系统中的运动控制器;两块共享通讯缓冲区分别作为命令缓冲区和状态缓冲区;运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中。下面结合附图对本发明作进一步详细说明。参见图1,采用人机接口、任务控制器、运动控制器及可编程控制器,将运动控制器与可编程控制器加载于系统的实时内核空间,人机接口、任务控制器部分加载于系统的用户空间。任务控制器与运动控制器之间通过系统的共享通讯缓冲区互相通信,传递命令参数和状态参数等,如图2所示。人机接口、任务控制器、运动控制器及可编程控制器都是周期性被调度,分别有自己的调度周期,如图3所示。运动控制器优先级最高,可编程控制器优先级次之,二者都为软实时任务;任务控制器优先级小于可编程控制器,其周期大于运动控制器和可编程控制器周期之和;人机接口的优先级最低,其周期大于其它三个模块之和, 时效性要求不强。用户通过人机接口输入工件程序,工件程序在任务控制器中进行程序解释和状态管理,然后将生成的命令信息传递给运动控制器进行加工控制。命令信息传递利用系统的共享通讯缓冲区,采用命令多发机制,在单个任务周期内,发送多条命令信息,从而实现海量数据的快速发送,避免产生“数据饥饿”。用户通过配置文件配置系统的运动控制周期、可编程控制器周期、任务控制周期和人机接口周期。系统运行启动时,调用配置文件,同时完成本发明方法单周期最多发送命令个数MAX_COMMAND_NUM的初始化。具体为MAX_COMMAND_NUM = Nmax* (Ttask/Tmotion)(1)其中Nmax表示平均每个运动周期能够执行的最大指令数目,Tm。ti。n表示运动控制周期,Ttask表示任务控制周期。显然有Nmax= (vel*Tm。ti。n)/Lave(2)其中vel为工件程序的加工进给速度,Lave为工件程序的平均长度。由(1)、(2)可知,单周期发送命令个数为MAX_COMMAND_NUM = (vel*Ttask)/Lave(3)
考虑到任务控制器中解释器的执行速度,以及现有数控系统的性能等因素,跟据系统特性设置单周期最多发送命令个数的极限值为CAP_COMMAND_NUM,将之写入配置文件。 则MAX_COMMAND_NUM的最终表达式为MAX_COMMAND_NUM = min{CAP_COMMAND_NUM,(vel*Ttask)/Lave} (4)如图4所示,本发明方法中任务控制器执行包括以下步骤在单个任务控制周期内多次发送命令信息过程为对输入的工件程序进行解释,得到系统能够识别的命令形式;控制指令的加工顺序和加工逻辑,按上述命令形式对部分需要立即处理的命令进行处理;将处理后的命令存储到任务队列中,同时更新任务队列相关参数;判断上一条命令的状态信息是否已经返回;如果上一条命令的状态信息已经返回,清空等待计数;从任务队列中取出一条命令,写入临时命令数组;判断是否继续写命令;如果不继续写命令,则向运动控制器发送写终止命令;任务控制器将临时命令数组中的内容写入命令缓冲区的命令数组中;更新命令号,清空临时命令数组;本周期任务控制结束,进入下一个任务控制周期;如果继续写命令,则返回至从任务队列中取出一条命令步骤;如果上一条命令的状态信息没有返回,则进行等待计数累加;判断等待计数是否超过系统设置的计数边界值;如果没有超过该计数边界值,则返回判断上一条命令的状态信息是否返回步骤;如果超过该计数边界值,则系统产生报错信息;本周期任务控制结束,进入下一个任务控制周期。判断上一条命令的状态信息是否已经返回是根据状态信息中的反馈命令号实现的,如果该反馈命令号与上一条发送命令的命令号相同,则认定上一条命令的状态信息已经返回,否则认定为上一条命令的状态信息未返回;判断是否继续写命令是判断所写的命令数是否达到单周期最多发送命令个数 MAX_COMMAND_NUM,或者是否遇到一些特定的命令,需要结束本任务周期写命令动作;将该命令写入临时命令数组是指每次任务周期开始时,从临时命令数组的第一个元素开始更新写入,写第二条命令时,写入临时命令数组的第二个元素位置,并依此类推;更新命令号是指命令号加1 ;在单个任务控制周期循环写命令的过程中,命令号不变;在下一个任务周期写命令时,命令号加1 ;等待计数是一种在轮询等待状态信息反馈的过程中使用的标识,每轮询状态信息一次,等待计数值加1 ;当该等待计数值大于系统设置的计数边界值时,判定此次轮询等待结束,进入下一个任务控制周期;如图5所示,本发明方法中运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中,其过程为判断运动控制器是否能够读取命令;
如果能够读取命令,分发命令缓冲区的命令数组中的命令到命令队列中;更新状态缓冲区中的状态信息;执行运动控制器中的加工控制功能;如果运动控制器不能够读取命令,则直接执行加工控制功能;本周期运动控制结束,进入下一个运动控制周期。是否能够读取命令是判断命令缓冲区中的命令号与状态缓冲区中的状态反馈信号是否一致。如果不一致(命令号比状态反馈信号大1),则说明任务控制器发送了一条新命令,能够读取命令;如果一致,则说明任务控制器没有更新命令缓冲区中的命令信息,不能够读取命令;更新系统的状态信息是指更新状态缓冲区中的状态反馈信号,令该状态反馈命令号等于所接收的命令号;执行运动控制器中的加工控制功能主要包括轨迹规划和轴控制等功能。结合图4,图5可知,本发明方法实现了两块共享通讯缓冲区的互斥读写访问功能,两块共享通讯缓冲区主要指命令缓冲区和状态缓冲区,互斥读写访问功能主要通过命令缓冲区中的命令号和状态缓冲区中的状态反馈信号实现。其状态机如图6所示,状态机转换步骤为在读状态下,如果状态缓冲区中的状态反馈信号为0,并且命令缓冲区中的命令号为0,则进入写命令状态;在写命令状态下,如果状态缓冲区中的状态反馈信号为0,并且命令缓冲区中的命令号为1,则进入读命令/写状态的状态;在读命令/写状态的状态下,如果状态缓冲区中的状态反馈信号为1,并且命令缓冲区中的命令号为1,则说明本次命令传递成功,进入下一次读状态。所述读状态是指能够对状态缓冲区中的状态反馈信号进行读取,该动作为非互斥动作,任务控制器和运动控制器都可以执行;所述写命令是指任务控制器更新命令缓冲区中的命令信息,该动作仅由任务控制器执行。其发生条件是上一次命令传递过程执行完成,即状态缓冲区中的状态反馈信号等于命令缓冲区中的命令号;所述读命令/写状态是指运动控制器读取命令缓冲区中的命令信息,同时更新状态缓冲区中的状态反馈信号。其发生条件是任务控制器完成对命令缓冲区中的命令发送, 运动控制器未对该新命令进行操作;结合图4,图5可知,任务控制器和运动控制器执行周期不同,二者对两块共享通讯缓冲区的访问都是通过轮询的方式实现的。运动控制器的优先级高,不能被强占,在每个运动控制周期内共享通讯缓冲区只能由运动控制线程进行更新,因此在运动控制周期开始时访问两块共享通讯缓冲区1次;任务控制器的优先级低于运动控制器,其周期可能被运动控制周期中断并抢占,在每个任务控制周期内共享通讯缓冲区不是独占的。也就是说即使任务控制器不更新共享通讯缓冲区,在任务周期内该共享通讯缓冲区信息也是可变的, 因此在任务周期内多次轮询共享通讯缓冲区的内容,轮询次数由等待计数边界值控制。本实施例将本发明方法应用于蓝天硬件平台的开放式数控系统软件控制部分的命令分发处理中,其运行结果在三轴数控铣床上得到了验证。
硬件平台采用标准工业级IPC板卡,5X86-133MHz CPU作为系统控制器,由一块万门可编程FPGA器件构成4+1轴控制器,同时FPGA器件提供数控系统I/O等其他辅助电路。测试环境的主要技术参数如下驱动安川电机Σ II系列交流伺服电机;数控系统CPU5X86-133MHz、RAM-32M、FLASH-32M、1/0-32/24、编码器输入-4,D/ A输出-4、显示-10. 4”彩色液晶显示;主轴转速=24000r/min;进给率 F = 9000mm/min ;加减速方式直线加减速;运动控制周期2ms;可编程逻辑控制器周期2ms ;任务周期10ms;人机接口周期100ms ;单周期最多发送命令个数的极限值20本实施例测试程序GOl G91 F9000X0. 01 Y0. 01 Z0. 01X0. 01 Y0. 01 Z0. 01(共 70000 段)MO 2测试程序开始运行的同时,启动秒表计时。采用本发明方法前,测试用加工工件程序全部运行完成大约需要700秒,程序运行中速度低,且频繁波动。采用本发明方法后,测试用加工工件程序全部运行完成大约需要39秒,程序运行速度高,有速度波动。在该实施例运行过程中,单周期最多发送命令个数取其极限值20,因此加工过程中仍会出现运动控制队列中待加工命令较少的情况。本发明方法在实际应用中,可以根据数控系统的处理能力等,适当设定配置文件中单周期最多发送命令个数的极限值。通过实施例的运行对比可以得到如下结论1.本发明方法执行效率高。应用本发明方法可以在程序运行开始前设置保证数控系统运行平滑的最小的“前瞻”或“预处理”段数,减少了系统加工运行前的等待时间,在一定程度上提高了数控系统的执行效率。2.本发明方法执行速度快。应用本发明方法可以提高数控系统的命令发送速度, 解决了数控系统高速运行过程中的“数据饥饿”问题。3.本发明方法灵活性好。本发明方法提供了参数配置功能,用户可以通过系统配置文件更改命令多发机制中单周期最多发送命令个数的极限值,结合数控系统的任务控制周期和运动控制周期,获得最佳效果。
权利要求
1.一种用于数控系统的命令多发机制的实现方法,其特征在于包括以下步骤 在数控系统启动时,进行初始化操作,确定需要发送的命令个数;数控系统中的任务控制器在单个任务控制周期内根据命令个数多次发送命令信息,通过数控系统的两块共享通讯缓冲区传递给数控系统中的运动控制器;两块共享通讯缓冲区分别作为命令缓冲区和状态缓冲区;运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中。
2.按权利要求1所述的用于数控系统的命令多发机制的实现方法,其特征在于在单个任务控制周期内多次发送命令信息过程为对输入的工件程序进行解释,得到系统能够识别的命令形式;控制指令的加工顺序和加工逻辑,按上述命令形式对部分需要立即处理的命令进行处理;将处理后的命令存储到任务队列中,同时更新任务队列相关参数; 判断上一条命令的状态信息是否已经返回; 如果上一条命令的状态信息已经返回,清空等待计数; 从任务队列中取出一条命令,写入临时命令数组; 判断是否继续写命令;如果不继续写命令,则向运动控制器发送写终止命令; 任务控制器将临时命令数组中的内容写入命令缓冲区的命令数组中; 更新命令号,清空临时命令数组; 本周期任务控制结束,进入下一个任务控制周期。
3.按权利要求2所述的用于数控系统的命令多发机制的实现方法,其特征在于 如果继续写命令,则返回至从任务队列中取出一条命令步骤。
4.按权利要求2所述的用于数控系统的命令多发机制的实现方法,其特征在于 如果上一条命令的状态信息没有返回,则进行等待计数累加;判断等待计数是否超过系统设置的计数边界值;如果没有超过该计数边界值,则返回判断上一条命令的状态信息是否返回步骤。
5.按权利要求4所述的用于数控系统的命令多发机制的实现方法,其特征在于 如果超过该计数边界值,则系统产生报错信息;本周期任务控制结束,进入下一个任务控制周期。
6.按权利要求1所述的用于数控系统的命令多发机制的实现方法,其特征在于运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中,其过程为判断运动控制器是否能够读取命令;如果能够读取命令,分发命令缓冲区的命令数组中的命令到命令队列中; 更新状态缓冲区中的状态信息; 执行运动控制器中的加工控制功能。
7.按权利要求6所述的用于数控系统的命令多发机制的实现方法,其特征在于 如果运动控制器不能够读取命令,则直接执行加工控制功能;本周期运动控制结束,进入下一个运动控制周期。
全文摘要
本发明涉及一种用于数控系统的命令多发机制的实现方法,包括以下步骤在数控系统启动时,进行初始化操作,确定需要发送的命令个数;数控系统中的任务控制器在单个任务控制周期内根据命令个数多次发送命令信息,通过数控系统的两块共享通讯缓冲区传递给数控系统中的运动控制器;两块共享通讯缓冲区分别作为命令缓冲区和状态缓冲区;运动控制器在单个运动控制周期内,接收多条命令信息,存储于运动控制队列中。应用本发明方法可以在程序运行开始前设置保证数控系统运行平滑的最小的“前瞻”或“预处理”段数,减少了数控系统加工运行前的等待时间,在一定程度上提高了数控系统的执行效率,解决了数控系统高速运行过程中的“数据饥饿”问题。
文档编号G05B19/4093GK102540973SQ20101058117
公开日2012年7月4日 申请日期2010年12月9日 优先权日2010年12月9日
发明者刘峰, 刘建俊, 林浒, 王品, 盖荣丽, 黄艳 申请人:中国科学院沈阳计算技术研究所有限公司, 沈阳高精数控技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1