基于C8051和μC/OS-Ⅱ的数控机床嵌入式执行控制器
在数控机床系统中,功能模块可分为两大部分:一部分是实时性要求不高的功能,例如人机界面交互管理等;另一部分是实时性要求高的功能,主要有伺服控制、插补计算等。根据这一特点,该系统采用两级控制结构,利用 IPC丰富的软件资源,提供图形化的人机交互环境;利用嵌入式执行控制器的高实时性和稳定性,实现快速、可靠的控制,充分发挥了二者的优点。两级之间用串行口进行实时通信。本文主要介绍嵌入式执行控制器的实现。
本文引用地址:http://www.amcfsurvey.com/article/201609/303540.htm1 数控机床系统硬件结构
数控机床系统硬件结构如图1所示,IPC作为上位机,安装有专用软件,实现人机交互;C8051020芯片及其外围电路构成的嵌入式执行控制器作为下位机,负责实时、可靠的控制。执行控制器通过串行口接收上位机的命令信息(包括:插补命令、开关量控制命令),再将这些信息转换成控制信号输送给相应的执行部件。例如,将插补命令转换成一连串的插补信号,输送给电机控制部件;将开关量控制命令转换成输出信号,通过I/O驱动隔离接口板输送给相应的开关控制器。执行控制器同时还有2个检测任务:一个是刀具是否运动到各轴限位点的检测,另一个是间隙电压的检测。这两个信息将为运动时的自动调节控制提供依据。执行控制器还负责将运行中的状态信息组装成帧,实时地传送给上位机。
2 μC/OS-Ⅱ在C8051F020($12.6125)上的移植
要使用μC/OS-Ⅱ,首先就必须把这个内核成功地移植到C805lF020上。μC/OS-Ⅱ的移植主要是对OS_CPU.H,OS_CPU_A.ASM和OS_CPU_ C.C三个文件进行修改,下面就具体的修改内容做介绍。
2.1 OS_CPU.H文件的修改
OS_CPU.H包括了用#define定义的与处理器相关的常量、宏和类型定义。其中,需要修改的部分如下:
2.2 OS_CPU_A.ASM文件的修改
该文件包含4个汇编语言函数。
(1)OSStartHighRdy()函数在多任务系统启动函数OSStart()中调用。作用是设置系统运行标志位OSRunning=TRUE;将就绪表中最高优先级任务的栈指针Load到SP中,并强制中断返回。
(2)OSCtxSw()函数是在任务级切换函数中调用的。作用是保存当前任务的环境变量,将当前SP存入任务TCB中,载入就绪最高优先级任务的SP,恢复就绪最高优先级任务的环境变量,中断返回。这样就完成了任务级的切换。
(3)OSIntCtxSw()在退出中断服务函数OSIntExit()中调用。作用是实现中断级任务切换。
(4)OSTicklSR()系统时钟节拍中断服务函数,其周期的大小决定了内核所能给应用系统提供的最小时间间隔服务。该中断由C8051F020($12.6125)的TO定时器完成,设置定时时间为20 ms。修改代码如下:
其中:TOVAL是16位定时器T0的时间常数,该系统采用25 MHz的外接晶振,模式1(16位)定时。
2.3 OS_CPU_C.C文件的修改
该文件中定义10个C函数,如下:
其中,最重要的是OSTaskStklnit(),它的作用是初始化堆栈,返回堆栈的最低地址、堆栈的长度,方便汇编语言实现任务的切换。其他9个函数是暂无具体功能,其功能可以根据需要在系统内核扩展时添加。
3 基于μC/OS-Ⅱ的数控机床系统设计
3.1 执行控制器的软件结构
如图2所示,系统总体分为3个功能块,即:与IPC的通信、命令解释和命令执行。其中,通信有发送和接收两方面内容;命令解释时,直接执行开关量控制命令;命令执行中,需要进行插补计算、检测间隙电压和限位开关状态及加工监测。
3.2 任务划分及其优先级的确足
(1)发送任务
嵌入式执行控制器发送给IPC的信息有2种:联络信号和运行中的状态信息。嵌入式执行控制器处于待命状态时,定期向IPC发送联络信号,用于确定 IPC 是否正常工作。若IPC运行正常,则IPC收到联络信号后,会回送给嵌入式执行控制器一个应答信号,若发送的多次联络信号都未收到应答,则认为IPC出错。嵌入式执行器处于加工状态时,将运行中的状态信息以固定格式定期向IPC发送。IPC收到信息后,将其转换成图形、文字等信息显示出来,提供给操作员,便于实时掌握加工状态,发送任务的实时性要求低。
(2)接收任务
嵌入式执行控制器接收IPC机发送的联络、应答和命令3种信息,若接收到联络信号或应答信号,则接收任务直接处理(发送应答信号或刷新联络状态位);若既不是联络信号也不是应答信号,则认为是命令信息,接收任务将命令完整接收后,关闭写接收缓冲区,激活命令解释任务。接收任务是由通信口接收中断触发的,其实时性要求高。
(3)命令解释任务
命令解释任务首先对接收缓冲区的命令信息进行校验和解释,处理完成后,清空并开放接收缓冲区,允许新命令的接收。这样做的目的是不在接收缓冲区中积压多条命令,在当前命令解释完成之前,不接收新命令,以提高嵌入式执行控制器对命令的响应速度。根据命令执行时间的长短,将命令分为开关量控制命令和插补命令2 种。开关量控制命令的执行时间短,因此在命令解释后直接执行,以减少任务切换的时间消耗。插补命令是加工命令,运行时间长,采用专门的加工监控任务来执行,命令解释任务只负责在命令解释完成后激活加工监控任务。命令解释任务的实时性要求高。
评论