0 导言
实时性是数控体系一项重要的功用指标。
通讯在IPC(Industrial Personal Computer)与运动操控器构成的开放式数控体系开发渠道上,尽管这种主从式结构,确保了运动操控指令在运动操控器内高速、实时的被履行,但在PC渠道上,仍需求完结比如实时显现、预处理核算、体系状况监控等许多使命。为了确保体系的实时功用,拟选用多线程技能,经过多使命并行处理的办法,进步体系实时性。
1 进程与线程以及多线程技能
Windows操作体系既支撑多进程,又支撑多线程。一个进程便是运用程序的一个实例,一次履行进程也便是调入内存预备履行的程序,包括当时履行的运用程序的履行代码和程序履行相关的一些环境信息。每个进程具有整台核算机的资源,无须知道其他进程在核算机中的信息。一般每个进程至少有一个线程在履行所属地址空间中的代码,该线程称为主线程,假如该主线程运转完毕,体系将主动铲除进程及其他地址空间。
线程是进程内部履行的途径,是操作体系分配CPU时刻的根本实体,是程序运转的最小单位。每个进程都由主线程开端进行运用程序的履行。线程由一个仓库、CPU寄存器的状况和体系调用列表中的一个人口组成。每个进程能够包括一个以上的线程,这些线程能够一起独登时履行进程地址空间中的代码,同享进程中的一切资源。
Windows体系分配处理器时刻的最小单位是线程,体系不停地在各个线程之间切换。在PC机中,同一时刻只要一个线程在运转。一般体系为每个线程区分的时刻片很小(ms等级),这样快速体系的实时性就有了确保。
要完结多线程编程,可树立辅佐线程(Worker Thread)和用户界面线程(User Interface Thread)。辅佐线程首要用来履行数控程序、坐标显现、动态仿真和数据预处理;用户界面线程用来处理用户的输入,呼运用户发生的事情和音讯。
2 实时多使命的完结
数控体系软件具有实时性和多使命两大特色。数控体系中要办理和操控的使命许多,如当数控体系正处于加工操控状况时,为了确保加工的连续性,在各个程序段之间不停顿,各数控加工程序段的预处理、插补核算、方位操控和各种辅佐操控使命都要及时进行;为了使操作人员及时了解和干涉数控体系的作业状况,体系在履行加工使命的一起还应该及时进行一些人机交互作业,即显现加工状况、接纳操作人员经过操作面板输入的各种改动体系状况的操控信号等。为了及时查看和预告软、硬件的各种毛病,体系在运转操控程序和人机交互程序一起还要及时运转确诊程序;此外,体系还或许被要求及时完结通讯等其他使命。可见,抱负的数控程序,应具有实时多使命的处理才能。
针对数控体系软件的实时性和多使命性两大特色,选用分时并行处理技能来承认数控体系软件结构。分时并行处理技能是指一个处理器一起完结多种使命。体系用时刻片轮换的办法处理和完结各使命,即按照某种轮换次序给每个使命分配一段CPU时刻进行各使命的处理。从微观上看,各使命分时占用CPU;从微观的视点来看,在一段时刻内,CPU并行完结了多个使命。在软件规划中,运用Windows的多线程技能以“资源分时同享”为准则,有效地处理CNC体系的实时多使命问题。运用优先级抢占办法来进行线程调度,以满意体系的实时性要求,运用时刻重叠和资源同享的办法来完结并行处理。
2.1 体系线程的总体规划
Windows供给两种线程,辅佐线程和主线程。主线程有窗口,因而它有自己的音讯循环,能够处理音讯,使程序能够敏捷呼应指令和其他事情;辅佐线程没有窗口,所以它不需求处理音讯。它可用于完结一些费时的作业,避免在由主线程处理这些作业时阻止程序音讯的处理。软件规划时有并行要求的模块置于独立的线程中,以完结体系的多使命并行作业。依据对体系实时多使命的剖析,将软件体系中的线程规划为:
(1)主线程
主线程是运用体系启动时创立的第一个线程,其他线程都是由主线程直接或直接创立。主线程首要担任创立客户界面、数据显现、与客户交互、体系初始化以及对其他线程进行监控。
(2)译码线程
译码线程是由主线程创立的,担任程序的译码,并将核算结构存入公共数据区,为通讯线程供给数据来历。
(3)通讯线程
通讯线程担任上下位机间的数据传输。上下位机间的传输以一来一回的方式进行。通讯线程接纳到下位机传来的数据,依据事前界说好的协议对它进行辨认,并依据辨认的成果来判别是否需求将插补指令等传给下位机,还需求告诉主线程来处理异常情况。
通讯线程所承当的使命是强实时周期性使命,译码线程所承当的使命是弱实时性使命,主线程承当的是实时突发性使命。因而依据体系使命实时性强弱不同,可为各个线程设置相应的优先级来确保实时性。主线程与进程的优先级相同,通讯线程的优先级高于主线程,而译码线程的优先级高于主线程低于通讯线程。
在线程优先级设置中,通讯线程的优先级最高,这使得通讯线程在需求CPU时刻片等资源时,能够顺利的抢占其他线程的资源,确保上下位机的通讯顺利,使下位机在加工时能够平稳的完结进程,并且使下位机在出现异常情况时能及时告诉上位机。由于通讯这一动作是按照某种频率进行的,因而通讯线程不会一向占用CPU资源,然后不会由于它的优先级高使其他线程无法运转。
详细完结原理架构如图1所示。
2.2 体系线程的详细完结
Delphi供给了许多与多线程编程相关的组件,其间最重要的是Tthread类,本文便是运用它来完结多线程编程。该类封装了大多数与线程相关的办法,运用Tthread类大大简化了多线程程序的开发过程。Tthread类是一个抽象类,不能够直接创立它的实例,可是能够创立它的派生类。创立办法在Delphi菜单中顺次挑选“File”→“New”→“Other”→“New”,挑选“Thread Object”项,在对话框中输入新的线程类的称号,承认后即创立了一个新的线程类:
其间:“private”及“protected”用来界说变量和程序函数,“procedure Execute;override;”是线程函数,用来编写线程的履行部分。一起Delphi还供给了各种函数用来运转和停止线程等。创立了线程的派生类后能够生成该类的方针,来表明运用程序的履行线程。各个线程创立好后将NC的解释程序、通讯程序等放在各自线程函数内,再创立线程的方针,设置几个线程就生成几个方针,在方针内编写翻开或停止线程等函数来操控线程的运转。
3 结语
根据Windows渠道的高级数控实时操作体系的开发,完结了不仅能向Windows渠道增加实时功用,并且使这些实时功用具有很好的可扩展性。本课题下步的方针是将此实时体系的规划完结在Windows XPEmbedded渠道上,使其具有高级数控体系需求的嵌入式设备的特性。