基于高档数控系统的实时多任务实现

发布者:vettykatty最新更新时间:2016-09-13 来源: e-works关键字:数控系统  多任务 手机看文章 扫描二维码
随时随地手机看文章
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平台上,使其具备高档数控系统需要的嵌入式设备的特性。

关键字:数控系统  多任务 引用地址:基于高档数控系统的实时多任务实现

上一篇:FANUC系统数控机床网络化集成技术
下一篇:基于PLC的异步电动机综合控制系统设计

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

基于stm32的简单多任务切换设计
系统数据: 1)当前的PID 2)所有的进程总数PAMOUNT //多任务系统的初始化 1. 设置MSP值 2. 设置临时的PSP值(因为这段实际上只在启动定时器之前有效) 3. 设置CONTROL =1(设置双堆栈),马上会自动切换到PSP上 4. 设置PID=0,设置PAMOUNT=0 5. 设置为进程信息表起始地址到PLIST(注意进程信息表是向上生长的) 6. 设置为进程堆栈分配的起始地址到PSTACK(堆栈是向下生长的) //调用AddTask添加任务 1. 写入配置信息到任务表中(任务起始地址,堆栈地址(首次进行分配)xPSR等等) a) 至于输入参数,就存放在任务的堆栈中 //启动任务切换 1. 设置S
[单片机]
适应实时多任务的微控制器高效指令支持
摘要:开发高效的实时多任务微控制器系统,除了采用高速器件之外,适当的指令支持能简化控制结构,减少程序代码,增强实时响应能力。本文提出了一些适应实时多任务的微控制器高效指令功能设计。 关键词:微控制器 实时多任务 指令 微控制器系统即国内通常所称的单片机系统,主要用于物理设备的接口和直接控制。虽然控制逻辑相对微处理机系统而言比较简单,但由于多数情况下需要实时响应,而且经常要同时处理多个对象的协同工作,因此,不仅对程序的运行效率有较高的要求,还要求微控制器具备较强的多任务处理能力。另一方面,由于量大面广,以及具体应用条件的限制,希望微控制器的成本要低;而这又只有在微控制器的硬件结构相对简单的前提下才能实现,这就限制了微控制器的指令
[应用]
基于MDK RTX的Cortex-M3多任务应用设计
1 MDK RL RTX和COrtex M3概述 MDK开发套件源自德国Keil公司,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。MDKRL IUX是一个实时操作系统(RTOS)内核,完全集成在MDK编译器中。广泛应用于ARM7、ARM9和Cortex-M3设备中。它可以灵活解决多任务调度、维护和时序安排等问题。基于RL I订X的程序由标准的C语言编写,由Real View编译器进行编译。操作系统依附于C语言使声明函数更容易,不需要复杂的堆栈和变量结构配置,大大简化了复杂的软件设计,缩短了项目开发周期。 Cortex M3是一个32位的核。它是首个基于ARMv7M架构,主要针对价格敏感但又具备高系统效能需求的嵌
[单片机]
基于MDK RTX的Cortex-M3<font color='red'>多任务</font>应用设计
基于高档数控系统的实时多任务实现
0 引言   实时性是数控系统一项重要的性能指标。   通信在IPC(Industrial Personal Computer)与运动控制器构成的开放式数控系统开发平台上,虽然这种主从式结构,确保了运动控制指令在运动控制器内高速、实时的被执行,但在PC平台上,仍需要完成诸如实时显示、预处理计算、系统状态监控等许多任务。为了保证系统的实时性能,拟采用多线程技术,通过多任务并行处理的方式,提高系统实时性。 1 进程与线程以及多线程技术   Windows操作系统既支持多进程,又支持多线程。一个进程就是应用程序的一个实例,一次执行过程也就是调入内存准备执行的程序,包括当前执行的应用程序的执行代码和程序执行相关的一些环境信息。每
[嵌入式]
关于STM32的裸机多任务多线程心得
多任务 并行处理 首先我们来理解一下并行处理,初学者写程序通常是顺序执行,当我们逐渐想成为“专业”人士的时候顺序执行 的程序已经不能满足我们了,所以就需要多任务多线程系统,市面上标准的一些操作系统比如ucos,freeRTOS这些操作系统需要的学习周期长,范围广。在网上看到了一本书 单片机编程魔法师之高级裸编思想 在没学会ucos的阶段学习用这种思想过度感觉非常nice! 单片机是支持多任务同时并行地运行在一个系统中,在具体介绍之前先看一看单片机的硬件结构 这个图中我们可以看出,单片机的运行是在ALU的主导下进行的;而定时器指是一个定时装置,它在定时计数期间是无需ALU干预的,完全独立运行;串口的通讯单元对数据的接收与发
[单片机]
关于STM32的裸机<font color='red'>多任务</font>多线程心得
数控同步现场总线与CAN总线网关的设计
引言     现场总线控制系统在过去集散控制系统的基础上顺应用户对控制系统提出的开放性的要求而诞生。开放的具有互操作性的现场总线将网络现场的控制器及仪表设备互联,构成现场总线控制系统。由于工业控制领域现场总线技术的竞争,形成了当今众多总线标准并存的局面。这一局面限制了用户对总线产品的选择,同时也约束了总线技术的发展,这也使得各现场总线之间的互联和互操作成为当务之急。     开放式数控系统在结构上具有互换性、伸缩性、可操作性和可移植性,其能够方便灵活的进行裁剪、扩展和升级。数控系统中的现场总线是数控装置、执行装置和传感器件之间通信的系统。数控系统的开放性势必对现场总线开放性提出一定的要求。     数控同步现场总线(N
[嵌入式]
开放式数控系统中IPC与PLC通信技术
  IPC指的是工业中的使用计算机,也就是工业PC,工业PC的设计、制造与实际使用需要考虑到实际工作环境的影响,因为工业生产中的设备需要能够承受温度、湿度、机械扰动、电磁场甚至灰尘等恶劣条件的影响,因此IPC的制造需要使用工业级别的处理器,全部密封的封装箱柜,并且在设备中需要安装保持空气洁净的器件,同时还要能够铺垫避免机械扰动的物质和抗电磁干扰的屏蔽器件,加上多方面的保护措施才能够在工业环境中长期稳定运行,因此其具有极强的稳定性,可以广泛应用在工业、航空、矿业、军事等多种领域中。   PLC的全称为可编程控制器,它是在计算机基础上进行开发而成的自动化工业控制器。在工作中可编程控制器可以进行随时更改程序、适应性强,因此具有很强的
[嵌入式]
STM32 简单多任务调度
STM32的开发目前大多数还开处于“裸奔”的阶段,处于开发成本的考虑,可能还未嵌入任何的RTOS系统,由于没有操作系统的支持,因而不能方便的对多任务进行调度和管理,在main函数中你可能会写成如下方式: int main(void) { while (1) { Task1(); // 调用任务1 Task2(); // 调用任务2 } } 但简单这样写的话会存在一个问题,假如任务1是一个很紧急的任务,如AD采样任务,需要不断的去执行,而任务2是一个不太紧急的任务,只要保证一段时间执行一次就行(如控制LED灯闪烁,只需要每1s钟闪烁一次)
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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