开放式数控系统中控制信息的表达与传递书

来源:互联网

点击:1876

A+ A-

所属频道:新闻中心

关键词:开放式 数控系统 传递数

    构建开放式数控系统的一个基本原则就是模块化,通过模块化进行系统功能和结构的分解,降低耦合、增强内聚并控制粒度,以提高模块的复用性。很多学者开展了有关这方面的研究工作,我们也在这个领域进行了一些探索,并发表了一些研究成果,围绕模块的接口设计、建模方法、系统配置等问题都进行了探讨和研究。

      随着研究的深入,我们认识到除上述内容之外,控制信息在各模块间的传递也是值得研究的问题。本文主要针对数控系统内控制信息的表述及传递的问题,结合自主开发的开放式系统HITCNC进行深入探讨。首先介绍HITCNC系统的组成,然后重点阐述如何利用嵌套式任务单元实现信息的表达与有效传递,最后通过实验加以验证。

    1 开放式数控系统HITCNC的模块化构成

      我们采用Windows NT+RTX(Real—time exten-sion for Windows)为系统平台,以软件化方式实现运动控制和逻辑控制功能,建立了基于PC机的软件型开放式数控系统HITCNC。它与外部设备之间的数据通讯通过遵循SERCOS协议的SofiSercans通讯卡完成,系统结构如图1所示。

     
    图1开放式效控系统HITCNC的模块化系统结构

      HITCNC是“软件数控”,即CNC功能全部由软件实现,各部分功能被分解到不同的软件模块中。其中人机接口、任务生成器模块是在Windows环境下运行的COM组件;任务协调器、轴组、离散逻辑控制器、轴模块、控制规律模块则是运行于RTX实时环境下的动态链接库。

      各模块具体功能如下:

      (1)任务协调器进行任务分配,负责系统内各模块的协调与调度。

      (2)任务生成器根据一定的语法规则对数控加工程序进行语法检查,完成译码工作,生成包含运动信息的运动段指令和逻辑控制指令,并对运动指令进行刀具补偿。

      (3)轴组模块完成加减速处理、插补任务,对译码得到的运动段按照一定的进给速度要求进行细分,得到单个插补周期内的直线段进给量,然后分解并输出给各个轴模块。

      (4)轴模块接收来自轴组模块的指令,同时读取外部的反馈信息,根据用户需求选择性地调用伺服控制规律完成位置控制或速度控制等功能,并将控制信息发送给外部执行单元。

      (5)控制规律模块负责伺服控制规律的计算,提供多种控制策略。

      (6)离散逻辑控制模块负责对外部输入和内部状态变量进行布尔运算得到相应输出和内部状态变量,并对外部输入输出设备进行控制,包括机电设备的启停、刀具的交换等。

    2 控制信息的抽象与表达

      2.1 任务单元

      对数控系统而言,其所要处理的信息主要来自数控加工程序。在本系统中,数控程序经任务生成器处理得到的控制信息(包括运动控制与逻辑控制)采用有限状态机FSM(Finite State Machine)进行描述。这里,将包含控制信息的FSM对象称为任务单元。有限状态机通常采用状态转移图来表示,其构成要素包括状态、转移、事件、动作。简化的任务单元状态转移图参见图2。其中“未初始化、已初始化、运行、停止、结束”表示状态;“初始化、执行、刷新、复位、完成、停止”表示事件;“initialization()、runningAction()、stopAction()、resetAction()”表示动作;当任务单元处于“未初始化”状态,并接收到事件“初始化”时,它会执行动作“initialization()”,并完成由“未初始化”状态向“已初始化”状态的转移。任务单元本身就是一个有限状态机对象。有限状态机的基本概念和软件化实现方法参见文献,这里不再详述。

     
    图2简化的任务单元状态转移图

      2.2 任务单元的种类


      根据任务单元所要完成功能,本系统定义了多种任务单元类,如图3。

     
    图3任务单元的种类

      (1)运动任务单元对应于输入轴组模块的数据FSM,分为直线、圆弧运动任务单元等。除了具有基本的FSM管理和参数化方法之外,运动任务单元还包括速率、待加工的几何信息等以及负责刀具轨迹规划的速度轮廓生成器。它们在轴组模块内按照图2规划的FSM运行,通过执行动作initilization()和runningAc—tion()分别完成插补的初始化和插补计算任务。

      (2)离散逻辑任务单元对应于输入离散逻辑模块的数据FSM。离散逻辑单元负责对外部输人输出单元的协调和控制。如主轴的启停、冷却液的开关等。

      (3)执行步任务单元在任务协调器内的FSM对象,包括运动任务执行步和离散逻辑任务执行步,分别负责监控和管理运动任务单元和离散逻辑任务单元的执行。例如直线运动任务单元就是在运动执行步的监控下运行的,具体实现过程将在下文详细解释。对于图3中的各种任务单元,采用面向对象编程技术,以基类任务单元模板来抽象表示它们的共性,则每一种具体类型的任务单元都通过从任务模板基类派生定制实现。

    3 控制信息的传递与系统模块的协作

      任务单元是可以嵌套的,一个任务单元能够包含其它的任务单元。当外层任务单元的有限状态机被激活时,它能够向下层模块发送其内嵌的任务单元。这样,就可以将数控程序包含的控制信息以任务单元的形式在模块间传送,被传送的任务单元成为下层模块内活动的状态机,从而控制下层模块的行为。外层任务通过对嵌套任务的管理就可以实现对下层逻辑和运动控制模块的协调调度。在本系统中,执行步任务单元属于外层任务,它负责嵌套包含运动任务单元和离散逻辑任务单元。通过下面的例子来说明当数控系统执行一个加工程序时,模块间的协作关系与数据流的传递过程,如图4所示。执行步骤如下:

     
    图4模块间的协作与数据传递

      步骤1 加工程序在任务生成器中被翻泽为一系列执行步任务单元,以链表的形式存在;每个执行步任务单元都是嵌套的,内部包含有等待执行的运动任务单元或逻辑控制单元。

      步骤2 任务协调器通过调用getTasks()获取执行步单元。在本系统中,任务生成器是一个COM组件,在Windows环境下运行;任务协调器是一个实时动态链接库,在实时操作系统RTX环境下运行。两个模块通过共享内存传递具有嵌套结构的执行步任务单元。

      步骤3 任务协调器调用执行步单元提供的exe—cuteUnit()激活其包含的状态机。步骤3会重复执行多次,因为它要与下层模块保持同步(例如,等待当前嵌套的运动任务单元被完成)。

      步骤4 在任务协调器内处于活动状态的执行步任务单元将内嵌的运动任务单元发送到轴组模块的运动队列中,通过调用setNextMotionSegment()实现。运动任务单元被加载到轴组队列后等待被激活。

      步骤5 加载到轴组队列首位的运动单元首先被激活,轴组模块周期性调用该运动任务单元的exe-cuteUnit()方法,运动任务单元依照它的有限状态机规划开始运行。此时外层执行步的状态机在任务协调器内同步运行,并不断查询运动任务单元的状态,直至运动任务单元转变为“结束”状态为止。

      图5给出了上述任务单元在控制系统内的被传递和执行过程中自身状态所发生的转变,同时可以看出它们的管理对象也发生了变化。首先,嵌套任务单元由任务生成器译码得到,任务协调器调用外层执行步任务单元的executeUnit()方法激活其有限状态机进行一系列更新操作,执行步由“未初始化”转变为“已初始化”状态,同时完成动作initiationAction(),把内嵌的运动任务单元发送到轴组的运动队列中。轴组调用运动任务单元的executeUnit()方法,使运动任务单元在轴组内被激活,周期性刷新,依次处理“初始化”、“执行”事件,完成动作“runningAction()”进行插补计算直至插补结束。在此过程中,位于上层任务协调器中的执行步进入“运行”状态,它也通过自身的“runningAction()”动作不断查询其内嵌运动任务单元是否为“结束”状态。当运动任务单元结束时,轴组将其从运动队列中删除;任务协调器中的执行步继续监控它所包含的下一任务单元或者将控制权移交给下一个执行步。图中两侧所示为执行步任务单元与运动任务单元在不同时刻所对应的管理对象。

     
    图5嵌套任务单元在系统内的执行过程

      通过上面的例子可以看出,利用有限状态机,任务单元通过在其内部封装一系列状态变化,进而实现了系统预期完成的操作和功能;更重要的是,任务单元的嵌套结构设计就象是一棵树上的主干和分支,实现了信息在系统内的有序流动和传递,而且这种嵌套设计使任务单元具有智能特征,具备了协调下层运动模块和逻辑控制模块的能力。

    4 实验验证

      笔者开发的开放式数控系统其组成如前所述,配备于一台三轴铣床上。为了验证任务单元的设计是否实现了控制信息的有效表达与传递,进行了下面实验。

      (1)直线、圆弧运动任务单元的验证:我们所开发的系统最初只具有直线、圆弧加工能力,因此利用该三轴铣床进行了图6所示的鼠标壳体的加工。实验表明包含FSM的嵌套式任务单元设计合理,控制信息在模块间传递无误,数控系统具有实用性,整体性能良好。

     

      (2)运动任务单元的派生——扩充NURBS曲线加工能力:系统功能扩充的途径之一就是派生新的运动任务单元,创建满足特定加工能力的子类。为了在常规插补的基础上扩充NURBS插补,从运动任务单元来派生CNurbsSegment运动任务单元,其封装实现了NURBS曲线插补功能。CNurbsSegment运动任务单元仍然采用执行步任务单元嵌套管理方式,最终系统具有了NURBS曲线加工能力。图7就是利用NURBS曲线插补功能所加工的电钻壳体模具。CNurbsSegment运动任务单元部分代码如下

     

      正是由于采用了嵌套式任务单元的设计,系统功能扩充过程中只需对任务生成器和任务协调器进行代码的添加,而不用修改构成系统的其它部分,模块的可重用性大大增强。

    5 结语

      本文提出了一种采用FSM数据形式封装控制信息,并以嵌套结构形式使其在数控系统各模块中智能化地传递的方法。实验证明,该方法不仅保证了模块间信息的有序传递和模块问的相互协作,而且系统功能扩展能力易于实现,模块的可重用性大大增强。

    (审核编辑: 智汇张瑜)