纤维缠绕张力控制系统新技术研究

1 前言
    纤维缠绕是当前树脂基复合材料成型的主要工艺手段之一,而缠绕张力是纤维缠绕工艺中重要的控制参数,直接影响到缠绕制品的质量[1~4]。因此张力控制系统是数控缠绕机的必备的辅助设备。文献[5]指出,张力控制系统的性能很大程度上取决于应用软件的应用与开发。为了实时、准确地获得张力数据,了解纱线张力变化,并根据张力控制效果组织缠绕工艺,保证缠绕制品质量,迫切需要研制出适合自身的纤维缠绕张力控制系统。
    在大多数张力控制系统软件中,通常使用Win-dows定时器来完成张力数据的采集与处理工作。但是Windows定时器是通过向CPU发送WM_TIM-ER消息来实现一定精度的定时,且其优先级别非常低,使得定时消息得不到及时响应,严重影响了张力控制系统的实时性和可靠性。因此,在精密张力控制系统中,提高实时性、可靠性是系统软件的迫切要求,但是Windows并不是实时操作系统,它是基于消息驱动机制,不能提供足够的实时处理功能,因而在Windows环境下开发张力控制系统需要采用一些技术,如多媒体定时器、多线程等。
    本文在VC++开发环境下,研究建立PMAC与上位机之间通讯的方法,并结合多线程技术和多媒体定时器技术,设计出实时张力采集与数据存储、处理系统,有效地解决了在高速、长时间张力采集控制过程中系统的实时性和可靠性问题。
2 张力控制系统硬件构成
    本系统采用PMAC(Programmable Multi-Axis Controller)作为下位机,工控机作为上位机的并行双CPU结构。系统由开卷部分、控制部分(包括控制器和执行元件)、检测部分(或张力采集部分)及其它辅助装置组成,其结构如图1所示。其中,采用摆杆式张力传感器实时检测纤维张力,直流力矩电机作为执行元件[6~8]。实时纤维张力值由PMAC进行采集并以ISA总线通讯方式传递给上位机,在上位机中完成与张力设定值的比较,并进行相关的控制运算后,运算结果再次以通讯方式返回PMAC,由PMAC调整其控制端输出电压,PMAC输出电压经过力矩电机驱动器功率放大后去修正力矩电机的输出力矩,实现对纤维张力的实时控制。

           
3 张力控制系统软件主要功能的实现 [-page-] 
    为了使张力控制系统软件易于维护、具有可重构性和可扩充性,采用VC++编制,按照模块化设计思想设计,实现系统多任务的要求,软件主要结构如图2所示。它主要由初始化模块、数据采集与处理模块、系统调试模块、文件操作模块组成,其中数据采集与处理模块是本系统软件的关键部分。在该模块的设计过程中,利用多媒体定时器、多线程技术以提高系统的实时性和可靠性;利用双缓冲区存储技术提高存储数据的效率;利用“双重缓冲”技术解决实时数据动态显示时的屏幕闪烁现象。

       
3.1 上下位机通讯的建立以及采集方式的选择
    在张力控制系统中,上位机与PMAC之间建立起通讯是在上位机中实现对张力实时监控的要条件。为了便于PMAC与上层Windows应用程序之间进行通信,Delta Tau公司提供了PComm32通信驱动程序作为上层应用程序与PMAC之间通信的桥梁[9]。建立通讯主要用到OpenPmacDevice和ClosePmacDevice这两个PComm32函数,前一个函数为应用程序同PMAC交换数据开辟通道,用于应用程序的开始,后一个函数用来关闭同PMAC通信时开辟的通道,释放系统的资源,用于应用程序的结束处。
    PMAC数据采集方式主要有两种[10,11]:①从缓冲区中获得采集数据;②从I/O及运动寄存器中直接采集数据。前一种方式比较复杂,而后一种方式,用户不需额外指定采集源,不必关心数据是如何存入、如何译码的,不仅提高了系统软件的稳定性,而且大大简化了数据采集程序开发的难度。因此本文采用了第二种数据采集方式。
3.2 多媒体定时器的引入
    在张力控制过程中,需要采集实时张力来完成张力控制运算、分析控制效果的好坏以及系统运行是否正常,因此采集时间的精确度是整个控制系统得以正常运行的关键。而Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。多个消息按队列执行,这样就带来了一些问题,如一旦计算机的CPU被某个进程占用或系统资源紧张时,发送到消息队列中的消息就被暂时挂起,得不到实时处理[12]。在VC++中,虽然基于WM_TIMER消息的普通定时器定时方法非常简单,但它在多任务操作系统中的优先级很低,致使其定时精度有限,只能进行简单的时间控制,不能满足本系统对定时器定时精度的要求。测试结果如表1所示(定时精度为60ms)。

      
    对于控制精度要求较高的张力控制系统,必须考虑用更高精度的定时器来取代。Windows的多媒体定时器小时间分辨率理论上可以达到1ms,完全可以满足张力控制系统的实时性要求。采集时间的精确度对本系统软件至关重要,因此必须对多媒体定时器的定时精度进行验证测试,确保数据采集能在给定的时间内完成。验证测试时利用了Win-dowsAPI函数timeGetTime(),其返回值为计算机启动后经历的时间,单位为ms(毫秒)。在开始采集和结束采集消息响应函数中调用该函数,两次时间数据的差值就是采集时间,并在程序中定义一个全局变量用来记录采集的次数,这样采集时间除以采集次数就得到平均每次采集时间,测试结果如表2所示(定时精度为10ms)。结果表明,多媒体定时器对实现较高精度定时是比较理想的工具,其精度也十分可靠,平均误差小于0.1%,完全能够满足张力控制系统对定时精度的要求。 [-page-]

          
3.3 利用多线程实现数据采集与处理
    张力控制系统软件作为实时控制软件,其实时性和可靠性是衡量控制软件性能的重要技术指标。在VC++开发平台下,采用Windows操作系统下的多线程技术,以保证控制系统软件的实时性和可靠性。
    对于Windows应用程序来说,线程可分为用户界面线程和工作线程两种,用户界面线程用于处理用户输入,而工作线程则被用于完成各种不需要用户干涉的后台操作,如文件读写等操作[13]。本系统设计了数据采集与控制线程、数据监控线程、数据存储线程、人机交互线程这几个线程,其中数据采集线程与控制线程和数据存储线程属于工作线程,无窗口操作,如此便保障数据采集实时性,避免数据流的堵塞,数据监控线程用于在监控屏幕上实现张力数值实时显示功能。
    数据采集与控制线程配合多媒体定时器等时间间隔采集数据完成后,数据存储线程和数据监控线程才能读取采集回来的数据进行相应的操作,同样只有当数据读取完成后数据采集线程才能重新进行写数据操作,因此数据采集与控制线程和数据监控线程以及数据存储线程间有着数据共享和同步问题。在本系统中,共享数据的同步是通过事件对象来实现的。数据存储线程和数据监控线程初不做任何工作,调用Win32 API函数WaitForSingleObject进入等待状态,此时它不消耗CPU任何资源,即可保证数据采集与控制线程有充分的运行机会。在数据采集与控制线程取得指定长度的数据送到用户定义的存储空间后,调用Win32 API函数SetEvent将指定事件消息发送给数据存储线程和数据监控线程,数据存储线程和监控线程立即恢复运行状态,迅速对这批数据进行相关处理,如窗口绘制波形、存盘等操作。张力控制系统多线程工作示意图如图3所示。

        
3.4 实时数据存储
    若在张力控制过程中每采集一点数据就存储到磁盘上,将频繁进行磁盘操作,既占用CPU资源,又影响磁盘寿命。而如果等数据采集全部结束后再存储,则需要占用大量内存,必将会影响系统其它程序的运行,因此本系统采用一种称为双缓冲区动态存储技术来解决数据存储中所遇到的问题。
    双缓冲区技术是在上位机内存中创建一个公有缓冲区,它由两个大小相同、且连续的子缓冲区组成,用于暂存采集到的数据。当采集完一次后就将采集的数据放入缓冲区,并将缓冲区指针加1,当一个子缓冲区全部填满后,将缓冲区指针指向另一个缓冲区的开始,如此循环,后读入的数据覆盖掉以前的数据。
3.5 实时数据的动态曲线显示
    为便于观察张力控制过程,了解张力控制的效果,需要将采集数据以曲线形式在屏幕上动态地显示出来。在绘图过程中,当窗口由于任何原因需要重绘时,由于绘图背景与绘图内容反差过大,使得显示窗口出现明显的闪烁[14]。通常解决这个问题采用“两次绘图法”[15],先利用R2_XORPEN绘图模式绘图以擦掉以前的图形,然后再重新设置当前绘图模式为R2_COPYPEN,绘制新的图形。但是该方式需要两次全面绘图,耗费时间不短,其消除闪烁效果有限。
    为解决上述问题,本系统软件采用“双重缓冲”技术,先把要显示的图形在内存中绘制好,形成一幅位图,然后再一次性地将内存中的图形逐点覆盖到屏幕上去。因为显示图形是在看不见的内存中绘制的,而且这是个非常快、规整的内存拷贝过程,所以无论用多么反差大的背景色对以前图形进行擦除,屏幕都不会出现闪烁现象。当贴到屏幕上时,因为内存中终的图形与屏幕显示图形差别很小,从而基本消除了闪烁现象。实验证明,这样绘制出来的图形流畅,视觉效果很好。实时张力动态曲线显示如图4所示。

              
4 结语
    本文研究了张力控制系统中下位机PMAC与上位机IPC之间通讯建立的方法以及如何实时长时间连续地进行张力数据采集与处理的相关技术。在张力控制系统中,实时性和精确性是影响系统功能的关键技术,利用多媒体定时器和多线程技术可提高数据采集的实时性和精确性;提出一种解决实时张力动态曲线显示过程中出现“闪烁”现象的方法。该张力控制系统经现场运行结果表明,所编写的数据采集程序高速准确、性能可靠,对相关的数据采集系统也有一定的参考价值,而且本软件具有操作简便、功能齐全、人机界面友好等特点,为实现精密张力控制创造了良好的条件。
                  参考文献
[1] 尹秀云,杨德旭.纤维缠绕成型工艺中张力控制系统的研究[J].纤维复合材料,2005,3:47-48.
[2] 白侠,李辅安,李崇俊,王增加.纤维单向缠绕成型锥形壳体的研究[J].玻璃钢/复合材料,2007,(5):39-42.
[3] 朱松青.数控纤维缠绕机精密张力控制系统[D].东南大学,2003.
[4] 杜巍,肖军,文立伟.新型纤维缠绕张力控制系统研究[J].玻璃钢/复合材料,2006,(4):35-37.
[5] 王春香,贾延林,王永章,赵万生.精密张力控制系统数据采集技术[J].电子测量技术,1999,2:35-36.
[6] 贾晓宁,刘士华.CCFW的一种新型张力控制方法研究[J].纤维复合材料,2002,(2):28-29.
[7] 李军英,王桂英.8098单片机控制纤维张力器的研制[J].纤维复合材料,1997,(2):26-28.
[8] 王俊霞,史耀耀,周云端,张晓辉.数控布带缠绕机的新型张力控制系统[J].机床与液压,2006,(11):186-188.
[9] DELTA TAU Data System Inc. PMAC USER’S MANUAL[M].USA:DELTA TAU Data System Inc,1999.
[10] 兰光明,韩秋实,孙志永.VC环境下的PMAC数据实时采集与显示[J].北京机械工业学院学报,2004,19(1):61-65.
[11] 彭宝营,韩秋实,孙志永.基于PMAC的数控机床数据实时采集的研究[J].微计算机信息,2007,23:237-239.
[12] 何斌,耿春萍.多媒体时钟解决实时控制系统的定时[J].飞行器测控学报,2006,25(3):86-89.
[13] 姚领田.精通MFC程序设计[M].北京:邮电出版社,2006.
[14] 邓在雄,赵惠清.数据实时采集与处理系统软件开发中若干问题的研究[J].北京化工大学学报,2004,31(6):101-103.
[15] 张卫钢,陈文斌.利用VC++实现接收数据到曲线的转换及其动态显示[J].工业控制计算机,2003,16(10):52-53.