background image

2 定时器线程任
务调度方法

        在 RTSS 进
程中,创建的定
时器本质上是一
个隐含的线程,

RTSS 主线程,

创建插补定时器
线程,插补周期

2 m8,优先

级设定为

RT—

PRIORITY—
MAX 一 2;创
建位置控制定时
器,位置周期为
100 炉,优先级
设定为

RT—

PRIORITY—
MAX;创建任务协调定时器,主要是数据交换刷新工作,周期为 20 ms,优先级设定为
RT_PRIORITY—MAX 一 10。创建好定时器线程后,RTSS 进程会严格按照抢占式优先级调
用策略进行运行,但是在数控软件中,插补和位置控制都是强实时任务,其中插补计算结
果是供位控使用,算法复杂,运行时间长;位置控制运算简单,其实时性要求最高,当位
控定时器产生中断时,

CPU 将立即放弃现有的任务,转入执行位控任务,这就需要上一个

插补周期数据必须在本位控周期到来前计算完成,为了解决这一问题,本文在

RTSS 进程

下设计了插补线程超前位控线程启动,采用共享内存建立插补缓冲区旧。进行两者数据传递。

        图 3 所示为其调用过程,定义指向缓冲区的指针 pInterpbuf,每次插补计算结果通过
pInterpbuf 一>interpbuf[pInterpbuf->interpline]存人数据缓冲区中。当执行几个周期后才启动
位控例程,此时位控线程启动,将通过

pInterpbuf->interpbuf[pInterpbuf->posline]进入缓冲

区读取数据。为了减少缓冲区空间大小,位控读走首行数据后将通过循环将

interpbuf 数组

中的数据前移一个地址。本文算法中设定插补计算

10 个周期后启动位控周期,可以保证缓

冲区始终存有插补数据。

3 控制算法及
信息流程

        开发的原
型数控软件包
含:人机界面
模块、译码模
块、插补模块、