基于ARM和CPLD的开放式数控系统设计
扫描二维码
随时随地手机看文章
随着工业自动化技术和数控技术的飞速发展,数控系统的功能得到了极大的扩展。用户对数控系统提出可联网、开放性等更高的要求。开放性是数控系统未来的发展趋势。开放式数控系统的核心是建立一种对数控系统的软硬件开发商、机床制造商和最终用户都开放的体系结构和标准,使数控系统不依赖于特定的厂家,达到可互联、可互操作、可重组和可互换的目的[1]。基于工业PC的开放式数控系统已得到广泛运用,它能够快速开发出独具特色的软件系统,具有良好的人机界面,但资源利用率不高、体积较大、携带不方便。ARM、CPLD和DSP等微处理器的快速发展,为开放式数控系统的发展提供了新的实现方法[2]。
ARM 具有较强的事务管理功能,可以运行具有良好人机界面的多线程应用程序,其优势主要体现在程序控制上。CPLD具有较强的逻辑运算能力,可用于进行插补运算及运动控制等。Windows CE是嵌入式实时操作系统,其独特体系结构和运行机制使其能够快速响应外部中断,并调度相关程序进行处理[3],可以满足数控系统的实时性要求。本文提出一种基于ARM9和CPLD的开放式数控系统。该系统中ARM9移植了Windows CE嵌入式操作系统,通过开发应用程序实现信息输入、运动显示和粗插补等功能; CPLD实现精插补和运动控制。整个系统具有结构紧凑、集成度高、可靠性强和友好人机交互等特点。
1 系统设计
1.1 系统硬件设计
本系统ARM采用SAMSUNG公司的S3C2410,CPLD采用ALTERA公司FLEX6000系列的EPF6016。系统硬件结构如图1所示。
S3C2410 内部资源丰富,可嵌入Windows CE操作系统,并进行复杂的信息处理。系统以LCD和触摸屏为人机交互装置,采用10 MB的以太网接口芯片CS8900A,可连接到Internet或局域网。在PC机上生成的CAD文件通过以太网或SD卡输入到处理器中。系统采用 NANDFLASH存储数据和程序。
EPF6016是ALTERA公司为大容量设计提供的一种低成本可编程交织式门阵列,共有16 000个可用门、1 320个逻辑单元、117个I/O引脚,每个I/O引脚都有独立的三态输出使能控制。EPF6016接收ARM的插补指令进行精插补,输出控制信号,并采集编码器的反馈信号和限位开关零点开关的状态信号。
本系统将EPF6016直接连接到S3C2410的存储总线上。S3C2410与EPF6016之间依靠24位数据总线和8位地址总线进行指令和数据的传输,提高了通信效率。S3C2410与EPF6016之间的总线还包括了片选信号线、读写控制信号线和中断信号线。
1.2 系统软件开发
本系统软件开发包括Windows CE应用程序开发和CPLD程序开发。采用C#语言开发Windows CE应用程序,采用VHDL语言开发CPLD程序。系统软件结构如图2所示。
Windows CE应用程序是基于多线程的。应用程序包括信息输入、译码、运动显示、故障管理、电机启动停止和插补等功能模块,每个功能模块都是一个独立的线程。信息输入、译码是非实时任务,线程优先级设为默认值251;故障管理、电机启动停止是实时非周期性任务,属于弱实时任务,线程优先级设为247,即用户态实时级别;插补、运动显示是实时周期性任务,属于强实时任务,线程优先级设为3,即核心态实时级别。
CPLD外接40 MHz时钟,程序中使用的所有时序均由该时钟分频而得。本系统采用基于数据采样法的粗精两级插补结构,插补周期为8 ms,采样周期为4 ms。因此中断程序和精插补程序基于125 Hz时序运行;数据采样、故障监测和速度位置控制基于250 Hz时序运行。
系统数据传递如图3所示。插补是本系统的一个重要环节,因为插补直接影响系统的实时性、运动控制和加工精度。从图3可见粗插补计算结果从应用程序传递到操作系统内核,再由内核发送到CPLD进行精插补运算。由于插补是一项硬实时任务,因此数据传递必须实时准确。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所示。
通过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的逻辑计算能力,硬件组成简单,软件开发方便,具有开放性强、实时性好、稳定性高、人机交互友好和性价比高等优点,可满足高速度和高精度的加工要求。本系统设计方案已实际运用于激光沉积焊接数控系统中,运行状态良好,加工精度较高。本系统可运用于各种机床数控系统,具有广泛使用价值。