基于实时Linux平台的玻璃磨削加工设备控制方法【专利摘要】本发明提供了基于实时Linux平台的玻璃磨削加工设备控制方法,包括Linux系统平台与嵌入式实时内核,实时内核建立次优先级别的进程作为Linux内核的运行基础,通过地址空间共享与虚拟中断开关的控制建立起由用户态、内核态、中断态三层体系:当控制玻璃磨削加工设备实现设备功能时,系统由用户态切换进入内核态;当中断到达时,从中断注入点执行虚拟异常向量以触发切换到中断态,实时内核将虚拟异常向量拷贝至中断点处,通过虚拟中断开关判断是否为实时性中断,如果是则由实时内核进入中断处理后返回内核态,否则由实时内核将该中断退回至内核态中断处理;在返回内核态时,直接使用中断点所保存的现场;当处理完毕中断之后,系统由内核态切换进入用户态。【专利说明】基于实时Linux平台的玻璃磨削加工设备控制方法【
技术领域:
】[0001]本发明涉及玻璃磨削加工设备的数控系统。【
背景技术:
】[0002]近些年来,随着计算机数字控制技术的发展,数控技术已经广泛应用于工业控制的各个领域,尤其是机械制造业中,普通机械正逐渐被高效率、高精度、高自动化的数控机械所代替。[0003]目前市场上绝大部分玻璃磨削机系统是以Windows系列为运行平台,优点是该平台市场占有率高,易于操作,开发资源丰富,但缺点是Windows系列平台属于非实时操作系统,当系统负载过大的时候,无法快速且稳定的响应外界数据请求而降低加工精度。与外部运动控制模块进行通讯时,是通过网卡中断的形式将接收到的网络数据包存放到一个缓存队列,然后操作系统会产生一个固定的定时器中断从这个缓存队形读取网络数据,最后将处理的数据包从以太网接口发送到工业现场总线接口模块。当运动控制模块或I/O模块接收到来自总线的数据包并解析后,将数据流输出到伺服驱动器来控制不同方向上的伺服电机,从而达到精确定位的目的。[0004]实时操作系统分为硬实时操作系统和软实时操作系统,硬实时操作系统保证在一定的时间必须完成某项任务,而软实时操作系统只要按任务优先级尽可能快速的完成任务即可。由于大多数玻璃磨削机控制方法运行在非实时操作系统上,当CPU空闲的时候可以提供相当短的典型中断响应时间,若系统运行负载过大时,有时响应会变得无比漫长,以至于某一个简单的读取操作任务会长时间无响应,甚至直接挂死。但这并不能说明非实时操作系统不够快速,而是响应任务的时间不确定,这样很容易造成玻璃磨削机控制方法无法实时对运动控制模块以及其它I/O模块信息做出合理的反馈,从而在运动定位方向上造成累计误差。【
发明内容】[0005]为了克服现有技术存在的不足,本发明的目的在于提供了一种以硬实时Linux系统为平台,解决在玻璃磨削加工中快速,实时响应外界数据包请求以提高加工精度的方法,在系统负载变化的情况下,能够实时处理中断任务。[0006]为达到以上目的,本发明提供了一种基于实时Linux平台的玻璃磨削加工设备控制方法,用于对玻璃磨削加工设备的工作轨迹进行精确控制,提供一Linux系统平台,在该Linux系统平台上实时基础环境内建立一嵌入式实时内核,该嵌入式实时内核建立次优先级别的进程作为Linux内核的运行基础,由Linux内核与嵌入式实时内核通过地址空间共享与虚拟中断开关的控制建立起一套由用户态、基于用户态的内核态、基于内核态的中断态构成的三层体系,该控制方法包括如下步骤:51:当用户控制玻璃磨削加工设备实现设备功能时,系统由用户态切换进入内核态;52:当中断到达时,从中断注入点执行虚拟异常向量以触发切换到中断态,首先实时内核将虚拟异常向量拷贝至中断点处,然后通过虚拟中断开关判断该中断是否为实时性中断,如果为实时性中断则由实时内核转入函数进入中断处理后返回内核态,如果为非实时性中断则由实时内核将该中断退回至内核态进行中断处理;在返回内核态时,直接使用中断点所保存的现场;S3:当处理完毕中断之后,系统由内核态切换进入用户态。[0007]本发明的进一步改进在于,实时内核对实时性中断的处理过程包括如下步骤:保存现场、递增中断嵌套计数、执行中断服务程序、递减中断嵌套计数、恢复现场。[0008]本发明的进一步改进在于,每一个中断由一个中断描述符结构体来描述以统一管理中断。[0009]本发明的进一步改进在于,所述的中断描述符结构体描述了中断服务程序的入口地址。[0010]本发明的进一步改进在于,所述的中断描述符结构体描述了指向清除中断标志的函数。[0011]本发明的进一步改进在于,当用户态运行时,用户态的真实中断标志始终是开的,使得所有的中断操作都集中在实时内核中。[0012]本发明的进一步改进在于,所述的非实时性中断为与客户系统有关的向量,包括软中断(swi)、未定义异常(und)、指令或数据异常(pabt或dabt)。[0013]本发明的进一步改进在于,所述的实时性中断包括外部请求中断(IRQ)。[0014]本发明有益效果为:为玻璃磨削加工设备提供一个开放硬实时Linux操作平台,包含一个实时内核与Linux,当系统负载变化、外界事件或数据产生的时候,能快速稳定响应外界数据包请求,能够接受并以足够快的速度予以处理,其处理结果又能在规定的时间内来控制生产过程或对处理系统做出快速响应,中断延时小于50us。并控制所有实时任务协调一致,从而提高玻璃磨削加工精度以及效率。另外能够提供Linux兼容API,API的Linux兼容性使得它能够兼容众多的嵌入式Linux应用,降低应用程序开发门槛。【专利附图】【附图说明】[0015]附图1与附图2为中断虚拟化前后的跳转过程对比示意图,图1为常规Linux异常向量跳转过程示意图,图2为采用异常向量虚拟化后跳转过程示意图;附图3描述了中断态下的中断异常向量表;附图4描述了GuestOS内核态注入中断的过程;附图5所示的代码表示中断描述符结构体;附图6描述了OS_CPU_IRQ_ISR_Handler实现框架(控制逻辑实现);附图7描述了对中断服务程序注册过程;图8描述了XShrike中断处理过程;附图9至附图11为外部触发中断时间对比的示波器截图。【具体实施方式】[0016]下面对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。[0017]本实施例中的控制方法基于一套CPU模块,该CPU模块硬件以及软件配置如下:硬件方面:SamsungS5pv210运行主频IGHZ;板载内存512MBDDR2SDRAM,800MHZ;板载256MBSLCNandFlash;板载8GBSDFlash(可选择扩展到32GSDFlash);带内置式扩展TF卡接口芯片(可扩展至32G);两个10/100M自适应以太网口(分别连接EtherCAT总线和Internet);4个USBHost接口(可连接用户自定义设备),一个USBOTG接口(系统调试及程序下载口,可连接到调试主机);一个RS232接口(调试端口,可连接到调试PC机);一个RS485总线接口(接收PMU单元关机信号);一路+24V数字量输入端口;数字式温度检测;RTC实时时钟。[0018]软件方面:提供一个开放的硬实时Linux系统平台,其中包含一个实时内核(以下称为XShrike)和Linux(以下称为GusetOS);XShrike定位于嵌入式领域的实时基础软件环境,首先它是实时的基础软件,通过中断虚拟化技术,它可以达到与实时操作系统(Vxworks,uCos等)比拟的实时性要求,以中断响应时间来衡量,其最差的中断响应时间小于50μs,可以用于要求硬实时的工业控制、通信等场合。[0019]参见附图1与附图2所示,描述了中断虚拟化前后的跳转过程对比示意图,图1描述了通常状态下Linux异常向量跳转过程示意图,图2描述了采用了异常向量虚拟化后跳转过程示意图。如上图1所示,中断向量被搬移到虚拟地址OxffffOOOO处,而当指令异常发生时,根据其向量号OxOc,取出bvector_pabt+stubs_offset指令,即跳转到具体处理函数处(通过offset偏移量,跳转到0xffff0200~0xffffl000的某个对应地处)。[0020]参考GusetOS未虚拟化时的中断向量跳转过程,并抽象出XShrike可使用的接口,可以实现中断向量的虚拟化,并为GusetOS设置正确的向量映射,通过映射中断向量而执行的中断/异常向量跳转过程。为实现异常向量的虚拟化,XShrike将修改后的中断向量拷贝至客户系统的OxffffOOOO地址处,主要是调整中断后的向量的跳转地址。对于指令异常向量,异常触发时,同样跳转到OxffffOOOc处,但该处修改后的指令是Idrpc,mes_pabt,而xshrike_pabt存放的地址是XTS_PABT,这意味着需要先跳转到mes的XTS_PABT过程处,即上图2中XShrike对应的处理过程,这主要是拟Iinux异常发生时的堆栈情况以保存堆栈内容,并跳转到客户系统的具体异向量中断处理(S卩stubs_start~stubs_end对应的处理过程)。如下图3表示VMM的中断异常向量表。这段从_vectors_start到ectors_end的代码被拷贝至虚拟地址OxffffOOOO处。当发生中断时,程序pc指针跳转到OxffffOOlc处,调用Idrpc,xshrike_irq指令,进而转入0S_CPU_IRQ_ISR函数,进入中断处理,这些操作主要在XShrike端执行,故中断的处理不需要额外的地址映射。对于其它向量如软中断(swi)、未定义异常(und)、指令或数据异常(pabt或dabt)等,由于其主要与客户系统有关,且处理复杂,主要交由客户系统处理,故需要将这些向量映射到客户系统。[0021]参见附图4所示,中断虚拟化是指GuestOS不能操作硬件中断标志(在ARM上为CPSR中的I标志),而是操作虚拟的中断标志(记为VIFlag开关)。从GuestOS层面来看,操作VIFlag的效果与操作真实的中断标志是一样的。关闭虚拟中断,意味着GuestOS中断服务程序相关代码无法运行,从而为GusetOS内核提供同步操作保证;打开虚拟中断,则可以响应外部中断。无论VIFlag关闭与否,当GusetOS运行时,真实的中断标志始终是开的,这实际上也是中断虚拟化的意义所在,它使得GuestOS的运行与一般的实时线程一样无法操作硬件中断标志,因此所有的中断操作都集中在XShrike,从而为缩短整个系统最长关中断时间提供了现实的途径。中断虚拟化之后,GuestOS不再响应硬件中断,而是依赖中断注入操作执行中断服务程序。[0022]中断注入所做的工作是模拟GuestOS运行于实际硬件时所产生的情景,GuestOS运行于实际硬件时,当中断到达时,GuestOS总是从某个固定地址(中断入口)执行代码,而中断注入也是使GuestOS从固定地方处(下图2中C处)执行代码执行,在实现时,C处定义为do_IRQ,称之为中断注入点。虚拟机在中断注入时,需要使用一个中断现场,虚拟机直接使用了GuestOS让出CPU时(下图2中A处)所保存的现场,一方面避免了拷贝,另一方面使C处的内核栈与GuestOS运行于实际硬件并响应中断的内核栈一样,达到了情景模拟的效果。[0023]结合附图2与附图4所示,本发明基于实时Linux平台的玻璃磨削加工设备控制方法,用于对玻璃磨削加工设备的工作轨迹进行精确控制,提供一Linux系统平台,在该Linux系统平台上实时基础环境内建立一嵌入式实时内核,该嵌入式实时内核建立次优先级别的进程作为Linux内核的运行基础,由Linux内核与嵌入式实时内核通过地址空间共享与虚拟中断开关的控制建立起一套由用户态、基于用户态的内核态、基于内核态的中断态构成的三层体系,该控制方法包括如下步骤:51:当用户控制玻璃磨削加工设备实现设备功能时,系统由用户态切换进入内核态;52:当中断到达时,从中断注入点执行虚拟异常向量以触发切换到中断态,首先实时内核将虚拟异常向量拷贝至中断点处,然后通过虚拟中断开关判断该中断是否为实时性中断,如果为实时性中断则由实时内核转入函数进入中断处理后返回内核态,如果为非实时性中断则由实时内核将该中断退回至内核态进行中断处理;在返回内核态时,直接使用中断点所保存的现场;53:当处理完毕中断之后,系统由内核态切换进入用户态。[0024]参见附图5,当中断发生时,在XShrike中现场的保存与恢复是由XShrike内核完成的,在移植时,用户只需要编写具体的中断服务程序,不需要处理现场保存与恢复。每一个中断由一个中断描述符结构体来描述,用于统一管理中断,其定义如下=Handler表示中断服务程序的入口地址;clear指向清除中断标志的函数;flag表示该中断是电平触发还是边沿触发。[0025]用户在移植XShrike到其他ARM系列的开发板时,需要重新实现0S_CPU_IRQ_ISR_Handler〇,该函数的一个典型的实现如下图6所示。[0026]用户在编写了中断服务程序后,需要对中断服务程序注册,这需要在init_irq〇中把中断服务程序赋给table_intr_desc□。以timer中断为例,在S3c2440中它的中断号为10,因此timer中断的注册如附图7所示。[0027]实时内核对中断的响应实际上是一个标准的过程,一般由以下三个部分组成:(1)保存寄存器的内容(2)执行C函数编写的中断服务程序(3)中断返回,恢复寄存器的内容,其中会涉及到任务切换。[0028]而在XShrike中,这个标准的过程又细化成下图8所示之步骤:(1)保存现场,现场保存的格式为{CPSR,PC,LR_svc,R12-R0},这也是"任务管理"一节中提到的任务中断现场的内容,这部分由汇编实现;(2)递增中断嵌套计数由函数0S_INTR_ENTER完成;(3)执行中断服务程序OS_CPU_IRQ_ISR_Handler〇,这是用户用C语言实现的;(4)递减中断嵌套计数由函数0S_INTR_EXIT完成;(5)恢复现场,这是由内核函数0S_Sched_Intr()完成的。[0029]根据上文所述的中断处理过程,可通过控制MCU的一个GPIO输出引脚来帮助测试,具体方法如下:(1)在驱动程序中设置GPH0_1为中断引脚,下降沿触发。GPH0_2输出高电平。[0030](2)创建中断服务程序OS_CPU_IRQ_ISR_Handler(),然后对中断处理头程序注册,这需要在init_irq()中把中断处理头程序赋给table_intr_desc[]。[0031](3)当程序执行到table_intr_desc□的时候将GPH0_2设置为低电平。[0032](4)从外部触发到信号到中断处理头程序table_intr_desc□响应信号之间的时间差即为中断延迟时间。[0033]通过对外部触发中断时间对比,示波器捕获截图如附图9至附图11所示,其展示了下表中的测试结果:【权利要求】1.一种基于实时Linux平台的玻璃磨削加工设备控制方法,用于对玻璃磨削加工设备的工作轨迹进行精确控制,其特征在于:提供一Linux系统平台,在该Linux系统平台上实时基础环境内建立一嵌入式实时内核,该嵌入式实时内核建立次优先级别的进程作为Linux内核的运行基础,由Linux内核与嵌入式实时内核通过地址空间共享与虚拟中断开关的控制建立起一套由用户态、基于用户态的内核态、基于内核态的中断态构成的三层体系,该控制方法包括如下步骤:51:当用户控制玻璃磨削加工设备实现设备功能时,系统由用户态切换进入内核态;52:当中断到达时,从中断注入点执行虚拟异常向量以触发切换到中断态,首先实时内核将虚拟异常向量拷贝至中断点处,然后通过虚拟中断开关判断该中断是否为实时性中断,如果为实时性中断则由实时内核转入函数进入中断处理后返回内核态,如果为非实时性中断则由实时内核将该中断退回至内核态进行中断处理;在返回内核态时,直接使用中断点所保存的现场;53:当处理完毕中断之后,系统由内核态切换进入用户态。2.根据权利要求1所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:实时内核对实时性中断的处理过程包括如下步骤:保存现场、递增中断嵌套计数、执行中断服务程序、递减中断嵌套计数、恢复现场。3.根据权利要求1所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:每一个中断由一个中断描述符结构体来描述以统一管理中断。4.根据权利要求3所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:所述的中断描述符结构体描述了中断服务程序的入口地址。5.根据权利要求3所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:所述的中断描述符结构体描述了指向清除中断标志的函数。6.根据权利要求1所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:当用户态运行时,用户态的真实中断标志始终是开的,使得所有的中断操作都集中在实时内核。7.根据权利要求1所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:所述的非实时性中断为与客户系统有关的向量,包括软中断(swi)、未定义异常(und)、指令或数据异常(pabt或dabt)。8.根据权利要求1所述的基于实时Linux平台的玻璃磨削加工设备控制方法,其特征在于:所述的实时性中断包括外部请求中断(IRQ)。【文档编号】B24B55/00GK104476409SQ201410685374【公开日】2015年4月1日申请日期:2014年11月25日优先权日:2014年11月25日【发明者】周俊华申请人:苏州谷夫道自动化科技有限公司