- 9
- 0
- 约3.17千字
- 约 7页
- 2021-12-03 发布于江苏
- 举报
基于PC的CNC软件的设计与实现
摘 要 本文提供了一种Windows环境下基于PC的CNC软件的总体结构,并且对于其中的若干实现方法进行了探索。
关键词 CNC,多任务,实时处理
1 总体结构及实现方法
1.1 软件的总体结构
CNC系统常常作为一个独立的过程控制单元用于工业自动化生产过程中,因此它的系统软件必须完成管理和控制两大功能。CNC系统是由软件和硬件组成的,硬件为软件的运行提供支持环境。由于硬件和软件在逻辑上是等价的,由硬件完成的工作原则上也可以由软件完成。因此软件的结构取决于软件和硬件的分工,也取决于软件本身的工作性质。根据目前该系统的设计,下位机只负责位置伺服控制,因此上位机负责其余的管理工作和控制工作。
数控软件的总体结构可以设计成六层,即输入层,译码层,刀补层,协调层,监控层,设备驱动层。输入层是数控程序。译码层将数控指令解释成为数控系统的内部数据格式。刀补层进行刀具补偿。协调层将指令分解到数控系统的各个功能部件。如数控指令翻译、辅助功能设备控制和运动控制。监控层对于系统当前的状态和当前指令的合法性进行检验。设备驱动层直接实现对系统功能部件的控制。
在该数控系统的软件中,采用了前后台型的结构形式,前台程序即实时中断程序完成全部的实时功能(包括协调层、监控层、设备驱动层),主要是插补功能和系统诊断功能、I/O处理等。后台程序的主要功能是插补前的准备功能及调度管理(包括输入层、译码层、刀补层),具体地讲,是数控程序输入、译码、刀具补偿、显示及上述任务之间的调度管理功能。后台程序是一个循环运行程序,在运行过程中,前台程序(中断服务程序)不断插入,共同完成零件加工任务。而位置伺服的任务主要由下位机完成。
在译码层和刀补层中,我们采用多任务调度的方式协调系统的工作,进行优化后可以最充分地利用系统的资源。加工程序由上位机进行译码、刀具补偿、速度处理后,得到刀具中心的插补指令数据,上位机将这些插补指令数据和其它的指令数据以固定格式存放于一缓冲区中,每次中断发生时,上位机根据这些指令数据进行相应的处理,如果存在插补指令则实时计算出插补数据,并且送入下位机,下位机从缓冲区根据这些数据控制相应轴的电机动作。当上位机中的一帧指令数据被读完后,在插补间隙自动计算出新的插补指令数据,填入缓冲区。
数控软件总体结构图
在上位机的内存中设置若干个插补缓冲区,用标志字指示当前数据块 的位置,引导下位机读取当前指令数据。当下位机进行控制时,上位机不断进行预插补计算,直至所有插补缓冲区填满为止,当接收到下位机的中断信号后,上位机进行实时的插补计算,并且将数据送到下位机。采用这样方式能够最充分地利用上位机CPU的时间,真正实现并行实时工作。
1.2 软件的具体实现方法
1.2.1 软件的运行环境和开发环境
采用Microsoft Windows 3.1作为开发环境,采用Borland C++ 3.1作为编程语言。
1.2.2 具体实现方法
. 启动画面的修改
在Windows启动时,会出现一幅带有Microsoft标志的启动画面,但作为专用数控系统,我们希望能用自己的启动画面代替该启动画面,显示具有数控系统标志的启动画面。方法如下:
方法一:
(a) 创建一幅BMP图,再它压缩成RLE文件,命名为CNC.RLE;
(b) 执行下面的命令形成新的WIN.COM模块:
COPY/B WIN.CNF +VGALOGO.LGO+CNC.RLE
(c) 重新启动Windows,可看到新的启动画面。
方法二:
(a) 编制一个DOS下显示图形的程序,图形可以是任意格式(*.bmp,*.gif,*.jpg等均可),选择自己需要并且喜欢的图形作为启动标志;
(b) 编制一个批处理文件,将图形显示程序放在前面,将Windows的启动命令Win/B放在后面(/B选择项使启动标志不出现);
(c) 用生成的批处理文件代替原来的Windows的启动命令,运行即可。
. 多任务调度的实现
在我们的数控系统中,为了实现多个任务之间的协调与管理,我们采用非抢先式的多任务调度和多缓冲区的方式实现了对于实时性不强的任务(数控程序输入、译码、刀具补偿、显示等)的调度,其具体实现方法是:
(a) 规定每个任务优先级计算方法(优先级为非固定的);
(b) 建立任务队列,排列当前需要完成的任务,此队列不考虑优先级;
(c) 在每个任务周期,计算每个任务的优先级,执行优先级最高的任务;
(d) 将每次任务执行的结果存储在多个缓冲区中,然后可以执行下一个同类任务。
在数控系统中,显示的任务优先级始终是最低的,而其它的任务的优先级则是变动的。通过变动各个任务的优先级进行协调,虽然每次都执行的是优先级最
原创力文档

文档评论(0)