1基于S3C44BOX的嵌入式磨削数控系统TheembeddednumericalcontrolsystemofgrinderbasedonS3C44BOX(湖南工业大学电气与信息工程学院)谭会生TanHui-sheng[注:本文章拟投微计算机信息嵌入式与SOC片上系统专题,2007.2.11初稿,2007.2.13修订稿,稿件ID编号:200702112229542937]摘要:阐述了一个嵌入式磨削数控系统,包括系统硬件设计和软件设计。该系统以S3C44BOX为控制器,以uC/OS-II为操作系统,以U盘进行加工信息的离线传输,以PWM方式进行电机控制,以LCD显示器进行显示,具有控制精度高,成本低,体积小,易于扩展和升级等特点,是传统机床的数控化改造和经济型数控机床开发的发展趋势。关键词:数控磨床,嵌入式系统,S3C44BOX微处理器,uC/OS-II操作系统,PWM控制[中图分类号]TP273[文献标识码]AAbstract:Thispaperpresentsanembeddednumericalcontrolsystemofgrinder,includingitsdesignofhardwareandsoftware.ThecontrollerisS3C44BOX,theoperatingsystemisuC/OS-II,themachining-informationistransferredbyUSBflashdisk,themotoriscontrolledbyPWMmode,thesysteminformationisdisplayedbyLCDdisplayerintheproposedsystem.Ithasmanyadvantagessuchashighercontrolaccuracy,lowercost,smallervolumeetc.,andmeanwhileitisextendedandupgradedeasily.Itbefitsthereconstructionfortraditionalmachinetool,andalsobefitsthedevelopmentforeconomicalnumericalcontrolsystem.Keyword:numericalcontrolsystemofgrinder,embeddedsystem,S3C44BOXMicroProcessorUnit,uC/OS-IIoperatingsystem,controlledbyPWMmode1前言嵌入式系统是以应用为中心,计算机技术为基础,软、硬件可剪裁,适用于应用系统对功能、可靠性、成本、体积,功耗要求严格的专用计算机系统。由于嵌入式系统具有微内核、系统精简、强实时性、专用性强等特点,因此特别适合具有实时性能要求的机电控制系统。传统的基于单片机的简易数控系统,虽然造价低,但功能不足,而基于工业PC的嵌入型数控系统、基于高端PLC的专用数控系统等性能较好,但造价太高。而基于高性能嵌入式微处理器和实时操作系统的嵌入式数控系统,将克服上述二类数控系统的不足,具有性能好,成本低,体积小,结构灵活等优点,具有高的性价比,是未来数控系统的发展方向。本文以基于M250磨床的数控系统改造为研究背景,探讨基于S3C44BOX实现的、具有一定通用性的嵌入式磨削数控系统的设计与实现问题。2嵌入式磨削数控系统的硬件设计嵌入式磨削数控系统以SAMSUNG公司基于ARM7TDMI的S3C44BOX微处理器为核心进行构建,该嵌入式磨削数控系统硬件组成如图1所示。2.1S3C44BOX微处理器简介S3C44BOX是三星公司专为手持设备和一般应用提供的高性价比、高性能的16/32位RISC型嵌入式微处理器。它集成了ARM7TDMI核,采用0.25mµCMOS工艺制造,并在ARM7TDMI核基本功能的基础上集成了8KBCache(数据或指令),内部SRAM、外部存储器控制器、LCD控制器、4个DMA通道、带自动握手的2通道UART、1个多主I2C总线控制器、1个I2S总线控制器、5通道PWM定时器、一个看门狗定时器、71个通用I/0口、8个外部中断源、具有日历功能的实时RTC、8通道10位A/D转换器、1个SIO接口以及PLL(锁相环)时钟发生器等丰富的外围功能模块,非常适合于成本和功耗要求较高的嵌入式应用系统。22.2存储器的扩展为了满足需要,本系统扩展了FLASH程序存储器和SDRAM数据存储器。FLASH程序存储器在系统中用于存放程序代码。本系统采用一片SST39VF160构建16位的FLASH存储器系统,其存储容量为2MB,并将其配置到存储器的BANK0,即将S3C44BOX的nGCS0接至SST39VF160的片选信号nCE端,S3C44BOX的A20~A1接至SST39VF160的A19~A0端,其地址范围是0x00000000~0x001FFFFF。SDRAM数据存储器在系统中主要用作程序的运行空间,数据及堆栈区。本系统使用HY57V651620B构建16位SDRAM存储器系统,并通过nCS6将其配置到存储器的BANK6,其存储容量为4组*16M位(8MB),其地址范围是0x0C000000~0x0C7FFFFF。XFLASHSDRAM轴程序存储器数据存储器驱PWM动GPIOX轴交流伺服电机器GPIO键盘测头控光参数设置测爪制电GPIOGPIOJTAG接口加工控制修整器驱隔动离S3C44BOXLCD显示器YGPIOX、Y运动坐标,参数值。磨削余轴量,工作状态,控制方式等指示驱PWM动Y轴交流伺服电机器GPIOUSB接口芯片U盘行程信光开关:号电GPIO测量:输隔GPIORS-232C接口电路PC机仪器入离图1嵌入式磨削数控系统硬件组成框图2.3通信和调试接口为了满足系统各种可能的通信和调试需要,系统配备了RS-232C接口,USB接口以及JTAG接口。其中RS-232C接口用于直接从PC机接受有关加工信息数据,USB接口用于接受U盘等USB移动设备存储的有关加工信息数据,而JTAG接口则供系统交叉调试使用。由于S3C44BOX只有UART0/1并没有集成RS-232C接口,这里选用MAX3232作为UART到RS-232C电平转换芯片,以便其与PC机等其它设备进行串行通信。因S3C44BOX内部没有USB接口,这里选用USB1.1版本的USBN9603作为S3C44BOX扩展USB控制器的接口芯片,二者采用并行总线方式进行连接,S3C44BOX通过总线操作(nGCS4作为片选信号)对USBN9603进行控制,完成USB的读写操作。由于S3C44BOX中集成了JTAG信号,因此只需引出这些信号线在板上扩出JTAG口,即可与JTAG调试器进行通信。有关接口电路的具体连接略。2.4电机驱动控制模块系统选用两个交流伺服电机,交流伺服电机的控制采用位置控制。系统中采用S3C44BOX所具有的脉冲宽度调制PWM方式的输出进行控制。32.5人机交互模块系统需要显示的基本信息包括X轴、Y轴坐标值(含X轴、Y轴运行方向指示)、参数值(磨削:粗、精、光;速度:进给、粗磨、精磨;修整;补偿量、补偿间隔;进给量、工件统计)、磨削余量(光柱)、工作状态指示(快进、粗磨、精磨、光磨、快退、等待、修整)和控制方式指示(自动、半自动、调校)等。同时为了操作和控制的方便,我们还可显示其他的有关操作信息和控制界面。因此本系统选用LCD液晶显示器进行显示。由于S3C44BOX处理器本身自带LCD控制系统,而且可以驱动所选用的液晶显示屏,所以只要选用合适的LCD显示器并把相应的控制信号进行连接即可。系统用于参数设置和加工控制的键盘采用矩阵式键盘,并选用中断扫描工作方式。3嵌入式磨削数控系统的软件设计为了保证系统的实时性,简化控制系统软件的设计,并考虑到实际开发的难易程度,系统选择了uC/OS-II实时操作系统。uC/OS-II是一个可裁减,源码开放、结构小巧、抢先式的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、实时性优良和可扩展性强的特点,并且结构简单、容易移植、适合学习的优点。3.1uC/OS-II操作系统的移植所谓uC/OS-II的移植,实际上就是对uC/OS-II中与处理器有关的代码进行重写或修改。其移植应满足以下要求:ARM处理器的C编译器可以产生可重入代码;可以使用C调用进入和退出临界区代码;处理器必须支持硬件中断,并且需要一个定时中断源;处理器需要能够容纳一定数据的硬件堆栈;处理器需要有能够在CPU寄存器与内核和堆栈交换数据的指令。移植uC/OS-II内核主要包括:用#define设置一个常量的值、用#define声明3个宏、声明10个与编译器相关的数据类型(在OS_CPU.H中);用C语言编写6个与操作系统相关的函数(在OS_CPU_C.C中);用汇编语言编写4个与处理器相关的函数(在OS_CPU_A.ASM中)。3.2硬件驱动层扩展在硬件之上,必须有驱动程序来实现对硬件的基本操作。事实上,uC/OS-II并没有给驱动程序提供统一的标准接口,任何在系统中实现硬件管理的都可以称之为驱动程序。底层驱动程序通常采用汇编或C语言编写,主要实现初始化硬件和释放硬件,把数据从内核传到硬件和从硬件读取数据,检测和处理设备出现的错误和故障。同时,还必须将对某个硬件进行的某项操作的代码封装成函数,供上层的程序调用。在本系统中,主要完成通讯接口、电机驱动控制、LCD显示等外设驱动函数的编写。限于篇幅,下面仅介绍系统中一个重要的驱动程序——USB驱动程序的编写。USB驱动程序的主要任务是初始化USB接口、控制USB的读写操作、USB中断操作及处理USB中断服务程序。USB主机的软件流程如图2所示。否开始初始化外设插入?中断发生?USB中断处理是设备挂起否查询USB外设有数据发送?是否是USB总线活动停止?挂起?发送数据接受命令,允许外设发送数据图2USB主机的软件流程图3.3应用程序代码的编写在编写应用代码之前,需根据自己的应用系统对内核进行一些配置(OS_CFG.H),并在INCLUDES.H系统头文件中包含用户头文件。43.3.1main主函数的编写多任务的启动是通过在主函数main中调用OSStart()来实现的。调用OSStart()后,从任务就绪表中找到优先级最高的任务控制块,启动高优先级任务启动函数OSStartHighRdy(),然后再启动多任务内核。在主程序main()中我们需要做的是:调用OSInit(),对有关变量初始化;创建任务;调用OSStart(),进入实时多任务环境,同时启动时间节拍定时器,调度任务就绪表中优先级最高的任务转入运行,获得CPU,运行开始。3.3.2中断函数的编写中断函数的编写和没有嵌入式操作系统时基本相同,只是在原来的基础之上在固定的两个位置增加两个函数OSIntEnter()和OSIntExit(),并在系统初始化时挂接在中断向量表中。在中断服务程序编写的过程中要注意关中断的时间。在uC/OS-II中,应把数据处理任务的优先级设得高一些,并在中断服务程序中使它进入就绪态,这样可保证系统在调用OSIntExit()时判断是否进行任务切换,并在中断结束后立即调度并执行相应的数据处理任务,以使中断响应的时间限制在一定范围之内。3.3.3用户任务的编写基于uC/OS-II操作系统内核的应用代码编程,主要就是对各个任务的编程。在本系统中OSTaskCreate()创建了10个用户任务:作业控制;U盘读写;键盘输入;代码翻译;插补运算;电机控制;液晶显示;检测报警;电源管理;时钟任务。同时还包括空闲任务和统计任务等2个系统任务。其中时钟任务优先级最高,它是一个超级任务用来对其他任务进行超时监控,以避免程序跑飞或陷入死循环。若数控系统功能需要增减,只要在相应的任务中进行模块的添加和删除。为了使系统更加快速、灵活、准确,根据任务的优先级把用户任务划分为四层:数据采集层,数据处理层,控制执行层,辅