当前位置: 首页 » 数控技术 » 综合技术 » 正文

CNC装置的软件结构


放大字体  缩小字体 发布日期:2018-02-13

normal style="TEXT-INDENT: 21.6pt">CNC装置的软件是一个典型又复杂的实时系统,它的许多控制任务,如零件程序的输入与译码、刀具半径补偿、插补运算、位置控制以及精度补偿都是由软件实现的。从逻辑上讲,这些任务可看成一个个功能模块,模块之间存在着偶合关系;从时间上讲,各功能模块之间存在一个时序配合问题。在设计CNC装置的软件时,如何组织和协调这些这些功能模块,使之满足一定的时序和逻辑关系,就是CNC装置软件结构要考虑的问题。

一、CNC装置软件和硬件的功能界面

normal style="TEXT-INDENT: 22pt">CNC装置是由软件和硬件组成的,硬件为软件的运行提供支持环境。在信息处理方面,软件与硬件在逻辑上是等价的,即硬件能完成的功能从理论上讲也可以由软件来完成。但,硬件和软件在实现这些功能时各有不同的特点:

normal style="TEXT-INDENT: 22pt">硬件处理速度快,但灵活性差,实现复杂控制的功能困难。

normal style="TEXT-INDENT: 22pt">软件设计灵活,适应性强,但处理速度相对较慢。

normal style="TEXT-INDENT: 22pt">如何确定合理确定软硬件的功能分担是CNC装置结构设计的重要任务。这就是所谓软件和硬件的功能界面划分的概念。划分准则是系统的性价比。

normal style="TEXT-INDENT: 22pt" align=center>

normal style="TEXT-INDENT: 22pt" align=center>图1  CNC软件系统功能框图

normal style="TEXT-INDENT: 22pt">图1是CNC装置功能界面的几种划分方法。

normal style="TEXT-INDENT: 22pt">这几种功能界面是CNC装置不同时期不同产品的划分。其中后面两种是现在的CNC系统常用的方案。反映出软件所承担的任务越来越多,硬件承担的任务越来越少。一是因为计算机技术的发展,计算机运算处理能力不断增强,软件的运行效率大大提高,这为用软件实现数控功能提供了技术支持。二是数控技术的发展,对数控功能的要求越来越高,若用软件来实现这些功能,不仅结构复杂,而且柔性差,甚至不可能实现。而用软件实现则具有较大的灵活性,且能方便实现较复杂的处理和运算。因而,用相对较少且标准化程度较高的硬件,配以功能丰富的软件模块CNC系统是当今数控技术的发展趋势。

二、CNC装置的数据转换流程

normal style="TEXT-INDENT: 21.6pt">CNC系统软件的主要任务之一是如何将零件加工程序表达的加工信息,变换成各进给轴的位移指令、主轴转速指令和辅助动作指令。其数据转换的过程如图2所示。

normal style="TEXT-INDENT: 21.6pt" align=center>

normal style="TEXT-INDENT: 21.6pt" align=center>图2  共享存储器结构CNC系统硬件结构

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l87 level1 lfo38">(一)      译码(解释)

译码程序的主要功能是将文本格式(ASCII码)表达的零件加工程序,以程序段为单位转换成后续程序所要求的数据结构(格式)。该数据结构用来描述一个程序段解释后的数据信息。包括:X、Y、Z、…等坐标值;进给速度;主轴转速;G代码;M代码;刀具号;子程序处理和循环调用处理等数据或标志的存放顺序和格式。一个译码缓冲区数据结构的例子如下:

Struct PROG_BUFFER

       Char buf_state;  //指定缓冲区的状态,0表示缓冲区为空;1表示缓冲区准备好。

        int block_num;  //以BCD码的形式存放本段的程序段号。

      double COOD[20];  //以二进制的形式存放X、Y、Z、I、J、K、R、A、B等尺寸指令的

                          数值,单位为um。

              int F,S;  //以二进制的形式存放进给速度F(mm/min)和主轴转速S(r/min)。

             char G0;  //以标志形式存放G指令。例如:

normal style="TEXT-INDENT: 1pt">D7

D6

D5

D4

D3

D2

D1

D0

                                G00 0:无该指令;1:有该指令。

                                    G01G02G03G33;

                                    G90/G91 0:G90; 1: G91

                               char G1;  //根据G指令的个数设置字符变量的个数。

                         char M0;  //以标志的形式存放M指令。存放形式同G代码。

                               char M1;  //根据M指令的个数设置字符变量的个数。

                                char T;  //以BCD码的形式存放本段换刀的刀具号。

                            Char D;  //以BCD码的形式存放刀具补偿的刀具半径值。

在程序中一般有由若干个由这种结构组成的程序缓冲区组,当前程序段译码后的数据信息存入缓冲区组中空闲的一个。后续程序从该缓冲区中获取数据信息进行工作。

下面以一个程序段为例来简要说明译码过程:

     Nvalue="6" UnitName="g" w:st="on">06 Gvalue="90" UnitName="g" w:st="on">90 G01 X200 Yvalue="300" UnitName="F" w:st="on">300 F200 ;

     

译码程序以程序段为单位进行解释,解释中,从零件程序存储区中逐一读出指令:

读出:N06     解释:将06 转换为BCD码—00000110BCD存入译码缓冲区中的 “block_num”

      G90      将译码缓冲区中的“Gvalue="0" UnitName="”" w:st="on">0”的“Dvalue="6" UnitName="”" w:st="on">6”位置“value="0" UnitName="”" w:st="on">0”

      G01      将译码缓冲区中的“Gvalue="0" UnitName="”" w:st="on">0”的“Dvalue="1" UnitName="”" w:st="on">1”位置“value="1" UnitName="”" w:st="on">1”

     X200      将200转换为二进制码11001000B存入译码缓冲区中的“COOR[1]”

     Y300      将300转换为二进制码100101100B存入译码缓冲区中的“COOR[2]”

     F200      将200转换为二进制码11001000B存入译码缓冲区中的“F”

      ;       程序段读完,译码结束。

进入下一程序段的解释工作,直至整个缓冲区组被填满,然后,译码程序进入休眠状态。当缓冲区组中有若干个缓冲区置空,系统将再次激活译码程序,按此方式重复进行,直到整个加工程序解释完毕(读到M02或M30)为止。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l87 level1 lfo38">(二)      刀补处理(计算刀具中心轨迹)

将零件轮廓变换为刀具中心轨迹,并进行相应的坐标变换,主要工作是:

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l82 level1 lfo39">(1)根据绝对坐标(G90)或相对坐标(G91)计算零件轮廓的终点坐标值;

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l82 level1 lfo39">(2)根据刀具半径、刀具半径补偿的方向(G41/G42)和零件轮廓的终点坐标值,计算刀具中心轨迹的终点坐标值。

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l82 level1 lfo39">(3)根据本段和前段的关系,进行段间连续处理。

normal style="TEXT-INDENT: 22pt">经刀补处理程序转换的数据存放在刀补缓冲区中,以供后续程序之用。刀补缓冲区与译码缓冲区的结构相似。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l87 level1 lfo38">(三)      速度预处理

主要功能是根据加工程序给定的进给速度,计算在每个插补周期内的合成移动量。供插补程序使用。主要完成一下几步计算:

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l21 level1 lfo40">(1)计算本段总位移量

直线:计算合成位移量L

圆弧:计算总角位移量

供插补程序判断减速起点或终点判断之用。

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l21 level1 lfo40">(2)计算每个插补周期内的合成进给量

         ΔL=FΔt/60    (μm)

式中,F—进给速度值(mm/min);

      Δt—数控系统的插补周期(ms)。

经速度处理程序转换的数据存放在插补缓冲区中,以供插补程序之用。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l87 level1 lfo38">(四)      插补计算

以系统规定的插补周期Δt定时运行,主要功能是:

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l23 level1 lfo41">(1)根据操作面板上“进给修调”开关的设定值。计算本次插补周期的实际合成位移量:

         ΔL1=ΔL*修调值

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l23 level1 lfo41">(2)将ΔL1按插补的线形和本插补点所在的位置分解到各个进给轴,作为各进给轴的位置控制指令(Δxi,Δyi……)。

经插补计算后的数据存放在运行缓冲区中,以供位置控制程序之用。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l87 level1 lfo38">(五)      位置控制

    位置控制数据转换流程如图3所示。主要进行各进给轴跟随误差(Δx3,Δy3)的计算,并进行调节处理,输出速度控制指令(vx,vy)。

normal align=center>

normal align=center>图3  CNC装置数据转换流程示意图

    位置控制完成一下几步计算:

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l44 level1 lfo42">(1)计算新的位置指令坐标值:

       x1=x1+Δx1

       y1=y1+Δy1

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l44 level1 lfo42">(2)计算新的位置实际坐标值:

       x2=x2+Δx2

           y2新=y2旧+Δy2

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l44 level1 lfo42">(3)计算跟随误差:

       Δx3=x1-x2

       Δy3=y1-y2

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l44 level1 lfo42">(4)计算速度指令值:

       vx=f(Δx3);vy=f(Δy3

这里,f(.)是位置调节环的控制算法。

三、CNC装置的软件系统特点

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l59 level1 lfo43">(一)      多任务性与并行处理技术

    任务—可并行执行的程序在一个数据集合上的运行过程。CNC的功能可定义CNC的任务。

normal style="MARGIN-LEFT: 16.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 16.2pt; mso-list: l81 level1 lfo44">1.   CNC装置的多任务性

normal style="TEXT-INDENT: 21.6pt">CNC的任务:管理任务:程序管理、显示、诊断、人机交互、……

normal style="TEXT-INDENT: 21.6pt">           控制任务:译码、刀具补偿、速度预处理、插补运算、位置控制、……

normal style="TEXT-INDENT: 21.6pt">上述任务不是顺序执行的,而需要多个任务并行处理,如:

normal style="MARGIN-LEFT: 48pt; TEXT-INDENT: -26.4pt; tab-stops: list 48.0pt; mso-list: l55 level1 lfo45">(1)当机床正在加工时(执行控制任务),CRT要实时显示加工状态(管理任务)。控制与管理并行。

normal style="MARGIN-LEFT: 48pt; TEXT-INDENT: -26.4pt; tab-stops: list 48.0pt; mso-list: l55 level1 lfo45">(2)当加工程序送入系统(输入)时,CRT实时显示输入内容(显示)。管理任务之间的并行。

normal style="MARGIN-LEFT: 48pt; TEXT-INDENT: -26.4pt; tab-stops: list 48.0pt; mso-list: l55 level1 lfo45">(3)为了保证加工的连续性,译码、刀具补偿、速度处理、插补运算、位置控制必须同时不间断的执行。控制任务之间的并行。

normal style="MARGIN-LEFT: 16.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 16.2pt; mso-list: l81 level1 lfo44">2.   基于并行处理的多任务调度技术

normal style="TEXT-INDENT: 17.2pt"> 并行处理是指软件系统在同一时刻或同一时间间隔内完成两个或两个以上任务处理的方法。采用并行处理技术的目的是为了提高CNC装置资源的利用率和系统处理速度。并行处理的实现方式与CNC系统硬件结构密切相关,常采用以下方法:

    (1)资源分时共享:对单CPU装置。采用“分时”来实现多任务的并行处理。其方法是:在一定的时间长度(常称时间片)内,根据各任务的实时性要求程度,规定它们CPU的时间,是它们按规定的顺序和规则分时共享系统的资源。

normal style="MARGIN-LEFT: 16.2pt"> 解决各任务CPU(资源)时间的分配原则。主要有两个问题:

normal style="MARGIN-LEFT: 16.2pt">其一,各任务何时占用CPU,即任务的优先级分配问题。

normal style="MARGIN-LEFT: 16.2pt">其二,各任务占用CPU的时间长度,即时间片的分配问题。

图4  各任务占用CPU时间示意图

normal style="TEXT-INDENT: 17.2pt">单CPU的CNC装置中,通常采用循环调度和优先抢占调度相结合的方法来解决上述问题的。图4是一个典型的多任务分时共享CPU的时间分配图。

normal style="TEXT-INDENT: 17.2pt">循环调度:若干个任务(显示、译码、刀补、I/O、……)在一个时间片内顺序轮流执行;

normal style="TEXT-INDENT: 17.2pt">优先抢占调度:将任务按实时性要求的程度,分为不同的优先级,优先级别高的任务优先执行(优先),优先级别高的任务可随时中断优先级别底的任务的运行(抢占)。

normal style="TEXT-INDENT: 17.2pt">假定某CNC装置软件将其功能仅分为三个任务:位置控制、插补运算和背景程序(包含若干任务循环调度运行)。位置控制优先级别最高,规定4ms执行一次,由定时中断激活;插补运算次之,规定8ms执行一次,由定时中断激活;插补背景程序最低,当位置控制和插补运算都不执行时执行。运行过程是:在初始化后,自动进入背景程序,轮流反复执行各子任务。当位置控制和插补运算需要执行时,随时中断循环调度中运行的程序(背景程序),位置控制可随时中断插补运算。各任务运行占用CPU时间如图4所示。

normal style="TEXT-INDENT: 17.2pt">可以看出:①在任何时刻只有一个任务占用CPU;②从一个时间片(8或16ms)来看,CPU并行执行了三个任务。即资源分时共享的并行处理是宏观意义上的,微观上还是各个任务顺序执行的。

normal style="MARGIN-LEFT: 47.4pt; TEXT-INDENT: -26.4pt; tab-stops: list 47.4pt; mso-list: l23 level1 lfo41">(3)并发处理和流水处理:在多CPU结构的CNC装置中,根据各任务间的关联程度,可采用两种策略实现多任务并行处理。

normal style="TEXT-INDENT: 21pt">其一,如果任务之间的关联程度不高。则将各任务分别安排一个CPU,使其同时执行,这就是所谓的“并发处理”;

normal style="TEXT-INDENT: 22pt">其二,如果各任务之间的关联程度较高,即一个任务的输出是另一任务的输入,则采用流水处理的方法。它是利用重复的资源,将一个大任务分成若干个彼此关联的子任务(如将插补准备分为:译码、刀补处理、速度预处理三个子任务),然后按一定顺序安排每个资源执行一个任务。如:CPU1执行译码、CPU2执行刀补处理、CPU3执行速度预处理,t1:CPU1执行第一个程序段的译码;t2:CPU2执行第一个程序段的刀补处理,同时CPU1执行第二个程序段的译码;t3:CPU3执行第一个程序段的速度预处理并输出第一个程序段插补预处理后的数据,同时,CPU2执行第二个程序段的刀补处理,CPU1执行第三个程序段的译码,t4:CPU3执行第二个程序段的速度预处理并输出第二个程序段插补预处理后的数据,同时,CPU2执行第三个程序段的刀补处理,CPU1执行第四个程序段的译码;……。这个处理过程与生产线上分不同工序加工零件的流水作业一样。可以大大缩短两个程序段之间输出的间隔时间。可以看出,在任何时刻均有两个或两个以上的任务在并发执行。

normal style="TEXT-INDENT: 22pt">流水处理的关键是时间重叠,以资源重复为代价换取时间上的重叠,以空间复杂性换取时间上的快速性。

(二)实时性和优先抢占调度机制

实时性:指某任务的执行有严格的时间要求,即必须在系统的规定时间内完成,否则将导致执行结果错误和系统故障。

normal style="MARGIN-LEFT: 25.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 25.2pt; mso-list: l63 level1 lfo46">1. 实时性任务的分类

normal style="MARGIN-LEFT: 16.2pt">从各任务对实时性要求的角度看,基本上可分为:

normal style="MARGIN-LEFT: 16.2pt">强实时性任务:

normal style="MARGIN-LEFT: 42.6pt; TEXT-INDENT: -26.4pt; tab-stops: list 42.6pt; mso-list: l42 level1 lfo47">(1)实时突发性任务:特点是任务的发生具有随机性和突发性,是一种异步中断事件,往往有很强的实时性要求。如:故障中断(急停、机械限位、硬件故障)、机床PLC中断。

normal style="MARGIN-LEFT: 42.6pt; TEXT-INDENT: -26.4pt; tab-stops: list 42.6pt; mso-list: l42 level1 lfo47">(2)实时周期性任务:任务是按一定的事件间隔发生的。如:插补运算、位置处理。为保证加工精度和加工过程的连续性,这类任务的实时性是关键。这类任务,除系统故障外,不允许被其他任务中断。

normal style="MARGIN-LEFT: 16.2pt">弱实时性任务:任务的实时性相对较弱,只需要在某一段时间内得以运行即可。在系统设计时,安排在背景程序中或根据重要性设置为级别较低的优先级由调度程序进行合理的调度。如:显示、加工程序编辑、插补预处理等。

normal style="MARGIN-LEFT: 25.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 25.2pt; mso-list: l63 level1 lfo46">2. 优先抢占调度机制

normal style="TEXT-INDENT: 16.2pt">为了满足CNC装置实时任务的要求,系统的调度机制必须具有能根据外界的实时信息以足够快的速度进行任务调度的能力。优先抢占调度机制使是系统具有这一能力的调度技术。它是基于实时中断技术的任务调度机制。中断技术是计算机响应外部事件的一种处理技术,特点是能按任务的重要程度和轻重缓急对其进行响应,而CPU也不必为其开销过多的时间。

normal style="TEXT-INDENT: 16.2pt">优先抢占调度机制有两个功能:

normal style="TEXT-INDENT: 16.2pt">优先调度:在CPU空闲时,若同时有多个任务请求执行,优先级别高的任务将优先执行。

normal style="TEXT-INDENT: 16.2pt">抢占方式:在CPU正在执行某任务时,若另一优先级更高的任务请求执行,CPU将立即终止正在执行的任务,转而响应优先级别更高的任务的请求。

normal style="TEXT-INDENT: 16.2pt">优先抢占调度机制是由硬件和软件共同实现的,硬件主要产生中断请求信号,由提供中断功能的芯片和电路组成(中断管理芯片:8259;定时计数器:8263、8254)。软件主要完成:硬件芯片的初始化、任务优先级定义方式、任务切换处理(断点的保护与恢复、中断向量的保持与恢复)等。

四、CNC装置软件结构模式

结构模式:软件的组织管理方式,即任务的划分方式、任务调度机制、任务间的信息交换机制、系统集成方法。

解决的问题是:如何协调各任务的执行,使满足一定的时序配合要求和逻辑关系,以满足CNC装置的各种控制要求。

结构模式有:

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l64 level1 lfo48">(一)      前后台型结构模式

    任务划分方式:

        前台程序:强实时性任务,包括:插补运算、位置控制、故障诊断等任务;

        后台程序:弱实时性任务,包括:显示,加工程序的编辑和管理、系统的输入和输出、插补预处理等。

任务调度机制:前台程序为中断服务程序,采用优先抢占调度机制。

              后台程序为循环运行程序,采用顺序调度机制。

    在运行中,后台程序不断地定时被前台中断程序所打断。

信息交换:通过缓冲区实现。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l64 level1 lfo48">(二)      中断型结构模式

任务划分方式:除初始化程序外,所有任务按实时性强弱,分别划分到不同优先级别的中断服务程序中。

任务调度机制:采用优先抢占调度机制,由中断管理系统对各级中断服务程序进行管理。

信息交换:通过缓冲区实现。

整个软件是一个大的中断管理系统。

系统实时性好,但模块关系复杂、偶合度大、不利于系统的维护与扩充。

normal style="MARGIN-LEFT: 31.8pt; TEXT-INDENT: -31.8pt; tab-stops: list 31.8pt; mso-list: l64 level1 lfo48">(三)      基于实时操作系统的结构模式

实时操作系统(PTOS)是操作系统的一个分支,它除具有通用操作系统的功能外,还具有任务管理、多种实时任务调度机制(优先抢占调度、时间片轮转调度等)、任务间的通信机制等功能。CNC软件完全可以在实时操作系统的基础上进行开发。形成基于实时操作系统的结构模式,其优点有:

normal style="MARGIN-LEFT: 37.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 37.2pt; mso-list: l89 level1 lfo49">1. 弱化功能模块间的偶合关系

normal style="MARGIN-LEFT: 37.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 37.2pt; mso-list: l89 level1 lfo49">2. 系统的开放性和可维护性好

normal style="MARGIN-LEFT: 37.2pt; TEXT-INDENT: -16.2pt; tab-stops: list 37.2pt; mso-list: l89 level1 lfo49">3. 减少系统开发的工作量

 
 
[ 免费发文

 

 
Powered by DESTOON