1 前言
Windows95是Microsoft公司推出的一个彻底的32位的图形环境操作系统。在Windows95环境下开发实时控制系统不仅可以利用Windows95的丰富资源,实现标准统一的Windows95界面,而且可以应用PC机的最新硬、软件开发成果,便于系统功能扩展和升级,便于联网组成FMC、FMS和CIMS等。因此,将Windows95应用于工业控制,研究和开发Windows95平台下的数控系统,具有重要的理论意义和应用价值。
2 铣床数控系统构成
由于本铣床数控系统控制软件模块较多,为了减轻IPC机进行大量数据运算和处理工作,在硬件方面设计了一个步进电机控制卡(含有8031单片机),构成了包括上位机、下位机的主、从式数控系统。系统硬件配置如图1所示,其中含虚线部分为闭环控制,不含虚线部分为开环控制。系统硬件采用PC总线和模块化结构设计,下位机(步进电机控制卡)插在PC总线扩展槽上,上、下位机之间以查询方式进行并行通讯。
系统软件设计时,考虑了硬件结构特点及系统功能的要求。整个系统软件包括上位机软件和下位机软件。上位机软件主要完成系统管理、NC程序诊断和编译、刀具半径补偿等功能。下位机软件主要实现插补运算和步进电机位置及速度控制等功能。软件设计时,采用Visual C++5.0编制上位机软件,而下位机软件采用单片机汇编语言来编制,充分利用高级语言和低级语言的特点,使软件结构具有开放性、模块化的优点,易于维护。
3 Windows95平台下的实时控制
Windows95是32位抢先式多任务的操作系统。Windows95多任务处理采用虚拟机技术。通过虚拟机管理程序中的调度程序,Windows95依靠线程的优先级和分配给线程的CPU来调度线程。由于线程支持强占式的多任务机制,实时响应速度高,并且各线程之间是基于中断的,因此,可以通过给数控系统的每个任务分配优先级不同的线程来达到实时控制。
由于插补运算及位置速度控制等实时控制任务是由下位机来完成的,而上位机主要完成非实时性或实时性不高的任务,NC程序译码任务是通过编译方法实现的,因此上位机所要完成的任务完全可以由一个线程来完成。基于上述分析,我们采用单线程的方法实现 Windows95平台下的数控系统。采用这种方法实现实时控制,所要解决的问题是如何及时处理Windows95的消息队列。
Windows95应用程序的调度是基于消息的,Windows95应用程序读取消息队列中的消息并进而处理它们。如果应用程序处理一个消息时间太长或因其本身错误产生死循环,将会导致在规定的时间内别的消息不能得到成功的处理,实时系统也就无法正确运行。因此,Windows95应用程序消息驱动的本质就是必须保持实时系统的消息流处于循环状态,当一个消息正在处理时,另一个重要的消息能够插入,能够得到及时响应,这样才能达到实时控制的要求。例如,当数控系统以自动方式加工时,系统就进入了一个很长的计算循环中。在这个过程中,为了使其它消息(如为了停止自动加工方式而发送的消息)能够得到响应,我们在程序中使用了如下的代码:
MSG Message;
while(∥循环条件∥){
if(::PeekMessage(&Message,NULL,0,0,PM REMOVE)){
::TranslateMessage(&Message);
::DispatchMessage(&Message);
}
通过在程序中加入以上代码,就能实现一个消息正在处理时,另一个消息能够得到及时响应,满足了实时控制的要求。
4 步进电机控制卡的实时驱动
在Windows95系统下,除了虚拟设备驱动程序(VxD)可以实现对硬件的控制,标准设备驱动程序和可安装的设备驱动程序也可用于实现对硬件的控制,它们是16位或32位的DLL。在系统设计中,没有采用专用开发工具DDK或VToolsD,进行步进电机控制卡驱动程序的开发,而是借助于VC++5.0编译器,编写了一个32位DLL,实现了对步进电机控制卡的实时驱动。由于系统是以Windows95为平台,因此在步进电机控制卡的驱动程序设计中,在遵循由硬件电路设计所决定的握手协议和制定的通讯协议基础上,还考虑到以下因素:
(1)既要考虑到数控系统是实时性控制系统,又要考虑到上、下位机之间通讯有一个时间协调的问题;
(2)下位机软件包括插补和速度控制模块,工作量较大,同时上位机接收下位机反馈信息的频率远远大于上位机向下位机发送数据的频率,因此,上位机接收下位机反馈信息时,有等待时间;
(3)Windows95多任务操作系统决定了一个任务不能长时间独占系统资源,否则,极易造成系统资源耗尽、系统崩溃。
因此,我们在上位机接收下位机数据和上位机向下位机发送数据函数中,使用次数为500的循环语句查询握手信号,以实现上、下位机之间的并行通讯,同时也不至于使查询任务长时间独占系统资源,从而造成系统资源耗尽。为了进一步说明上、下位机之间的通讯关系。
5 结束语
在Windows95平台上实现实时控制和专用硬件设备的实时驱动程序是实现数控系统的关键,本文所讨论的方法较好地解决了上述两个问题。实验表明,上位机控制软件设计正确可行,步进电机控制卡在Windows95环境下的驱动程序运行稳定,由IPC机和8031单片机构成的开环实时控制系统,较好地实现了在Windows95环境下对步进电机的控制,达到了铣床数控系统的要求。
作者单位
王建滨(上海交通大学A9906021,邮编:200030)
马培荪(上海交通大学)
李旗号(合肥工业大学)
参考文献
1,彭炎午.计算机数控(CNC)系统.西安:西北工业大学出版社,1988.
2,[美]Adrian King著,熊桂喜,蒋华,黎军英译.WindowsTM95技术内幕.北京:清华大学出版社,1995.
3,[美]David J.Kruglinski著,王国印译.Visual C++TM技术内幕.北京:清华大学出版社,1997.
4,王建滨.Windows95平台下数控铣床界面系统的研究设计.合肥工业大学硕士学位论文,1999.
5,张金山,廖果.Visual C++5.0易学易用.成都:四川大学出版社,1998.