数控系统软件模块实时调度方法

发布者:Qingfang最新更新时间:2016-12-08 来源: e-works关键字:软件数控  实时性  调度框架  数据资源 手机看文章 扫描二维码
随时随地手机看文章

前言

    随着数控技术的不断发展,开放式、模块化和可重构等是当前数控系统开发的热点研究内容。实现技术也由硬件逐步转向软件,特别随着PC功能的日益强大、软件技术的标准化,中间件技术等不断发展、完善,基于软件的系统实现更易于满足数控系统开放式发展的需要。

    目前数控系统结构常见的构造方式有PC+NC集成、PC+运动控制卡等,其中NC或运动控制卡完成插补、加减速控制等功能,PC完成代码解释、界面控制、仿真模拟等非强实时功能。软件数控的核心思想是使绝大部分的数控处理功能集中于软件完成,硬件只完成软件无法完成的驱动等基本功能。数控系统是强实时系统,时序要求高、采样周期短,而PC系统的特点是功能强大、多任务控制、实时性弱。如何解决两者在时序上的矛盾是基于软件数控开发技术的关键之一。目前主要采用在主流操作系统中扩展实时子系统的方法,使得主流操作系统能够实现短周期的精确定时,如陈宗雨等在Windows 2000/NT系统中扩展RTX实时子系统提高系统的实时性,朱达宇在Linux平台上采用RTLinux实时扩展来构建全软件的数控系统。

    本文中数控系统结构采用基于PC无扩展全软件方式,插补和加减速控制等实时功能全部放在软件中实现。为了满足数控系统实时性要求,我们给出了基于通信定时触发的软件实时调度框架(Softreal time scheduling framework,SRTSF),通过模糊时间分配和数据资源约束驱动的方式,在满足整体实时前提下,可开放配置软件功能模块。

1 软件数控系统结构模型

    如图1所示,数控系统体系架构分为两层:上层软件层和下层控制层。异于传统数控系统,软件层承担了几乎所有的数值计算与优化处理功能。然后通过通信模块与下位控制层运动控制模块进行数据传输,由运动控制模块根据控制数据完成对机床的驱动,实现位置、主轴的精确控制。上位系统主要完成加工程序解释、图形处理、插补、仿真、上下位机通信和界面控制等功能。软件层包括系统初始化和配置、任务服务、数据服务、实时功能组和非实时功能组等模块。

  

    图1 软件数控开放式结构模型

    在系统初始化时各模块被系统配置模块调用,声明自身的优先级、所属任务组以及调用机制,系统配置模块赋予各模块相应的优先级,并把对应的信息根据实时功能分类写入到任务服务。系统打开加工程序代码后,主要完成加工程序解释、图形显示、系统参数设置和轨迹、速度前处理等非实时功能。各功能模块根据需要可以向数据服务模块申请数据空间,也可以获取或存储其他模块开辟的数据内容,但需要给出获取数据或添加数据的约束机制,不能够任意的对数据进行无限制操作。开始加工后,系统运行两种状态——实时状态和非实时状态,实时状态下运行的模块具有高优先级,而非实时状态下运行的模块只能在所有实时运行模块空闲时,由任务服务启动。非实时模块没有优先级关系调度方式,只能根据先进先出的调度申请链表位置依次启动。

2 SIHSF总体架构和描述

    2.1微机操作系统实时调度分析

    以Windows系统为例,Windows系统为非实时运行系统,内核的调度周期是20 ms左右,无法满足数控系统所需的插补时钟周期的运行要求。但是Windows提供了抢占式多线程的调度方式,可以通过通信模块根据下位运动控制模块的反馈信号定时触发相应的处理模块,实现较为精确的定时控制(只提供10 ms以上的多媒体定时方式),但是其调度(包括软件和硬件中断)的触发响应却很快,完全能够满足数控插补时钟周期(一般可设为2 ms左右)。Windows系统设计时,为了保证系统的稳健性,线程状态包括待调度就绪状态、就绪状态、备用状态运行状态和等待状态等多种状态。Windows仍然不能精确保证通信所触发的模块能够马上运行(特别是相同或较低优先级状况下)。并且通信的触发信号只能保证所触发模块的运行,当多模块进行调度时,无法实现所有模块在准确时序下的运行调度。所以在Window系统中,如果不采用在操作系统上扩展子系统的策略,必须提供一套有效的调度机制和应用框架以解决上述问题。下面给出具体的调度框架描述。

    2.2 SRTSF总体架构

    如图2所示,SRTSF调度框架由任务服务、实时模块、数据服务和参数管理等模块组成。在实时功能模块中,与实时调度相关的为模块运行、状态设定、模块阻塞、请求调度、优先级动态设定和调度失败条件控制部分。模块运行是在数据充分、可运行状态下该模块的计算、绘图、通信等动作。实时模块在运行过程中,数据的充分性,也就是模块运行所需的数据资源约束状况会不断变化。当达到约束条件时,对模块的运行状态变量进行设定。当模块的运行状态变量设为不可运行时,模块处于阻塞状态,经过有限的阻塞时间后,模块发出请求调用的请求。当然由于windows定时的不精确,我们只有在模拟加工中采用有限时间阻塞。在实时加工中设为0。

  

    图2 SRTSF调度框架模型

    任务服务接受该模块的任务调度请求,然后调用模块状态管理操作,任务状态管理操作根据参数管理模块和数据模块的判定状态参数和约束机制进行评判,决定所请求调度模块是否满足被调度最低要求,如果满足则把该模块放入任务运行模块链表中。任务状态管理操作查询所调度模块是否满足被运行的设定条件。如果允许运行,则返回申请模块请求成功,设定所调度模块有激活信号,否则返回请求失败。申请模块根据返回信息和自身模块调度机制决定升高或降低本身的优先级以及是否重新启动模块运行。



    2.3数据资源模型

    除了通信定时信号触发和运行指令信号触发控制模块的运行和等待外,数据资源约束是控制模块运行的最有效手段。各模块运行的最主要目的是进行数据的获取、处理、传输和存储等操作。并且各模块处理所需的数据在时序上具有前后逻辑关系,这就保证了采用数据约束触发模块的运行和等待是最有效的方式。并且当模块由于数据资源约束而无法操作时,马上释放对CPU的控制,与各步骤都采用精确定时相比,其在时间消耗上也是比较经济的策略。只是系统调度的消耗占用了部分时间。模块功能不同,所涉及的数据操作不同,我们认为导致数据改变的情况主要有3种:①在实时运行过程中,产生新的过程数据;②被不同的模块异步改变;⑨被实时模块和非实时模块改变。各模块取得或者修改数据需要根据既定的规则进行,否则整个实时加工的过程变得不可预测。下面给出数据管理和调度的规则和约束。

    任何模块可以向数据服务申请开辟数据区,申请数据结构的可以是数组、链表和树。但是节点必须是数据服务中既定的数据类型,也可以是既定数据类型的子类。一旦新开辟的数据区建立,其类型不可修改,同时开辟的还有与之相对应的规则对象。规则对象适用于所有共享该数据区的模块,需要操作该数据区的模块必须先在对象规则中注册自己的position,该position唯一的标识了与该模块相关的对同一数据区操作的其他模块所注册的position之间的约束关系。约束关系根据数据区的数据结构决定,如采用链表的数据结构时,position的约束为前后约束关系。一个模块在单一数据区中只注册唯一的position。确定position的目的是能够保证在调度过程中数据的完备性和有效性。同时position的约束限制也是调度的触发判定依据或条件之一。

    2.4任务服务模型与系统实时运行

    任务服务是系统模块配置和实时运行的核心,接受模块调度申请、并根据当前的参数和数据资源约束状况返回申请的结果,所申请模块根据反馈信息实现模块内部的动作。每~注册模块在任务服务中都有对应的标志,该标志包括模块运行状态,可调度约束等内容。

    在系统运行过程中,各模块之间的切换关系是时变的。并且可能存在几个模块同时运行的状况,此时各模块的实际运行根据模块设定的优先级竞争决定。在模块受到数据资源约束处于等待状态时,所请求的触发运行模块也是根据数据资源状况的不同而请求触发不同模块,所以在运行过程中只能设定模块的运行、等待、调度请求和结束等动作的规定。具体调度服务算法步骤如下所述。

    (1)当注册模块的运行状态标志为结束时,该模块为挂起模块,任何模块申请调度该模块的请求无效。

    (2)模块正常运行,并设置运行优先级,当模块运行阻塞,启动该模块的调度申请,并根据该模块当前运行参数决定调度申请对象,模块处于等待状态,等待申请返回信号。

    (3)当任务服务收到请求信号时进行任务分配检查,询问模块状态管理,如果所申请模块为任务挂起,则返回任务申请失败;如果为任务运行状态则返回任务申请成功转(2);如果为等待状态,则查询该模块的运行条件是否满足,如果满足,运行该模块,并设置该模块标志为运行状态,返回申请成功;否则返回申请失败。

    (4)信号(如通信触发信号和运行指令信号)可以向任务服务申请调度,而任务服务的响应与(3)相同,只是信号无需返回申请结果信息。

    (5)当前各实时运行模块抢占CPU的能力根据各自的运行优先级决定,在申请等待过程中,需要设置自身模块为等待状态,释放CPU。

    (6)当所有实时模块均为挂起状态,并且通信触发标志为假时,任务服务认为实时运行过程结束,设置服务结束参数。  


    2.5时间服务和数据约束

    在数控系统中,当没有界面的运行指令信号时,通信触发信号定时触发调度申请,而通信触发信号的触发周期按照与运动控制的一次通信作为时钟周期,其时间基本上是固定并且是准确的,所以我们认为上位软件在插补周期内通信定时是可控的,并且满足

     

    式中ti为第i个模块占用的时间,tidle为空闲时间,Teye,为系统插补周期。

    根据调度规则,各个模块占用CPU的时间是时变且不可控的,并且需要竞争获取,这就无法保证在一个插补周期内所有的模块都能够完整的运行,各模块在运行中模糊时间分配如图3所示。这就导致获取数据的充分性不能保证,为此我们在数据服务中采用缓冲的方式,并且在数据约束上采取更为稳健的策略。如在当前的数控系统中,采用了链表存储的数据结构,可以采用基于读者一写者问题的资源共享方式。在链式数据结构中,较为常用的是先进先出链表和环形链表,各实时模块负责写入数据链表或从链表中读取数据。作者采用了数据写入最大能力和读取数据的安全区域。也就是当写入数据时只有无法添加节点时才触发该模块的调度请求,而读数据过程中,如果所读取数据与写入数据的间距小于安全距离,则马上启动该模块的调度请求,申请调度写模块运行。

  

    图3 实时模块模糊时间分配原理

    2.6下位通信信号定时触发

    由于在Windows系统中没有精确定时,通信触发信号为下位板卡通过串行通信的定时反馈,我们把与下位板卡通信的模块优先级设为最高等级,通过Windows提供的串行监测函数(Asynchronism())无限期等待,一旦下位信号返回,该函数马上被激活,该模块立即获得CPU资源。此时新一轮的调度再次开始。

3系统验证和数值仿真

    3.1实时插补时间试验

    在软件数控系统中,插补过程包括离线插补和实时插补。离线插补主要进行插补几何、速度、加减速的规划;而实时插补则完成时钟周期内的进给量的精确计算。在该系统中,我们对微细直线段进行了速度平滑处理,段与段之间采用直接速度过渡、速度微调过渡和直接减速过渡三种方式。其过渡方式的选择依据于前后直线在空间坐标系中所处的几何姿态。实时插补过程分为直线段插补准备和时钟周期插补。插补准备包括进给直线、圆弧的数据准备、加减速准备。根据加工命令的差异,插补准备分为以下几种准备类型:加工程序直线准备、加工程序圆弧准备、辅助加工准备(手动、下刀等)、急暂停插补准备和辅助二次动作插补准备。急暂停插补原理是根据命令镜像链表查找缓冲区延迟后的延迟脉冲和加工指令节点数据,根据延迟脉冲数据为起点进行插补准备和插补,得到的插补数据添加到延迟节点以后,其过程是直接减速的过程。

    在软件数控系统上下位通信过程中,数据采用打包传输的方式,在没有数据资源约束和优先运行的情况下,插补模块连续运行,插补计算所得数据存放于脉冲缓冲区。为了验证占用实时处理的插补模块、通信模块和仿真模块的时间总和是否满足实时性需求。首先测试插补线程单独运行所需的时间。图4表示仅仅运行实时插补时,插补时间与运行节点数之间的关系,从图上可以看出即使是微小直线段插补,其平均一个插补周期计算所需的时间非常少,达到了0.01 ms左右。

  

    图4 实时插补时间与运行节点数关系

    3.2实时插补、仿真时间试验

    实时插补仿真试验是同时进行插补计算和仿真,其中仿真的图形绘制独立于非实时模块的图形显示,在控制界面上显示加工轨迹和系统运行状态。因为界面模块的优先级最低,同时界面模块不参与线程调度,执行过程是在其他实时模块空闲时,根据接收的消息进行相应的执行动作。在实际的仿真中,为了保证界面模块能够在插补和仿真模块中间运行,仿真模块执行完毕后,使其在可设定的时间片内阻塞,然后再启动仿真模块申请其他模块的执行函数,而界面模块可以在其这个阻塞的时间片内执行相应的显示,仿真的速度也可以根据阻塞时间的长短调整。根据试验结果,如图5所示,平均每个插补周期中,仿真和插补两个模块占用的时间总和达到了0.5ms左右。

 

    图5 实时插补和仿真时间与运行节点数关系

    3.3应用实例与系统开发

    根据上述调度框架,我们在Windows 2000和XP系统下开发了基于PC的Soft型数控系统。软件系统开发采用VC++6.0平台,在该系统中我们选取插补时钟周期为2 ms,系统配置为CPU 2.0 GHz,256M DDR内存。在加工过程中没有出现通信时无数据可取的情况,软件系统所占的CPU百分比为40%左右。实际加工中采用8 ms的插补周期,图6为插补、仿真和通信实时运行的界面。

  

    图6 插补、仿真和通信实时运行时界面

4结论

    (1)采用基于优先级可变的模块模糊调度框架,能够解决Windows系统的非实时处理与数控系统的精确定时之间的矛盾。

    (2)在资源约束和时间服务分配的基础上进行模块调度的优化配置,摒弃原有的模块精确定时方式,增加系统资源的自适应分配。

    (3)采用该方法可以进一步推广应用于研究三层或三层以上的弱实时和强实时共存的软件数控系统,使得能够与CADCAMCAPP系统的集成,如基于STEP-NC数控系统的开发。


关键字:软件数控  实时性  调度框架  数据资源 引用地址:数控系统软件模块实时调度方法

上一篇:火电厂厂级控制系统概念探讨
下一篇:DCS控制系统及工业控制技术研究

推荐阅读最新更新时间:2024-05-03 00:52

泰克推出面向DDR4、DDR3和DDR3L内存的实时一致分析仪
中国 北京,2013年10月24日 –测试、测量及监测仪器的全球领导厂商—泰克公司日前宣布,推出实时内存执行验证解决方案,以提供针对JEDEC DDR4、DDR3和DDR3L内存标准的更快速协议、性能及一致性分析。由泰克合作伙伴Nexus Technology开发的MCA4000协议一致性和总线协议分析仪提供长时间周期内的内存接口即时可观测性,从而提供对内存总线活动的深入洞悉,这有助于缩短调试周期和加快产品上市速度。 随着行业转向具有更高数据传输速率、更低功耗和更大容量的DDR4和DDR3L等新型内存技术,设计人员在调试和验证具有更小余量、更快边沿速率和复杂总线协议的器件时面临许多新挑战。通过增加实时内存执行验证功能,泰
[嵌入式]
改善Linux内核实时方法的研究与实现
   0 引言   由于Linux具有功能强大、源代码开放、支持多种硬件平台、模块化的设计方案以及丰富的开发工具支持等特点,在实际系统中,得到了广泛的应用。但由于其最初的设计目标为通用分时操作系统,对于实时系统而言,Linux仍然存在核心不可抢占、关中断、时钟粒度粗糙等缺陷。为了使其应用于嵌入式系统,实时控制等领域,越来越多的厂家和研究机构热衷于改善其实时性,构建基于Linux的实时操作系统。   在Linux 2.4和以前的版本,内核是不可抢占的,也就是说,如果当前任务运行在内核态,即使当前有更紧急的任务需要运行,当前任务也不能被抢占。因此那个紧急任务必须等到当前任务执行完内核态的操作返回用户态后或当前任务因需要等待某
[嵌入式]
基于RS422A现场总线的温控网络控制系统
  一. 概述   RS-422A总线是EIA公布的“平衡电压数字接口电路的电气特性”标准,这个标准是为改善RS-232C标准的电气特性,又考虑与RS-232C兼容而制定的。RS422A是工业界广泛使用的双向、差动平衡驱动和接收传输线标准接口 ,它以全双工方式通信 ,支持多点连接 ,允许创建多达 32个节点的网络,具有传输距离远 (最大传输距离为 1200m) ,传输速率快 ( 1200m时为 100kbit/s)等优点 ,相对于其它总线,如FF、CAN、LonWorks等而言,具有结构简单、成本低廉、安装方便、与传统的DCS兼容等特点;此外,市场上很多现场仪表都有RS422A总线接口,因此采用该总线可以很容易地开发一些中小型网
[工业控制]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved