2024年4月21日发(作者:)
基于高档数控的实时多任务实现
何敏佳;阴雷鸣;何英武;罗有锦
【摘 要】The design method of time-sharing parallel processing is put
forward to meet the requirement of high-grade CNC system to the real-
time of control on the principle of multithreading
technology in real-time environment, the multithreading programming
asscmbly provided by Delphi is samples are applied to
showing the successful application of the multithreading technology in
CNC system real-time realization of the real-time multitask
improves the utility of CPU remarkably and makes the system reliability is
secured.%为了解决高档数控系统对控制软件实时性的要求,提出了分时并行处理
的设计方法,以实时环境下多线程技术的原理为依据,用Delphi提供的多线程编程
组件完成了系统线程的具体实现,并且以开发实例的方式给出了多线程技术在实现
数控系统实时响应中的应用.实时多任务的实现,显著提高了CPU的利用率,并使系
统的可靠性得到了保证.
【期刊名称】《现代电子技术》
【年(卷),期】2011(034)005
【总页数】3页(P138-140)
【关键词】高档数控系统;分时并行处理;实时控制;多线程技术
【作 者】何敏佳;阴雷鸣;何英武;罗有锦
【作者单位】广州数控设备有限公司,广东广州,510530;广州数控设备有限公司,广
东广州,510530;广州数控设备有限公司,广东广州,510530;广州数控设备有限公司,
广东广州,510530
【正文语种】中 文
【中图分类】TN911-34
0 引 言
实时性是数控系统一项重要的性能指标。
通信在IPC(Industrial Personal Computer)与运动控制器构成的开放式数控系统
开发平台上,虽然这种主从式结构,确保了运动控制指令在运动控制器内高速、实
时的被执行,但在PC 平台上,仍需要完成诸如实时显示、预处理计算、系统状态
监控等许多任务。为了保证系统的实时性能,拟采用多线程技术,通过多任务并行
处理的方式,提高系统实时性。
1 进程与线程以及多线程技术
Windows操作系统既支持多进程,又支持多线程。一个进程就是应用程序的一个
实例,一次执行过程也就是调入内存准备执行的程序,包括当前执行的应用程序的
执行代码和程序执行相关的一些环境信息。每个进程拥有整台计算机的资源,无须
知道其他进程在计算机中的信息[1]。通常每个进程至少有一个线程在执行所属地
址空间中的代码,该线程称为主线程,如果该主线程运行结束,系统将自动清除进
程及其他地址空间。
线程是进程内部执行的路径,是操作系统分配CPU时间的基本实体,是程序运行
的最小单位。每个进程都由主线程开始进行应用程序的执行。线程由一个堆栈、
CPU寄存器的状态和系统调用列表中的一个入口组成。每个进程可以包含一个以
上的线程,这些线程可以同时独立地执行进程地址空间中的代码,共享进程中的所
有资源[2]。
Windows系统分配处理器时间的最小单位是线程,系统不停地在各个线程之间切
换。在PC机中,同一时间只有一个线程在运行。通常系统为每个线程划分的时间
片很小(ms级别),这样快速系统的实时性就有了保障。
要实现多线程编程,可建立辅助线程(Worker Thread)和用户界面线程(User
Interface Thread)[3]。辅助线程主要用来执行数控程序、坐标显示、动态仿真和
数据预处理;用户界面线程用来处理用户的输入,响应用户产生的事件和消息。
2 实时多任务的实现
数控系统软件具有实时性和多任务两大特点。数控系统中要管理和控制的任务很多,
如当数控系统正处于加工控制状态时,为了保证加工的连续性,在各个程序段之间
不停顿,各数控加工程序段的预处理、插补计算、位置控制和各种辅助控制任务都
要及时进行;为了使操作人员及时了解和干预数控系统的工作状态,系统在执行加
工任务的同时还应该及时进行一些人机交互工作,即显示加工状态、接收操作人员
通过操作面板输入的各种改变系统状态的控制信号等。为了及时检查和预报软、硬
件的各种故障,系统在运行控制程序和人机交互程序同时还要及时运行诊断程序;
此外,系统还可能被要求及时完成通信等其他任务[4]。可见,理想的数控程序,
应具有实时多任务的处理能力。
针对数控系统软件的实时性和多任务性两大特点,采用分时并行处理技术来确定数
控系统软件结构[5]。分时并行处理技术是指一个处理器同时完成多种任务。系统
用时间片轮换的方式处理和完成各任务,即按照某种轮换次序给每个任务分配一段
CPU时间进行各任务的处理。从微观上看,各任务分时占用CPU;从宏观的角度
来看,在一段时间内,CPU并行完成了多个任务。在软件设计中,利用Windows
的多线程技术以“资源分时共享”为原则,有效地解决CNC系统的实时多任务问
题。应用优先级抢占方式来进行线程调度,以满足系统的实时性要求,利用时间重
叠和资源共享的方法来实现并行处理[6]。
2.1 系统线程的总体设计
Windows提供两种线程,辅助线程和主线程。主线程有窗口,因此它有自己的消
息循环,可以处理消息,使程序能够迅速响应命令和其他事件;辅助线程没有窗口,
所以它不需要处理消息。它可用于完成一些费时的工作,以免在由主线程处理这些
工作时阻碍程序消息的处理[7]。软件设计时有并行要求的模块置于独立的线程中,
以实现系统的多任务并行工作。根据对系统实时多任务的分析,将软件系统中的线
程设计为:
(1) 主线程
主线程是应用系统启动时创建的第一个线程,其他线程都是由主线程直接或间接创
建。主线程主要负责创建客户界面、数据显示、与客户交互、系统初始化以及对其
他线程进行监控。
(2) 译码线程
译码线程是由主线程创建的,负责程序的译码,并将计算结构存入公共数据区,为
通信线程提供数据来源。
(3) 通信线程
通信线程负责上下位机间的数据传输。上下位机间的传输以一来一回的形式进行。
通信线程接收到下位机传来的数据,根据事先定义好的协议对它进行识别,并根据
识别的结果来判断是否需要将插补命令等传给下位机,还需要通知主线程来处理异
常情况。
通信线程所承担的任务是强实时周期性任务,译码线程所承担的任务是弱实时性任
务,主线程承担的是实时突发性任务。因此根据系统任务实时性强弱不同,可为各
个线程设置相应的优先级来确保实时性。主线程与进程的优先级相同,通信线程的
优先级高于主线程,而译码线程的优先级高于主线程低于通信线程[8]。
在线程优先级设置中,通信线程的优先级最高,这使得通信线程在需要CPU时间
片等资源时,能够顺利的抢占其他线程的资源,保证上下位机的通信顺畅,使下位
机在加工时能够平稳的实现进程,并且使下位机在出现异常情况时能及时通知上位
机。由于通信这一动作是依照某种频率进行的,因此通信线程不会一直占用CPU
资源,从而不会因为它的优先级高使其他线程无法运行[9]。
具体实现原理架构如图1所示。
图1 RT Windows实时系统架构
2.2 系统线程的具体实现
Delphi提供了许多与多线程编程相关的组件,其中最重要的是Tthread类,本文
就是利用它来实现多线程编程[10]。该类封装了大多数与线程相关的方法,使用
Tthread类大大简化了多线程程序的开发步骤。Tthread类是一个抽象类,不可以
直接创建它的实例,但是可以创建它的派生类。创建方法在Delphi菜单中依次选
择“File”→“New”→“Other”→“New”,选择“Thread Object”项,,
在对话框中输入新的线程类的名称,确认后即创建了一个新的线程类:
unit Unit1ncthread;
interface
uses
Classes;
type
TchanelThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
procedure e;
begin
end;
end
其中:“private”及“ protected”用来定义变量和程序函数,“procedure
Execute;override;”是线程函数,用来编写线程的执行部分。同时Delphi还提供
了各种函数用来运行和终止线程等。创建了线程的派生类后可以生成该类的对象,
来表示应用程序的执行线程。各个线程创建好后将NC的解释程序、通信程序等放
在各自线程函数内,再创建线程的对象,设置几个线程就生成几个对象,在对象内
编写打开或终止线程等函数来控制线程的运行。
3 结 语
基于Windows平台的高档数控实时操作系统的开发,实现了不仅能向Windows
平台添加实时功能,而且使这些实时功能具有很好的可扩展性。本课题下步的目标
是将此实时系统的设计实现在Windows XP Embedded平台上,使其具备高档数
控系统需要的嵌入式设备的特性。
参 考 文 献
[1] KATZ R, MIN B K, PASEK Z. Open architecture control technology trends
[J]. ERC/RMS Report, 2000 (35): 35-38.
[2] 李炎新,邢建春.COM 技术及其在工业自动化软件中的应用[J].工业控制计算机,
2000,13(1):25-28.
[3] 李霞,王永章,郑佳昕,等.开放式软数控系统的关键技术研究及实现[J].组合机床
与自动化加工技术,2003(10):6-8.
[4] 刘俊英,梁丰.数控系统实时控制研究[J].中国高新技术企业,2009(19):3-4.
[5] 朱利东,殷苏民.基于嵌入式实时操作系统的开放式数控系统的研究[J].机床与
液压,2004(1):92-94.
[6] 闫永志,任雪鸿.开放式数控系统实时性的研究[J].内江科技,2010(2):19-20,
77.
[7] 迟永琳,明良玉,吴祖育,等.基于Windows NT和Linux的开放式数控系统[J].
上海交通大学学报,2003,37(1):45-53.
[8] 陈永茂,刘少君,裴海龙.RTAI的实时性测试及在CNC控制器的应用[J].微
计算机信息,2008,24(13):177-178.
[9] 陈宗雨,郭伟,王立峰,等.基于Windows NT与实时扩展的开放式数控系统的研
究[J].计算机集成制造系统,2006,10(4):568-572.
[10] 陈婵娟,陈参.用Delphi开发实现开放式数控系统软PLC功能模块[J].制
造技术与机床,2008(5):60-62.
发布评论