2.4 计算机数控系统软件结构
2.4.1 计算机数控系统软件结构特点
CNC装置是一个机床计算机控制系统,其数控系统软件必须完成管理和控制两种不同性质的任务。数控系统的基本任务是进行机床的自动加工控制,其核心控制模块是预处理模块、插补模块、位置控制模块和PLC控制模块等。数控系统是实现CNC系统协调工作的主体,它管理着数控加工程序从输入、预处理到插补计算、位置控制和输入/输出控制的全过程,并管理着系统参数的设置,刀具参数的设置,数控加工程序的编辑,数据的输入/输出,以及故障诊断、通信等功能的管理。CNC装置的系统软件具有多任务性和实时性两大特点。CNC装置是典型的实时控制系统。CNC装置的系统软件可以看成是一个专用的实时操作系统。
2.4.2 多任务性与并行处理
2.4.2.1 CNC装置的多任务性
CNC中的任务就是可并行执行的程序在一个数据集合上运行的过程。CNC的任务通常可以分为两类:管理任务和控制任务。管理任务主要承担系统资源的合理安排和系统各个子任务间的调度,负责系统的管理、显示、诊断。而控制任务完成CNC的基本功能译码、刀具补偿、速度预处理、插补运算、位置控制等任务。CNC装置在工作中,这些任务不是按顺序执行的,而往往需要多任务并行处理。例如:当机床正在执行加工任务时(执行控制任务),CRT要实时显示加工状态(管理任务),这是控制任务与管理任务的并行;在管理任务中也是如此,当用户将程序输入系统时,CRT便实时显示输入的内容;在控制任务中更是如此,为了保证加工的连续性,刀具补偿、速度处理、插补运算以及位置控制必须不间断地执行。
2.4.2.2 基于并行处理的多任务调度技术
并行处理是指软件系统在同一时刻或同一个时间间隔内完成两个或多个任务的处理方法。采用并行处理技术的目的就是为了提高CNC装置资源的利用率和系统的处理速度。并行处理的实现方式与CNC系统的硬件结构密切相关(当然随着全软件型的开放式数控系统出现,CNC装置对硬件系统的依赖性正在逐渐降低)。在CNC系统中常采用以下方法。
(1)资源分时共享
对于单CNC装置,采用“分时”来实现多任务的并行处理。在一定的时间间隔(通常称为时间片),根据系统中各任务实时性要求程度,规定它们占用CPU的时间,使它们按照规定的顺序和规则来分时共享系统的资源。因此,在采用“资源分时共享”并行处理技术CNC装置中,需要解决两个问题:一是各任务何时占用CPU,也就是各个任务优先级的分配问题;二是各个任务占用CPU时间的长度,也就是时间片的分配问题。
一般来说,在单CPU的CNC装置中,通常采用循环调度和优先抢占调度结合的方法来解决以上问题。图2-33、图2-34是一个典型CNC装置多任务分时共享CPU的时间分配图。
图2-33 各个任务模块之间的关系
图2-34 各任务模块占用CPU时间示意图
为了简单,我们假设CNC装置软件的功能只有三个任务:位置控制模块、插补运算模块以及背景程序模块,如图2-33所示。这三个程序优先级逐渐降低,位置控制模块优先级别最高,其次是插补运算模块,最后是背景程序(主要包括一些实时性要求不高的子任务)。系统规定:位置控制任务每4ms执行一次,插补运算8ms执行一次,两个任务都是由定时中断激活。当位置控制与插补运算都不执行时,便执行背景程序,正因为如此,才称其为“背景”程序。系统的运作是:在完成初始化后,自动进入背景程序,背景程序采用循环调度方式,轮流反复执行各个子任务,在背景程序的运行过程中,不断地被位置控制模块和插补运算模块等优先级别高的任务所中断,中断后保存现场,等到优先级别高的模块运行完之后,恢复现场,接着执行背景循环程序。同样,位置控制也可中断插补运算的运行,因为位置控制的优先级高于插补运算。
可以看出:在任何时刻,只有一个任务占用CPU;从一个时间片(8ms或16ms)来看,CPU并行执行了三个任务。即资源分时共享的并行处理是宏观意义上的,微观上还是各个任务顺序执行的。
(2)并发处理和流水处理
在多CPU结构的CNC装置中,根据各任务间的关联程度,可采用以下两种策略来提高系统处理速度。其一,如果任务之间的关联程度不高,则将各任务分别安排一个CPU,使其同时执行,即所谓的“并发处理”;其二,如果各任务之间的关联程度较高,即一个任务的输出是另一任务的输入,则可采用流水处理的方法来实现并行处理。流水处理的技术是利用重复的资源(CPU),将一个大任务分成若干个彼此关联的子任务(任务的分法与资源重复的多少有关),然后按一定顺序安排每个资源执行一个任务。这个处理过程与生产线上分不同工序加工零件的流水作业一样。例如:CPU1执行译码、CPU2执行刀补处理、CPU3执行速度预处理,t1时间CPU1执行第一个程序段的译码;t2时间CPU2执行第一个程序段的刀补处理,同时CPU1执行第二个程序段的译码;t3时间CPU3执行第一个程序段的速度预处理并输出第一个程序段插补预处理后的数据,同时,CPU2执行第二个程序段的刀补处理,CPU1执行第三个程序段的译码,t4时间CPU3执行第二个程序段的速度预处理并输出第二个程序段插补预处理后的数据,同时,CPU2执行第三个程序段的刀补处理,CPU1执行第四个程序段的译码……可以大大缩短两个程序段之间输出的间隔时间。可以看出,在任何时刻均有两个或两个以上的任务在并发执行。
流水处理的关键是时间重叠,以资源重复为代价换取时间上的重叠,以空间复杂性换取时间上的快速性。
当CNC装置在自动加工工作方式时,其数据的转换过程将由零件程序输入、插补准备、插补、位置控制四个子过程组成。如果每个子过程的处理时间分别为Δt1、Δt2、Δt3、Δt4,那么一个零件程序段的数据转换时间将是t=Δt1+Δt2+Δt3+Δt4。如果以顺序方式处理每个零件的程序段,则第一个零件程序段处理完以后再处理第二个程序段,依次类推。图2-35表示了这种顺序处理时的时间与空间的关系。从图中可以看出,两个程序段的输出之间将有一个时间为t的间隔。这种时间间隔反映在电动机上就是电动机的时停时转,反映在刀具上就是刀具的时走时停,这种情况在加工工艺上是不允许的。
消除这种间隔的方法是用时间重叠流水处理技术。采用流水处理后的时间与空间关系如图2-35所示。
图2-35 时间重叠流水处理
2.4.3 实时性与优先抢占机制
(1)实时性任务的分类
实时性是指某任务的执行有严格的时间要求,即必须在系统的规定时间内完成,否则将导致执行结果错误和系统故障。
如前所述,CNC装置是一个专用的实时计算机系统。该系统的各任务或强或弱都具有实时性要求。从各任务对实时性要求的角度看,基本上可分为强实时性任务和弱实时性任务,强实时性任务又分为实时突发性任务和实时周期性任务。
①实时突发性任务 这类任务的特点是任务的发生具有随机性和突发性,是一种异步中断事件,往往具有很强的实时性要求。主要包括故障中断(急停、机械限位、硬件故障)、机床PLC中断等。
②实时周期性任务 这类任务是精确地按一定的事件间隔发生的。主要包括加工过程中的插补运算、位置处理等任务。为保证加工精度和加工过程的连续性,这类任务的实时性是关键。这类任务,除系统故障外,不允许被其他任务中断。
③弱实时性任务 任务的实时性相对较弱,只需要保证在某一段时间内得以运行即可。在系统设计时,或被安排在背景程序中或根据重要性设置为级别较低的优先级由调度程序进行合理的调度。如显示、加工程序编辑、插补预处理、加工轨迹的动静态仿真以及加工过程的动态显示等。
(2)优先抢占调度机制
为了满足CNC装置实时任务的要求,系统的调度机制必须具有能根据外界的实时信息以足够快的速度(在系统规定的时间内)进行任务调度的能力。优先抢占调度机制是使系统具有这一能力的调度技术。它是基于实时中断技术的任务调度机制。中断技术是计算机响应外部事件的一种处理技术,其特点是能按任务的重要程度和轻重缓急对其进行响应,而CPU也不必为其开销过多的时间。
优先抢占调度机制有两个功能:其一是优先调度,在CPU空闲时,若同时有多个任务请求执行,优先级别高的任务将优先执行,例如,若位置控制与插补运算同时请求执行,则位置控制的要求将首先得到满足。其二是抢占方式,在CPU正在执行某任务时,若另一优先级更高的任务请求执行,CPU将立即终止正在执行的任务,转而响应优先级别更高的任务的请求,例如,当CPU正在执行插补运算时,此时位置控制任务请求执行,CPU首先将正在执行的任务现场保护起来(断点保护),然后转入位置控制任务的执行,执行完毕后,再恢复到中断前的断点处,继续执行插补任务。
优先抢占调度机制是由硬件和软件共同实现的,硬件主要产生中断请求信号,由提供中断功能的芯片和电路组成。如中断管理芯片(8259或功能相同的芯片)、定时计数器(8263、8254等)等。软件主要完成对硬件芯片的初始化、任务优先级定义方式、任务切换处理(断点的保护与恢复、中断向量的保持与恢复)等。
需要说明的是:CNC系统中任务的调度机制除优先抢占调度外,往往还同时采用时间片轮换调度和非抢占优先调度。
2.4.4 典型的数控系统软件结构模式
2.4.4.1 CNC软件结构概述
CNC系统的软件是为完成CNC系统的各项功能而专门设计和编制的,是数控加工系统的一种专用软件,又称为系统软件(系统程序)。
在CNC系统中,软件和硬件在逻辑上是等价的,即由硬件完成的工作原则上也可以由软件来完成。但是它们各有特点:硬件处理速度快,造价相对较高,适应性差;软件设计灵活、适应性强,但是处理速度慢。因此,CNC系统中软、硬件的分配比例是由性能价格比决定的。
CNC系统中实时性要求最高的任务就是插补和位置控制,即在一个采样周期内必须完成控制策略的计算,而且还要留有一定的时间去做其他的事情。CNC系统的插补器既可以面向软件也可以面向硬件。归纳起来,主要有以下三种类型:一是不用软件插补器,插补完全由硬件完成的CNC系统。二是由软件插补器完成粗插补,由硬件插补器完成精插补的CNC系统。三是带有完全用软件实施的插补器的CNC系统。
上述第一种CNC系统常用单CPU结构实现,它通常不存在实时速度的问题。由于插补方法受到硬件的限制,所以其柔性很低。
第二种CNC系统通常没有计算瓶颈,因为精确插补由硬件完成。刀具轨迹所需要的插补,由程序准备并且使之参数化。程序的输出是描述曲线的参数,诸如起点、终点、速度、插补频率等,这些参数都是由硬件精确插补器输入。
第三种CNC系统需要快速计算出刀具轨迹。具有多轴(坐标)控制的机床,需要装备专用的CPU的多微处理器机构来完成算术运算。位片式处理器的I/O处理器用加减速控制任务完成。
实际上,现代CNC系统中,软件和硬件的界面关系是不固定的。早期的CNC系统中,数控系统的全部功能由硬件来实现,随着计算机技术的发展,特别是硬件成本的下降,计算机参与了数控系统的工作,构成了今天的计算机数控系统。但是这种参与的程度在不同的年代和产品是不一样的。图2-36说明了三种典型的数控装置软硬件界面关系。
图2-36 CNC三种典型的软硬件功能界面
2.4.4.2 典型的CNC软件结构
CNC系统的软件结构取决于系统采用的中断结构。在常规的CNC系统中,已有的结构模式有前后台型结构和中断型结构两种。
(1)前后台型结构模式
该结构模式的CNC系统的软件分为前台程序和后台程序。前台程序是指实时中断服务程序,实现插补、伺服、机床监控等实时功能。这些功能与机床的动作直接相关。后台程序是一个循环运行程序,完成管理功能和输入、译码、数据处理等非实时性任务,也叫背景程序,管理软件和插补准备在这里完成。后台程序运行中,实时中断程序不断插入,与后台程序相配合,共同完成零件加工任务。在图2-37所示的前后台软件结构中,实时中断程序与后台程序的关系图被清楚地表达。这种前后台型的软件结构一般适合单处理器集中式控制,对CPU的性能要求较高。程序启动后,先进行初始化,再进入后台程序,同时开放实时中断程序,每隔一定的时间,中断发生一次,执行一次中断服务程序,此时后台程序停止运行,实时中断程序执行后,再返回后台程序。
图2-37 前后台型的软件结构
(2)中断型结构模式
CNC的中断类型如下。
①外部中断 主要有纸带光电阅读机中断、外部监控中断(如紧急停、量仪到位等)和键盘操作面板输入中断。前两种中断的实时性要求很高,将它们放在较高的优先级上,而键盘和操作面板的输入中断则放在较低的中断优先级上。在有些系统中,甚至用查询的方式来处理它。
②内部定时中断 主要有插补周期定时中断和位置采样定时中断。在有些系统中将两种定时中断合二为一。但是在处理时,总是先处理位置控制,然后处理插补运算。
③硬件故障中断 它是各种硬件故障检测装置发出的中断。如存储器出错、定时器出错、插补运算超时等。
④程序性中断 它是程序中出现异常情况的报警中断,如各种溢出、除零等。
中断型软件结构的特点是:除了初始化程序之外,整个系统软件的各种功能模块分别安排在不同级别的中断服务程序中,整个软件就是一个大的中断系统。其管理的功能主要通过各级中断服务程序之间的相互通信来解决。
一般在中断型结构模式的CNC软件体系中,控制CRT显示的模块为低级中断(0级中断),只要系统中没有其他中断级别请求,总是执行0级中断,即系统进行CRT显示。其他程序模块,如译码处理、刀具中心轨迹计算、键盘控制、I/O信号处理、插补运算、终点判别、伺服系统位置控制等处理,分别具有不同的中断优先级别。开机后,系统程序首先进入初始化程序,进行初始化状态的设置、ROM检查等工作。初始化后,系统转入0级中断CRT显示处理。此后系统就进入各种中断的处理,整个系统的管理是通过每个中断服务程序之间的通信方式来实现的。
FSNUC7系统的软件结构是典型中断型结构模式,下面我们以FANUC7系统为例,简要地介绍一下其软件结构,FSNUC7系统包括7T和7M两个系列,我们以FSNUC7M软件结构为例介绍。7M系统共有8级(0~7级)中断,并且允许多重中断,第0级中断为最低级中断;最高级中断为第7级中断,表2-5列出了各级的中断功能。7M系统的中断来源有两种:一是由时钟或是其他各级外部设备产生的中断请求,称为硬件中断;另一种是由程序产生的中断信号,我们称为软件中断,这是由4ms时钟分频得出的。
控制程序中,还包括一个近200个子程序所组成的庞大子程序库。为了使得子程序能够实现正常嵌套和正常返回,设置了堆栈。此外,开机时为了做一些必要的准备,设置了初始化程序,初始化程序过后,便进入各级中断的工作状态。
表2-5为FANUC-BESKCM7CNC系统的各种中断功能。
表2-5 FANUC-BESKCM7CNC系统的各种中断功能