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

基于ARM和CPLD的开放式数控系统设计

发布时间:2014-11-04 作者:佚名  来源:测控网
关键字:ARM CPLD 开放式 数控系统 
随着工业自动化技术和数控技术的飞速发展,数控系统的功能得到了极大的扩展。用户对数控系统提出可联网、开放性等更高的要求。开放性是数控系统未来的发展趋势。开放式数控系统的核心是建立一种对数控系统的软硬件开发商、机床制造商和最终用户都开放的体系结构和标准,使数控系统不依赖于特定的厂家,达到可互联、可互操作、可重组和可互换的目的。

2 系统中断控制

  本系统采用基于数据采样法的粗精两级插补结构,插补周期为8 ms,采用中断方式保证通信的实时性。中断信号由CPLD每隔8 ms定时产生。当接收到CPLD的中断信号时,ARM把粗插补计算结果写入CPLD的固定地址。CPLD从固定地址读取数据计算脉冲数,输出脉冲信号,完成运动控制。本系统的中断控制分成3部分:Windows CE中断服务、应用程序中断响应程序和CPLD程序。

  2.1 Windows CE中断服务

  Windows CE是实时操作系统,其实时性体现在6个方面:(1)具有256个线程优先级;(2)应用程序可以控制提供给每个线程的时间片,计时器精确到1 ms;(3)优先级倒置处理机制;(4)支持嵌套中断;(5)中断延迟时间短;(6)更细粒度的内存管理控制[4-5]。Windows CE以上机制特别是中断体系保证了数控系统的实时性。

  Windows CE的中断体系包括核心态的中断例程ISR和用户态的中断线程IST两部分。ISR主要响应中断请求,识别中断源,给操作系统内核返回相应的中断标识。 ISR具有最高的优先级。本系统采用ISR完成中断服务。进入ISR以后,系统中所有的同级或下级中断均被屏蔽。为了不降低系统执行多任务的性能,ISR 应非常短小精干,以使其他中断也能够获得及时的服务。

  定制Windows CE中断服务程序步骤如下:

  (1)在操作系统内核中注册事件hMotor,用于操作系统和应用程序中断响应的同步。

  (2)在操作系统内核中注册插补中断标识号SYSINTR_PWM_READY。

  (3)调用函数InterruptINItialize,使中断请求和hMotor事件挂钩,当接收到中断请求时操作系统自动将事件置为有信号,退出ISR时将事件置为无信号。

  (4)编写ISR程序。ISR程序框架如下:

  if(IntPendVal==INTSRC_EINT1)//判断中断是否来自CPLD

  {

  s2410INT|=BIT_EINT1;//清除中断请求

  if(PWM_FINISH==TRUE)

  return(SYSINTR_PWM_READY);

  //向内核返回中断标识号

  rADDR=*pulse_buf;//向CPLD写数据

  }

  当 ARM接收到由CPLD发出的中断请求,操作系统将调用ISR,并将hMotor事件置为有信号。在ISR中将粗插补计算结果写入CPLD,并向操作系统内核返回中断标识号。退出ISR时,操作系统将hMotor事件置为无信号。整个ISR程序非常精短,保证了系统其他程序的正常运行。

  2.2 应用程序中断响应程序

  应用程序无法直接获知是否有中断请求。利用hMotor事件使操作系统中断服务与应用程序中断响应程序达到同步。通过调用WaitForSingleObject函数查询该事件状态,应用程序可获知是否有中断请求并及时响应中断。中断响应程序框架结构如下:

  while(!IsEnd)//判断插补是否结束

  {

  ……//粗插补计算

  WaitForSingleObject(hMotor,INFINITE);//无限期等待

  //hMotor事件状态变为有信号

  DeviceIoControl();//向操作系统传递

  //粗插补计算结果,即位置增量

  }

  插补线程启动后进行插补计算,调用WaitForSingleObject函数阻塞插补线程,等待hMotor事件状态变为有信号。当操作系统接收到中断请求后调度ISR,将事件置为有信号。此时WaitForSingleObject函数被返回,插补线程阻塞状态解除。通过调用 DeviceIoControl函数将插补结果传递到驱动层,再由操作系统将数据发送到CPLD。插补运算时间远小于插补周期,因此插补线程经常处于阻塞状态。WaitForSingleObject函数虽然会阻塞当前线程,但是不会占用任何CPU资源,因此即使插补线程优先级较高,当其被阻塞时也不会影响其他线程的正常运行。

  2.3 CPLD程序

  CPLD程序的逻辑如图4所示。

CPLD程序的逻辑

  通过40 MHz时钟分频,CPLD内部产生125 Hz(周期8 ms)的脉冲序列。当接收到启动指令时,CPLD将该脉冲序列发送到ARM作为中断信号。ARM的中断触发模式为沿触发,上升沿为有效中断请求。ARM接收到中断请求后,向CPLD传送数据。CPLD内部建立2个数据缓冲区,设置标志FLAG。当FLAG为0时,CPLD将ARM传送的数据写入缓冲区1,读取缓冲区2的数据进行计算输出;当FLAG为1时则反之。设定2个数据缓冲区可以保证数据读写的准确性和运动控制的连续性。CPLD接收到结束指令后,不再向ARM发送中断信号,整个系统的中断控制停止。

3 实验

  本系统已经运用于激光沉积焊接机,并成功进行了实物加工。图5是该系统的激光焊接图。该焊接轨迹由正方形和圆形组成。在操作系统ISR中写入检测程序,记录中断情况。在实验中,所有中断信号均被正确处理,hMotor事件状态切换正常,没有丢失中断和事件的情况,即应用程序与操作系统、ARM与CPLD的通信状态良好。该系统的中断控制能保证系统实时性,直线加工和圆弧加工均能很好地满足加工精度。

系统的激光焊接图

  本系统充分利用了Windows CE的良好实时性、ARM的管理能力和CPLD的逻辑计算能力,硬件组成简单,软件开发方便,具有开放性强、实时性好、稳定性高、人机交互友好和性价比高等优点,可满足高速度和高精度的加工要求。本系统设计方案已实际运用于激光沉积焊接数控系统中,运行状态良好,加工精度较高。本系统可运用于各种机床数控系统,具有广泛使用价值。
 

2
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。