Windows平台下压铸机控制系统的研究

出处:cgkdxx 发布于:2007-04-29 02:44:09

Windows平台下压铸机控制系统的研究

阜新辽宁工程技术大学点气工程系(123000)
吕振 刘宝良 陈国志 孟令航


Windows是一个基于消息的非抢先式多任务操作系统,将其用于压铸机实时控制,有很多的困难与挑战。本文荐于实际工作中遇到的问题,对基于Windows的压铸机控制系统进行了研究。

1 Windows的运行机制

Windows9x操作系统由内核、设备驱动程序和大量的动态链接库及应用程序组成。Windows9x操作系统的结构如图1所示。Windows9x内核与设备驱动程序运行在保护模式的Ring0级,称为态;而一般应用程序与动态链接库运行在Ring3级,称为用户态。熟悉80386保护模式体系的人都知道,Ring3代码不能直接调用Ring0代码,在Windows9x操作系统中与硬件设备打交道的程序代码必须运行在态Ring0级。运行在用户态Ring3级的代码必须通过态Ring0级代码才能访问硬件。即使在用户态Ring3级执行的所谓输入输出指令in、out等实际上也隐含调用了态Ring0级代码才得以执行。Windows9x由内核统一管理所有的系统资源。在保护模式下运行时,创建特定的内存区域--虚拟机VM。每个虚拟机都有完整的地址空间、I/O空间以及中断向量表等系统资源。真正的系统--虚拟机管理程序VMM以时间片中断调度各个虚拟机,这是多任务的本质和要求。


由以上分析,开发基于Windows的工控系统,需要解决的两个关键问题是:

(1)实时性

实时性要求开发的系统能实时处理中断,并能处理定时事件。但Windows9x是一个基于消息机制的非抢先式多任务操作系统,而且设计初衷是面向事务处理,对多任务和图形用户界面的支持难免使得系统运行速度下降;其保护系统和内核运行机制也使用于系统切换的时间无法确定。通常,Windows下的中断响应时间是DOS下的1/20;基于消息的机制和非剥夺性,当消息队列中的某个消息没有响应时,整个系统处于阻塞状态,无法响应其他操作。事实上,一个基于Windows的实时操作系统,以下三个时间是非常重要的:

·中断由操作系统和设备驱动程序屏蔽的时间;

·设备驱动程序处理中断的时间;

·从中断开始到任务执行的中断延迟。

通常情况下,这些参数都是不可预测的,只能通过具体的实验进行确定。这不但加大了实时应用系统的难度,而且是系统不稳定的重要因素。

(2)设备相关性

设备相关性是指系统能很好地控制硬件,包括I/O端口的读写、内存直接读写和中断服务设备无关性问题,亦即Windows9x下直接访问外设的问题。但是,因为Windows9x是多任务操作系统,设备保护在Windows下是必需的。它的保护系统用来保护用户数据和程序不受同一系统内同时运行的其他程序的干扰,保护物理设备不受未经允许的访问。Windows系统的一个重要宗旨就是程序员对硬件操作的透明性,屏蔽了对底层硬件的直接访问,由操作系统统一管理所有的硬件资源和硬件访问。这使得Windows一般用户在Windows下完成硬件操作具有较大的难度。 2 Windows下压铸机实时控制的实现

2.1 压铸机系统的功能和要求

J11280型卧式冷室压铸机控制系统,主要的性能要求是:

·能够完成调整、联动两种工作机制;

·压铸工作过程的某些过程和工作参数具有实时动态可调性和可选性;

·具有对压铸过程中各个行程开关、按钮、继电器等状态实时监控和显示功能;

·实时检测合型力、压射速度和油压,用实时曲线显示,具备保存和打印的功能;

·实时故障诊断与故障处理的功能。

压铸机控制系统结构见图2。其中,合型力检测的采样周期为0.5ms油压检测的采样周期为5ms,位移传感器接触压射杆产生的脉冲信号经变换处理作为压铸机的外部中断,配合A/D板卡上的8253计数器,完成速度检测。可以看出,由于控制过程采样周期极短,并有大量的数据计算和逻辑判断以及在线动态检测、监视和参数调整,整个系统对实时性的要求很高。


2.2 使用设备驱动程序实现实时控制

设备驱动程序作为操作系统内核的一部分,处于Ring0层,具有直接操作硬件等特权。在实时控制中,中断技术应用得十分广泛,其中实时时钟的获得基本上都是通过中断来实现。时钟控制在实时控制中处于十分重要的地位,它负责推进控制过程、激活各控制任务或发相关控制消息,起到了总控制器的作用。在Windows9x下实时时钟的获得可以有不同的方法。设置Win32定时器并通过响应WM_TIMER消息进行实时处理是简单的方法。但是由于WM_TIMER消息的低优先级和未处理消息在消息队列中的排队造成了系统实时处理的不稳定,因此这种方法只适合实时性要求不高的应用。若采用Windows多媒体定时器,通过设置回调函数可以获得为1ms的定时信号;但是由于占用了系统宝贵的资源,而且当定时信号由用户提供或需要更高的中断频率时,这种方法就显得无能为力了。与类似软件中断的方法相比,基于硬件中断的方法占据了主导地位,并在绝大多数的实时系统中得到了应用。因为它保证了对实时控制系统至关重要的可靠性。

经过笔者探索,在Windows9x环境下,在虚拟设备驱动程序中对硬件直接编程并挂接中断的思路,有两种实现方法:

(1)对8253直接编程

8253定时器是计算机跳动的心脏,在计算机系统进入Windows前对8253重新编程,将周期从18.2s修改为所希望的周期。修改INT8中断服务程序,每次定时时间到就调用另一新中断号,并累计时间;若为55ms,则转入旧INT 8中断服务程序的入口进入Windows以后挂接新的时钟中断即可实现所希望的定时时钟。使用这种方法可以满足任意。 (2)对CMOS实时时钟直接编程

与上述方法相比,对CMOS实时时钟进行编程获得定时中断的方法显得更加优越,所需的硬件知识相对较少,操作也相对简便。在PC机中,CMOS实时时钟似乎是没有现成的虚拟设备驱动程序的PC机硬件设备,所以可以直接开发VxD驱动程序来操作实时时钟。通常,实时时钟芯片的基本频率初始化为32.768kHz,由它驱动内部时钟电路,同时对内部寄存器A(D3~D0)编程选择22个分频级之一,使其按确定的频率以寄存器B指定的方式周期性地输出方波或中断信号,作为实时钟中断信号经反向直接连到8259A-5从片的第0级--IRQ8然后把实时任务直接挂接到实时钟中断上,在中断处理函数中进行实时任务处理。使用这种方法可获得8.192kHz周期为0.1ms的中断频率,足以满足系统的要求。需要注意:与上述方法类似,挂接中断时,进入自己的中断前必须保护好原先的中断状态,退出时恢复,否则,系统将崩溃。

无论使用哪种方法,都不可避免地与Windows中断打交道。但是,VxD没有义务必须向系统传递中断消息,相反,它完全可以自己截获中断,进行实时处理。本文采用了对CMOS时钟直接编程的方法,运行良好。 总之,使用虚拟设备驱动程序直接控制硬件,解决了Windows环境下的设备无关性问题,同时保证了实时控制所需要的实时时钟和中断控制。但是,虚拟设备驱动程序编程要求技术人员对Windows内核比较清楚,对底层硬件比较了解,也需要一定的汇编知识。由于Windows内核资料非常少且大都较晦涩,有关VxD编程的部分更是艰深,所以使用这种方法有相当的难度。而且这种方法易给系统带来隐患,有可能造成Windows系统本身不稳定,还要考虑兼容性和效率问题,在实际开发时需要小心谨慎。 2.3 保证系统性能的其他技术

上一小节解决了重要的实时性和设备相关性的问题,但是,考虑效率和性能,本系统研究了有关的增强系统性能的技术。实践证明,效果比较明显。

(1)多线程

Windows系统的基本单元是线程,线程是可供系统调用的单元。一个进程可有多个线程,系统调度程序将CPU的时间片划分给各个线程,各个线程在各自的时间片内使用CPU,从而实现了微观上的轮流执行和宏观上的并发执行。在实时性要求很高的工控系统中,如何避免程序反应迟钝以及死锁问题是关键之一。利用多线程技术,是提高效率的有效途径,不仅可以挖掘潜在的CPU空闲时间,还可以提高程序的反应速度。这在有多个任务需要完成且有巨大数据流量的程序中反映尤其明显。根据系统要求,本主控制台程序实现了一个控制系统主要运行过程的主线程、一个负责压铸机工作过程的压铸过程线程(工作者线程)和一个实现速度压力曲线的显示线程(用户界面线程)。主线程在每个Windows应用程序启动时由操作系统创建,不可或缺。在主线程中,主要负责线程间的同步、向压铸过程线程和显示线程传递参数、管理人机界面、故障处理与实时检测、与用户交互等功能。显示线程负责从共享内存读出数据并以动态曲线的形式在屏幕上绘制,保存实时曲线作为历史纪录以及读取曲线历史纪录的功能。压铸过程线程控制压铸机的整个工作过程,包括数据采集、逻辑控制、算法实现及相关的处理。实践证明,多线程的使用,明显提高了系统特别是实时显示的性能,增强了系统的效率和稳定性。

(2)共享内存

数据采集系统得到各模拟通道采样值的转换结果后,应存放在一个规定的RAM区。由于Win32程序和虚拟驱动程序都需要直接访问此内存RAM区,故称为共享内存。有经验的程序员都很清楚Windows的内存分页管理机制,所以应该由VxD中断功能程序申请后与Win32程序共享,原因不言自明。在VxD中申请连续内存的函数一般使用:BOOL PageAllocateDWORD nPagesDWORD pTypeVMHANDLE hVMDWORD AlignMaskDWORD minPhysDWORD maxPhysPVOID PhysAddrDWORD FlagsPMEMHANDLE pHandlePPVOID pAddress。注意:必须明确指定pType为开辟VxD和Win32应用程序共享内存的PG_VM,其他常量不可取;必须指定Flags为不会被系统分页交换的PAEGELOCKED;Hvm为使用此循环寄存器区的Win32应用程序虚拟机句柄,须在使用PageAllocate前传到申请内存的VxD。 只要缓冲区足够大,即使在采集频率非常高的情况下,中断程序填满一个子缓冲区的时间也会比较长,而处理线程进行处理和存盘的时间相对比较短。因此,中断程序和处理线程可以并行地访问缓冲区而不会发生交叠,即中断程序访问的子缓冲区与处理线程访问的子缓冲区总是不同的。这样,就可以在不丢失任何数据的情况下实现长时间连续高速采集。实际相当于在PC机的内存中开辟了一片FIFO队列。与硬件FIFO相比,这种方法大大降低了成本。而且,由于将其放在内存中,可以轻易地得到非常大的FIFO队列,减轻了数据处理的负担。另外,由于采用了双缓冲的结构,避免了数据访问的交叠,实现了不丢失任何数据的长时间连续高速采集。当然,由于采用中断方式采集数据,每次采集都要占用CPU时间使采集速度受到一定限制,无法达到采用硬件FIFO队列的水平。 (3)ActiveX

ActiveX控件作为一种可重用的软件部件和一种标准接口元素,能方便地组装到应用程序中,快速创建应用程序界面,从而直观地实现控制组态和策略解释,非常便于工程技术人员掌握。本系统中,实现了一个数据显示功能的ActiveX控件,并挂接在显示线程中,通过它支持的属性、方法和事件机制,控制数据显示,极大地改善了速度压力曲线的显示性能。 (4)模糊神经网络PID控制

智能控制特别是模糊控制和神经网络控制技术发展迅速,将其应用于复杂模型和恶劣工况下的过程控制,具有理论优势,也是难点和热点;另一方面,传统的PID控制也不断发展和完善,出现了各种与先进方法和理论结合的新型PID算法;,以前的压铸机系统尽管运行稳定,但是基于开环算法,控制性能不理想。笔者通过研究和学习国内外相关的理论和实践,从现场实际控制的角度,给出了一种集模糊控制、神经元控制和PID控制三者优势于一身的新型控制算法的实现,大大提高了系统的性能,获得了满意的效果,限于篇幅,另文著述。 3 系统的总体框架

依据上述各种技术,使用Numega公司的VtoolsD工具开发了底层的虚拟设备驱动程序,使用VC++6.0开发用户界面程序,在Windows98环境下,实现了2800吨J11280型卧式冷室压铸机控制系统的设计,并在阜新压铸机厂通过了测试,运行稳定、操作简便、界面友好、功能齐全、实践证明是一个比较成功的工控系统,图3是主控制台总体框架图。


参考文献

1 [美]David A. Solomon著,北京博彦科技发展有限公司译.Windows NT技术内幕第2版·M.北京:清华大学出版社,1999

2 武安河 周利莉. Windows设备驱动程序(VxD与WDM)开发实务M.北京电子工业出版社2002

3 乔 林杨志刚. Visual C++ 6.0编程技术MFC与多线程篇M.北京中国铁道出版社2000

本文摘自《电子技术应用》

  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!