3 数控系统任务的划分
本数控系统的任务分为实时任务及非实时任务两种。由于系统的译码、刀具半径补偿等工作是在加工开始前完成的,并且系统所需要的当前零件的加工数据将会在加工运动之前一次或分次成块地写入到下位机的两块存储量较大的内存区域当中,所以,系统的任务划分与一般的系统是不同的。上位机的非实时任务有:参数输入任务、命令输人任务、程序解释及刀具半径补偿任务、程序预处理任务、文件服务任务、系统帮助任务、故障诊断任务及输人事件处理任务。这些任务的产生及处理是非实时的,也是随机的。上位机的实时任务有:控制参数显示任务、系统设置任务、加工动态显示任务、加工参数显示任务、加工程序显示任务及加工数据送人任务。这些任务主要是由系统定义一系列的不同任务优先级实现,对访问有次序的任务采取制约机制,限制运行次序及访问权限。
4 系统模块的划分
上位机的控制系统共分为系统控制、界面、译码、刀补、仿真、系统设置、故障诊断、上下位机通讯、帮助等几个模块。模块是以系统模块总体的透明性、独立性、可维护性、可扩展性为原则设计和开发的。
系统控制模块的主要功能是协调各模块的运行次序和运行的优先级别,它是系统上位机控制的核心。在该系统中实现了主界面、手工移动界面、定程移动界面、极限移动界面、程序编辑界面、多件加工界面、自动加工界面、系统设置界面及诊断界面。实现了各界面内部切换功能、相应工具条的显示隐藏及对应功能的调用。
译码模块是对加工数据进行处理的第一个模块,处理的是标准的G代码,该模块中集成了对数控代码的读入、错误检查、加工轨迹参数的读取与规范、控制参数的读取与存储等功能。该模块中的加工及控制信息均存在于一个全局的模板中,便于后继的处理及访问。该模块主要是借用原有的c语言实现的译码功能,通过LabVIEw与Vc的动态调用功能,将数据传送给已有的程序,程序分析和数据分离后将所产生的数据传递给系统。
刀补模块采用c功能的刀具半径补偿算法,c刀补是基于矢量的计算原理的,所以能够很好地解决工件轮廓加工过程中的两程序段间的转接过渡问题。这种补偿技术是通过计算和判断转接类型(伸长型、插入型、缩短型)、曲线连接形式及刀补状态,再加上译码的数据来实现数据的处理的。刀具半径补偿模块同样是由已有的Vc程序实现的。
仿真模块是在不启动电机的情况下而实现加工过程模拟的绘图模块。该模块是由具体绘图函数、尺寸计算函数以及插补运算函数组成的。
系统设置中实现对系统一些全局参数的设置,其中包括系统运行需要的参数和系统调试需要的参数两类,这两类参数的正确设置是保证系统的正常运行的条件。
监控诊断包含了对系统全部硬件端口、传感器和电机的检测功能,另外还具有一些系统维护的必要软件工具,如杀毒程序等。
5 系统功能的确定
在已有数控系统的设计方案的基础上,该数控系统设定了手动控制、程序编辑、自动加工、零件选项、套料、系统设置、监控诊断机系统帮助等功能。手动控制中实现了点动、连续移动、定长移动、回零等功能,用于系统定位及实现简单加工。程序编辑中实现了加工程序的打开、新建、编辑、存储及图形预显等功能用于对G代码文件的编辑处理。
自动加工功能是对由程序编辑处理后的G代码文件实现加工,它也包含了一些对主轴的控制,如停止加工、暂停加工、断点记忆功能等。
零件选项主要是针对经程序编辑处理后文件的图形进行排列和转动,并可以形成新的G代码文件。套料功能中实现了不同零件问的组合、拆分、相对转动、排列和切割顺序的定义等。
系统设置及监控诊断功能在上面已有论述,在这里将不再重复。
6 数据流程分析
本数控系统和一般的数控系统一样,必须完成译码(加工代码解释)、代码预处理(刀补等)、插补准备、插补等几个基本过程来实现加工。由于该系统的插补功能由运动控制卡的硬件电路来完成,所以上位机软件系统只需要为下位机提供相应的加工数据即可。
下面简要说明一下其数据的流程:零件的加工程序在经过了NC程序准备后,以ISO标准格式放入了NC程序缓冲区中,首先经过Nc程序的译码操作,将代码中的加工及控制信息提取出来,以约定的格式存放于预刀补缓冲存储区Bs中;刀补后的数据放入刀补工作缓冲区AS中,然后将As的内容置为可直接用于下位机读取的数据后放入刀补输出缓冲区OS中,下位机会循环检测该区域的数据是否准备好,准备好后读取数据控制电机及相关设备运行。在没有刀补的情况下,将BS区中的轨迹信息经过简单处理后直接放入刀补工作缓冲区AS中。
由于系统采用了C型刀具半径补偿算法,所以在有刀补处理的情况下,只用一个BS缓冲区不能够满足实际刀具中、心轨迹计算的需要,因此在BS区和AS区之间设立刀补缓冲区CS,由三个数据缓存共同实现刀补的计算。
7 数控软件结构分析
上位机的控制系统共分为系统控制模块、人机界面、手动控制模块、程序编辑模块、自动加工、零件选项、系统设置、诊断、图形库、译码、刀补、仿真几个模块。系统模块的构架如图2所示。
系统控制模块是系统的调度核心模块,该模块每循环一次就对其循环次数进行查询,根据循环次序所反映的信息,轮流调用其所控制的各个子任务;而不受它控制的非实时任务则作为并行的子任务运行。其实现是利用了LabVIEw中的事件和事件等待函数来控制任务的激活和挂起。系统每次遇到等待函数将是当前的子任务放弃目前的CPU的占用,从而实现任务的轮流调用。
译码模块处理的是标准的G代码,该模块中集成了对数控代码的读入、错误检查、加工轨迹参数的读取与规范、控制参数的读取与存储等功能。该模块中的加工及控制信息均存在于一个全局的模板中,便于后继的处理及访问。
刀补模块采用c功能的刀具半径补偿算法,c刀补是基于矢量的计算原理的,所以能够很好地解决工件轮廓加工过程中的两程序段间的转接过渡问题。仿真模块主要由LabVIEw编程系统中的绘图函数实现,由于实现二维绘图并不是十分困难,所以该编程环境的图形处理功能不强的缺点对于本系统的开发没有太多的妨碍。