一种基于MCS51的微型计算机数控系统设计叶华乔1,黄纯国2(1.武汉船舶职业技术学院湖北武汉4300502.江苏技术师范学院计算机科学与工程学院江苏常州213001)摘要:本文开发出一套小型计算机数控系统。在硬件上,由上位机和下位机两部分构成。上位机采用PC机或工控机,主要实现与用户交互.,完成数据处理。下位机采用MCS-51单片机系统,主要实现通讯及强实时信号的处理。下位机控制软件使用了嵌入式实时操作系统μC/OS-II进行开放式数控系统的开发。软件设计部分,上位机采用VisualBasic为开发工具,下位机采用C51、51汇编。关键字:数控系统;μC/OS-II;嵌入式系统中图分类号:TP273文献标识码:ADesignofaCNCsystembasedonMCS51YEHuaqiao1,HUANGChunguo2(1.WuhanInstituteofShipbuildingTechnologyHubeiWuhan4300502.JiangsuTeachersUniversityofTechnologyJiangsuChangzhou213001)Abstract:InthisthesisaminiatureCNCsystemwasdeveloped.Thesystemhardwareconsistsofanupperprocessorandanlowerprocessor.PCisusedastheupperprocessor,whichimplementsasaninterfacebetweenuserandcomputerandcompletesdataprocessatthesametime.ThelowerprocessorisanMCS-51monolithicprocessor,whichcancommunicatewiththeupperprocessor.AμC/OS-IIReal-timeOperatingSystemwasappliedtodesigntheCNC.Insoftwaredesign,VisualBasic、C51、51assemblewereusedasdevelopmenttools.ThisminiatureCNCsystem,withsimpleinterface,iseasytouseandproducedaccurateresults.Keywords:CNC;μC/OS-II;EmbeddedSystem1引言随着科技的进步,数字控制技术、数控系统得到飞速发展。机床的计算机数控系统就是这些机电一体化技术最具代表性的系统。计算机数控系统是由计算机承担数控中的命令发生器与控制器的数控系统。计算机接收的位置运动的指令,将其生成各坐标轴的位置命令并实时输出给各坐标轴的控制器,控制器按控制策略控制各轴伺服系统,使驱动器驱动执行机构,带动机器的各坐标轴按给定命令运动。2微型计算机数控系统总体介绍微型数控(CNC)系统的硬件分成了两大部分,PC机部分和一块用MCS-51单片机开发的硬件电路板,这两部分是使用串行口RS-232连接起来的。(本文下面提到的上位机、下位机分别指PC机、单片机系统)上位机上的软件负责实现本系统的用户操作界面、零件加工程序的输入、译码、速度计算等功能,最后形成一组供下位机插补计算用的数据信息。下位机除了处理一些实时性强的机床信号外,主要任务就是根据上位机指令执行机床控制和插补运算,输出机床的控制信号。微型数控系统的简单结构如图1。图1微型数控系统结构框图3上位机软件设计3.1上位机软件总体设计框图上位机软件的开发是使用运行在Windows操作系统下的VisualBasic工具完成的,选用VisualBasic是因为它的简单易用,而且对于本系统的开发具有足够强大的功能。上位机软件的结构如图2。图2上位机软件结构框图从图2中可以清楚地看出上位机软件的基本功能。首先,上位机软件提供了一个零件加工程序的编辑窗口,按照系统预先设定的语法编写零件加工程序,然后编译,如果没有错误提示的话,编译的程序就可以送到下位机开始加工了;如果程序中有语法错误,则系统会给出提示,帮助修改。其次,上位机模拟机床控制面板的主要功能按键,通过鼠标点击这些按键完成相应的机床控制,如机床的启动、停止,主轴X、Y方向的位置调整等等。另外,上位机接收并显示来自下位机的信息。3.2译码译码的功能是将输入的零件加工程序翻译成本系统能识别的信息。不同的系统有不同的数据格式。一般用户输入的数控加工程序采用ISO标准码编制,译码就是把用户标准的数控加工程序转换为本系统能识别的数据格式。零件加工程序输入之后,点击“Compile”按钮将开始进入译码模块。译码模块主要由两个嵌套的循环来实现,外循环针对零件加工程序的所有数据段,处理一个数据段执行一次循环;内循环针对一个数据段(把一个数据段看成是山若干个用空格分开的字符串组成)包含的各个字符串,处理一个字符串执行一次循环。因为对于一个数据段,译码模块用一次循环处理,所以译码模块首先计算零件加工程序中总共有多少个数据段,并用变量记录这个数,作为循环控制的条件。然后进入循环,对每个数据段进行处理。首先取第一个数据段,再读取第一个字特串的第一个字符,接下来是一个Switch语句判断读到的是个什么字符。根据零件加工程序编写的语法规范,循环执行,直到所有数据段处理完毕。最后形成译码结果,保存在一个字符数组当中。为零件加工的开始做好了准备。整个译码处理过程思路清晰,结构简单,而且以后可以很方便的扩展数控编程功能,只要在Switch语句中添加Case项就可以实现。3.3异步串行通信本系统采用了RS-232异步串行通信从上位机向下位机输入数据。在设计PC-MCU通信协议时,PC是主控者,单片机主要是被动接收PC发来的数据等内容。PC发送给单片机的内容有三种,一种是机床控制命令,一种是用于插补的数据,还有一种端口测试命令。单片机发送给PC机的主要是机床状态信息、端口测试返回和数据正确接收的确认帧。本通信协议的设计思想是基于帧传输方式。即向RS-232串口发送命令信号、数据信号时,是一帧一帧传送的。为了数据可靠传输,传送每帧数据时进行数据累加和校验,如果传送出错,要求重新传送。连续传送三次错误,系统就退出通信并提示串口传送失败。3.4数控加工程序编写本系统要求零件加工程序的编写采用ISO标准代码,并结合上位机软件作了些约定:1.输入格式的约定,要求每个数据段中不同代码部分之间用空格隔开,每一段用“#”作为结束标志符。结束符和代码之间也用空格隔开。2.在零件加工程序中允许出现的字符是:G、M、S、T、F、X、Y、I、K、#以及数字,正负号,小数点等。3.G、M后只能跟两位数字,其它字母后的数字不限。4.每段中允许有不同组的G码,M码,若属于同一组则出错。5.整个零件加工程序以“END”,作为结束段。下面有一个小程序作为例子来说明这些约定,供参考。G00X010Y000#G01X026Y010#G01X010Y014#G03X013Y-13113K00#G01X000Y000#End由于使用的是标准代码,至于各条语句的具体含义在此不多介绍。4下位机设计4.1下位机硬件设计下位机硬件结构采用MCS-51单片机作为处理机,由于控制软件采用了代码公开的实时嵌入式操作系统μC/OS-Ⅱ,所需代码空间至少在8K字节以上,所需数据空间也超过了该系列CPU内部所能提供的数量,所以必须扩展外部存储空间,考虑到以后系统扩展,目前使用了一个32K字节的EPROM和一个8K字节的RAM作为系统运行的存储空间。图3下位机硬件结构图代码公开的实时嵌入式操作系统。μC/OS-Ⅱ可以移植到许多的微处理器上,前提是该处理器必须要有堆栈指针,有CPU内部寄存器入、出栈指令。μC/OS-Ⅱ是为嵌入式应用而设计的,很适合用在这种小型的系统中。由于单片机内部的存储器不能满足实际需要,因此需要从外部进行扩展,配置外部存储器,包括程序存储器EPROM和数据存储器RAM。本系统根据实际软件需要,并考虑到系统今后的扩展,采用了32KEPROM27C256作为系统外部程序存储器,采用8K静态RAM6264作为外部数据存储器。采用静态RAM设计时,无需外部刷新电路,因此与CPU的接口简单。考虑到微型数控系统与机床的信息交换,只有一个八位端口是不够用的,因此要进行系统I/O扩展。选用了可编程控制的外围并行接口8255A。由于外围I/O芯片与外部数据存储空间是统一编址的,它不仅占用数据存储器的地址单元,而且使用数据存储器的读写控制指令和读写指令,这就要求硬件设计中要考虑数据存储器与外围I/O芯片的地址译码。RS232串行通信接口选择最简单的应用接法,只用了三根线,即串行接收RXD、串行发送TXD和接地线GND。将“串行发送”和“串行接收”交叉连接,地线直接相连,其余信号线都不用。用软件来实现通信的“握手”、空闲检测等功能。选用了MAX232串口通信信号转换芯片来实现RS232与TTL的电平转换和正负逻辑电平的转换。4.2系统抗干扰设计形成干扰的因素有三个:干扰源、传播路径和敏感器件。成为干扰源的都是一些电压或电流变化比较快的器件或信号;传播路径是指从干扰源传播到敏感器件的通路或媒介;敏感器件是容易被干扰的器件,如A/D、D/A转换器,数字IC等。抗干扰设计的原则是抑制干扰源,切断传播路径,增强敏感器件的抗干扰能力。采取的主要措施是电路板上每个IC并接一个0.01μF高频电容,以减少IC对电源的影响。电容的引线要尽量短。布线时避免90度折线,减少高频噪音发射。尽量使晶振和单片机的引脚靠近,晶振外壳接地。布线时尽量加粗电源线和地线,可降低耦合噪音。单片机闲置的I/O口接地或接电源。另外选择好的电源,对减少干扰很有帮助。4.3下位机软件设计本系统使用μC/OS-Ⅱ实时嵌入式操作系统开发单片机控制软件。其软件流程如下:1.系统初始化下位机上电或是复位以后,系统将从程序代码空间的首地址0x0000开始执行,如果用C语言编写MCS-51程序的话,就是从Main()函数的开始处执行。程序首先执行整个单片机系统的软硬件初始化,包括操作系统的初始化和硬件定时器、串口等初始化。示意图如4。图4系统初始化2.创建任务初始化完成之后,下位机就进入到了正常工作阶段了。这个时候内存中有了开始创建的4个任务,分别是任务serialOperate,解析接收到的上位机命令;任务interpolation,插补计算,输出控制信号;任务misc处理M码及其他空闲任务OSTaskIdle。起初由于没有接收到上位机的各种命令,系统处于就绪等待状态。这个时候,μC/OS-Ⅱ中优先级别最低的默认任务-空闲任务OSTaskIdle()得到了运行。空闲任务不作任何有意义的工作。3.中断处理当上位机通过串口向下位机发送工作指令时,下位机产生串口中断接收信息,等接收到一个完整的帧之后,串口中断服务程序将从Serylnt()中通过语句OSSemPost(seRecSem)发出信号量seRecSem。这个时候正在等待这这个信号量的任务serialOperate接收到信号量它将在中断服务程序退出之后恢复运行。5本文作者创新点本文的主要目的是进行计算机数控系统的研究,并且进行微型数控系统的实际开发工作。这是一个综合、复杂的机电一体化系统。上位机数控系统软件的开发,采用了Windows作为开发平台,VisualBasic作为开发工具,主要是考虑到Windows良好的用户界面以及其广泛的应用,操作人员只要使用过Windows操作系统就能很容易操作该软件。本系统上位机和下位机的通信采用了串行RS-232接口,这种串行通信接口使用简单,编程容易,而且上、下位机的硬件都能支持。下位机控制软件采用了μC/OS-Ⅱ多任务实时操作系统,该实时操作系统的使用改变了传统数控系统的软件开发流程。参考文献:[1]许海燕.嵌入式系统技术和应用.机械工业出版社2002[2]林琳.消息驱动在单片机编程中的应用.2002年