最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于RTOS的伺服压力机数控系统

发布时间:2013-07-27 作者:关维德 毛玉良 李超彪  来源:万方数据
关键字:伺服 压力机 RTOS 数控系统 
本文针对传统曲柄压力机工艺适应性差的问题,提出了一种以LPC 2468嵌入式CPU为核心,移植了实时操作系统μC—OSⅡ为平台的伺服压力机数控系统,操作者能够根据不同的冲压工艺设定不同的加工曲线。该数控系统在保证良好的实时性、稳定性的同时,具有良好的开放性、人机界面和网络支持。

3 软件设计

  在ARM微控制器LPC 2468上移植嵌入式实时操作系统μC—OSⅡ,作为伺服压力机控制系统软件开发平台,同时在图形界面的开发上采用斗C/GUI作为开发工具。

  3.1 开发平台选择

  在诸多实时操作系统中,μC—OSⅡ是一种基于优先级的可抢先的硬实时内核,具有公开源代码、可移植性、可固化、可裁减、执行时间可确定性等特点,同时可由第三方提供μC/FS,μC/GUI,μC/IP等系统服务完成文件系统、显示、ip协议栈。因此选择μC—OSⅡ作为伺服压力机数控系统的软件开发平台。μC—OSⅡ包括了一个操作系统最基本的一些特性,如任务调度、任务通信、内存管理、中断管理等。

  μC/GUI是Miefium公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD的应用程序提供独立于处理器和LCD控制器之外的有效的图形用户接口,能够应用于任何LCD控制器中,并且适用于任何8位/16位/32位CPU,允许支持ANSI C的任何编译器,通过配置宏,可支持任何接口。

  3.2 移植μC—OSⅡ

  ARM处理器可以工作在7种模式下,和本次移植相关的模式有:用户模式(usa)、系统模式(sYs)、中断模式(IRQ)、快中断模式(FIQ)。

  从生产安全角度考虑,压力机上安装有光电检测装置,要求控制系统一旦检测到光线遮挡事件(例如人手伸入模具工作区),应立即无条件停止压力机。这个事件属于最紧急事件,要求CPU在第一时间内进行处理。

  由于μC—OSⅡ仅仅管理常规中断(IRQ),而对快中断(FIQ)不作管理,在移植μC—OSⅡ内核的时候,对快中断进行了处理,直接使用nQ中断而不经过操作系统(图2),可通过一般的方法自由编写中断程序。理论上快中断的响应时间最大为29个时钟周期,本方案系统时钟为72 MHz,可以计算出FIQ的响应时间为0.4μs,能够满足实际要求。

μC—OSⅡ与FIQ关系图
图2μC—OSⅡ 与FIQ关系图

  处理快中断,首先要在启动代码文件Vector.8中中设置中断向量表,代码如下:

代码
代码

  μC—OSⅡ的移植工作主要都集中在多任务切换的实现上,这部分代码用来保存和恢复CPU现场,只能使用汇编语言完成。要移植μC—OSⅡ,需要修改3个与ARM体系结构相关的文件,代码量大约500行。下面简单介绍这3个文件的主要内容。

  1)OS_CPU.H文件。该文件主要内容为:数据类型定义、堆栈单位定义、堆栈增长方向定义、宏定义(包括开关中断的宏定义,以及进行任务切换的宏定义)。

  2)OS_CPU_C.C文件。该文件主要内容为:任务堆栈初始化、系统钩子函数。文件中需要实现几个操作系统规定的hook函数,一般情况下,只需简单地将它们都实现为空函数。

  3)OS_CPU_A.S文件。该文件主要定义开关中断、任务切换处理相关的几个函数,可按照规定要求编写。

  3.3 移植μC/GUI

  μC/GUI移植工作的主要内容为修改配置文件和编写驱动程序。

  μC/GUI目录下的配置文件目录为Con_fig。其下有3个配置文件,分别为GUlCONF.h,GUlTouchConf.h和LCDConf.h。

  GUICONF.h文件用于配置GUI移植到不同操作系统的选项,在本文中配置为移植到μC—OSⅡ中,允许多任务调用μC/GUI函数,支持触摸屏,显示防闪烁支持等即可。代码摘录如下:

代码

  GUITouchConf.h用于配置触摸屏的相关属性值,例如校正配置宏等。

  LCD_Cod.h文件用于配置LCD显示屏的选项,包括颜色位数,水平、竖直方向的分辨率等。所配置的LCD为640×480像素,8位颜色深度(256色)支持。代码摘录如下:

代码

  μC/GUI的底层驱动包括LCD显示驱动和触摸屏驱动。对于目前大多数LCD控制器,μC/GUI提供了现成的驱动程序,不需要自己编写。μC/GUI中的触摸屏驱动须提供4个底层驱动接口函数,可根据相应的触摸屏手册编写。

  3.4 应用程序设计

  μC—OSⅡ最多可以管理56个用户任务。各个任务分配不同的优先级,各个具体任务的编写比较简单,只需要在对应的任务函数体中填入相应的处理代码即可。任务函数体如下:

代码

  伺服压力机控制系统由7个基本任务和若干中断处理任务构成:
  运动控制任务:优先级0;
  按键扫描任务优先级1;
  信号检测任务优先级2;
  输出控制任务优先级3;
  润滑任务优先级4;
  通讯任务优先级5;
  界面显示任务优先级10;
  最紧急事件处理FIQ中断;
  普通紧急事件处理IRQ中断。

本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。