(1) CNC系统的多任务性。CNC系统通常作为一个独立的过程控制单元用于工业自动化生产中,因此它的系统软件必须完成管理和控制两大任务。系统的管理部分包括输入、I/O处理、显示和诊断。系统的控制部分包括译码、刀具补偿、速度处理、插补和位置控制。在许多情况下,管理和控制的某些工作必须同时进行。例如,当CNC系统工作在加工控制状态时,为了使操作人员能及时地了解CNC系统的工作状态,管理软件中的显示模块必须与控制软件同时运行。当CNC系统工作在NC加工方式时,管理软件中的零件程序输入模块必须与控制软件同时运行。而当控制软件运行时,其本身的一些处理模块也必须同时运行。例如,为了保证加工过程的连续性,即刀具在各程序段之间不停刀,译码、刀具补偿和速度处理模块必须与插补模块同时运行,而插补又必须与位置控制同时进行。

下面给出CNC系统的任务分解图(图3-10(a))和任务并行处理关系图(图3-10(b))。在图3-10(b)中,双向箭头表示两个模块之间有并行处理关系。

(2) 并行处理的概念。并行处理是指计算机在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不相同的工作。并行处理最显著的优点是提高了运算速度。拿n位串行运算和n位并行运算来比较,在元件处理速度相同的情况下,后者运算速度几乎提高为前者的n倍。这是一种资源重复的并行处理方法,它是根据“以数量取胜”的原则大幅度提高运算速度的。但是并行处理还不止于设备的简单重复,它还有更多的含义。如时间重叠和资源共享。所谓时间重叠是根据流水线处理技术,使多个处理过程在时间上相互错开,轮流使用同一套设备的几个部分。而资源共享则是根据“分时共享”的原则,使多个用户按时间顺序使用同一套设备。

目前在CNC系统的硬件设计中,已广泛使用资源重复的并行处理方法,如采用多CPU的系统体系结构来提高系统的速度。而在CNC系统的软件设计中则主要采用资源分时共享和资源重叠的流水线处理技术。

(3) 资源分时共享。在单CPU的CNC系统中,主要采用CPU分时共享的原则来解决多任务的同时运行。一般来讲,在使用分时共享并行处理的计算机系统中,首先要解决的问题是各任务占用CPU时间的分配原则,这里面有两方面的含义:其一是各任务何时占用CPU;其二是允许各任务占用CPU的时间长短。

在CNC系统中,对各任务使用CPU是用循环轮流和中断优先相结合的方法来解决。图3-10(c)是一个典型CNC系统各任务分时共享CPU的时间分配图。

系统在完成初始化以后自动进入时间分配环中,在环中依次轮流处理各任务。而对于系统中一些实时性很强的任务则按优先级排队,分别放在不同中断优先级上,环外的任务可以随时中断环内各任务的执行。

每个任务允许占有CPU的时间受到一定限制,通常是这样处理的,对于某些占有CPU时间比较多的任务,如插补准备,可以在其中的某些地方设置断点,当程序运行到断点处时,自动让出CPU,待到下一个运行时间里自动跳到断点处继续执行。

(4) 资源重叠流水处理。当CNC系统处在NC工作方式时,其数据的转换过程将由零件程序输入、插补准备(包括译码、刀具补偿和速度处理)、插补、位置控制4个子过程组成。如果每个子过程的处理时间分别为,,, ,那么一个零件程序段的数据转换时间将是t=+++

如果以顺序方式处理每个零件程序段,即第一个零件程序段处理完以后再处理第二个程序段,依此类推,这种顺序处理时的时间空间关系如图3-11(a)所示。从图上可以看出,如果等到第一个程序段处理完之后才开始对第二个程序段进行处理,那么在两个程序段的输出之间将有一个时间长度为t的间隔。同样在第二个程序段与第三个程序段的输出之间也会有时间间隔,依此类推。这种时间间隔反映在电机上就是电机的时转时停,反映在刀具上就是刀具的时走时停。不管这种时间间隔多么小,这种时走时停在加工工艺上都是不允许的。消除这种间隔的方法是用流水处理技术。采用流水处理后的时间空间关系如图3-11(b)所示。

流水处理的关键是时间重叠,即在一段时间间隔内不是处理一个子过程,而是处理两个或更多的子过程。从图3-11(b)可以看出,经过流水处理后从时间开始,每个程序段的输出之间不再有间隔,从而保证了电机转动和刀具移动的连续性。

从图3-11(b)中可以看出,流水处理要求没一个处理子程序的运算时间相等。而在CNC系统中每一个子程序所需的处理时间都是不相等的,解决的办法是取最长的子程序处理时间为处理时间间隔。这样当处理时间较短的子程序时,处理完成之后就进入等待状态。

(a) 顺序处理

(b) 流水处理

图3-11 资源重叠流水处理

在单CPU的CNC装置中,流水处理的时间重叠只有宏观的意义,即在一段时间内,CPU处理多个子程序,但从微观上看,各子程序分时占用CPU时间。

CNC系统的多任务并行处理的更多相关文章

  1. 关于开放式CNC系统实时软件控制系统的一些简单分析

    随笔: 黄杰U201310771 首先,我们一起了解或复习两个概念:开放式CNC和开放式CNC体系结构.按照工EEE规定:一个开放式的系统必须具备不同应用程序能很好地运行于不同供应商提供的不同平台之上 ...

  2. CNC系统实时性分析

    该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:数控系统中控制装置与现场设备通信的实时性要求,数控系统要快速而有效的对复杂而庞大的操作任务进行处理. ...

  3. Socket 多任务(多进程/线程、I/O多路复用、事件驱动开发框架)

    0. 概述 1. 循环版实现多连接 2. threading.Thread 多线程 3. SockerServer 实现多任务 3.1 ForkingMixIn - 多进程(限 linux) 3.2 ...

  4. SpringBoot开发案例之多任务并行+线程池处理

    前言 前几篇文章着重介绍了后端服务数据库和多线程并行处理优化,并示例了改造前后的伪代码逻辑.当然了,优化是无止境的,前人栽树后人乘凉.作为我们开发者来说,既然站在了巨人的肩膀上,就要写出更加优化的程序 ...

  5. iOS4.0及以上系统,关闭程序,applicationWillTerminate为调用问题解决

    iOS4.0以后系统支持多任务类型,程序按下home键后,程序进入后台运行,如果内存不足被系统关闭或者手动关闭,都不会调用applicationWillTerminate回调函数. 解决方法:可以在程 ...

  6. REX系统了解1

    REX是高通开发出来的一个操作系统,起初它是为了在Inter 80186处理器上应用而开发的,到后来才转变成应用在ARM这种微处理器上.他历经了很多版本,代码也越来越多,功能也越来越完善.REX只用不 ...

  7. Linux多任务编程之一:任务、进程、线程(转)

    来源:CSDN  作者:王文松  转自:Linux公社 Linux下多任务介绍 首先,先简单的介绍一下什么叫多任务系统?任务.进程.线程分别是什么?它们之间的区别是什么?,从而可以宏观的了解一下这三者 ...

  8. Alibaba高并发业务秒杀系统落地实战文档,已实践某大型秒杀场景

    前言: 高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时.CPU load升高.GC频繁.死锁.大数据量存储等等,这些问题能推动我们在技术深 ...

  9. 花时三月 终于Spring Boot 微信点餐开源系统! 附源码

    架构 前后端分离:             Nginx与Tomcat的关系在这篇文章,几分钟可以快速了解: https://www.jianshu.com/p/22dcb7ef9172 补充: set ...

随机推荐

  1. FineReport——获取控件值和单元格值

    设置单元格的值(填报预览): //contentPane.setCellValue(1,0,"abc");//参数面板给单元格赋实际值,即可填报 contentPane.curLG ...

  2. pytorch实现花朵数据集读取

    import os from PIL import Image from torch.utils import data import numpy as np from torchvision imp ...

  3. 使用Struts,实现简单的登录

    一.新建项目Struts 1.右键 new————Web Project 2.点击项目——右键——myeclipse——add Struts Capabilities.....——选择struts2. ...

  4. Redis、RabbitMQ、Memcached

    知识目录: Memcached Redis RabbitMQ Memcached 回到顶部 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中 ...

  5. 使用super调用父类的构造方法

    package com.bjpowernode.t02inheritance.c09; /* * 使用super调用父类的构造方法 */public class TestSuper02 { publi ...

  6. js创建、写入、读取文件(转)

    下面是对此知识的系统介绍(转自互联网): Javascript 是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和 ...

  7. 华为交换机SNMP OID

    http://vbb.fyjy.net:88/showthread.php?t=4647

  8. centos安装autossh

    $ sudo yum install wget gcc make$ wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz$ tar -xf ...

  9. 【Java】 剑指offer(40) 最小的k个数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7 ...

  10. 042 将数据导入hive,将数据从hive导出

    一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...