于昆昆, 于正林, 王红平
(长春理工大学机电工程学院,长春130022)
电机的位置速度控制是机械自动化控制领域的重要组成部分,因此对电机转速的准确测量非常有必要。转速测量的精确性和实时性影响整个控制系统的运动精度,尤其在闭环控制系统中作为速度反馈信号与输入信号比较作差而严重影响系统输入的大小。本文利用了虚拟仪器LaWindows/CVI编程的方便性和光栅编码采集卡SGC-PCI3.1高运算速度和运算精度的特点,准确实时灵活地测量出了某火炮随动系统负载模拟仿真的被试电机的速度。
目前常见的M法测速原理是在固定时间ta内测量测速传感器发出的脉冲个数。其转速运算公式为n=60Z1/(qta)。式中:Z1为时间ta内测量的脉冲数;q为所测轴转动一圈传感器所发出的脉冲数;n为转速,r/min。转速相对误差为,Z1越大,相对误差越小,所以M法测速适合中高速测量,时间ta可以自适应选取致使其动态响应性比较好,但是其低速测量精度很低[1-2]。本随动系统负载模拟试验台是在中高速下运行的,所以采用M测速法。时间ta的准确测量通过虚拟仪器LabWindows/CVI编程实现,而且测速过程的启动与停止可以由软件实现,加速度是由测得的相邻速度作差除以时间,因此测速灵活简单,实时性好。
如图1,工控机发出指令通过驱动模块1控制伺服被试电机运动,并且可以通过驱动模块2控制液压加载装置对被试电机施加静阻力矩、正弦力矩、冲击力矩和惯性力矩及其复合力矩。测速传感器将测得的脉冲数传给工控机,工控机通过计算和滤波将所测速度、加速度和力矩实时显示。
图1 系统测速原理图
本系统的测速环节并没有任何反馈环节,因此硬件的高精度是必须的,测速传感器采用ZKK-3B系列的光电编码器,采集卡是长春数显技术有限责任公司开发的SGC-PCI3.1光栅编码数据采集卡,采集卡利用高速A/D连续采集编光电码器输出的脉冲信号,通过采集卡附带的动态链接库可以直接设置采集卡的分辨率、分辨率倍数,轻松灵活地实现数据的采集。SGC-PCI3.1的主要功能如下:1)具有3个坐标轴X、Y、Z,每轴均有24bit高速计数器;2)可以在断电瞬间保存数据,数据保存期为100年;3)同时采用硬件和软件抗干扰措施,可以用于火花机等强干扰环境;4)采用RS-422A讯号传输标准作输入。通过PCI插槽安装在工控机里。ZKK-3B光电编码器的性能指标如下:1)增量式编码器的空心轴部分,轴孔径或轴径 φ/12/14/15×40;2)电源电压为5V;3)电缆侧出。采集卡输入电路采用RS-422差动线路接收器MC3486,故编码器输出电路采用RS-422差动驱动器MC3487。编码器安装一般可以分为两种情况,一是同轴安装,二是利用齿形带从所测轴引出,所测轴的直径与编码器轴保证精确的传动比[4]。由于液压负载模拟随动系统的被试电机轴振动的原因,本测速系统采用第二种方法安装,如图2所示。
图2 编码器安装
本系统工控机操作系统是WindowsXP,利用LabWindows/CVI2012虚拟仪器设计人机交互界面。光栅编码采集卡提供动态引导库文件CardDll.lib,头文件CardDll.h和动态库CardDll.dll。利用以上3个文件,LabWindows/CVI2012可以直接调用采集卡的功能函数[5]。由图1的系统工作原理图知,工控机需要处理的数据包括力矩传感器输出的负载力矩和由光栅编码采集卡采集到的速度。所以这里编程使用了双线程技术,主程序两次使用LabWindows/CVI2012库函数 CmtScheduleTheadPoolFunction(int Pool_Handle,ThreadFunctionPtr Thread_Function,void*Thread_Function_Data,int*Thread_Function_ID)[6]分别创建线程1 和线程2,线程1处理负载力矩,线程2处理测速,线程2开始与否用线程开始标志Threadflag标定,即Threadflag=1表示测速线程开始,Threadflag=0表示测速线程结束,这就是LabWindows/CVI2012虚拟仪器测速的灵活性,另外由第二部分知M法测速需要测出时间,这里利用while(Threadflag)这一死循环和Windows系统API函数测得。具体实现程序如图3。
图3 测速线程程序
其中XReadOut(mIndex)为采集卡功能函数,能直接输出随动系统负载模拟系统在俯仰方向的测速脉冲数。QueryperformanceCounter(&EndTime)为系统计时器函数,获取电脑计时器的值,nFreq.QuadPart是由函数QueryPerformance Frequency(LARGE_INTEGER*lpFrequency)在主程序获取的计时器频率值。time1就相当于测速的时间ta。Vsx是俯仰方向速度。Vsx之后就是平滑滤波程序。至于YReadOut(mIndex)、Vsy是另外一个光栅编码采集卡随动系统负载模拟系统在高低方向脉冲数和速度的标定。基本思路是每次循环测出一实际尺寸位置值和循环的时间time1,再由两次实际位置值做差除以time1得到速度,再除以time1就可以得到加速度。由程序知ta不是绝对固定的,是随程序运行有所改变的,但是其测速的实时性更加可靠。
如图4,被试电机在300r/min时所测的是速度和加速度,可以看出测速很稳定,且实际与激光测速仪所测速度误差较小。图5是被试电机由正转到反转和由反转到正转过程中所测速度及加速度,由其速度波动可以看出测速的实时性很好,完全满足随动系统负载模拟试验的测速要求。
图4 速度加速度测试结果
图5 正反转测速结果
本文介绍的基于LabWindows/CVI虚拟仪器的测速度和加速度方法,实现了M法测速,并以此测出了加速度,没有过多设计硬件电路,更多地体现在软件编程上,提高了测速的可操作性和灵活性,其实时性完全满足随动系统负载模拟试验的测速要求,对研究随动系统负载特性仿真模拟具有重要意义。
[1] 马艳歌.电机转速自适应测量方法及其在DSP上的实现[J].仪器仪表学报,2006,27(增刊1):2362-2364.
[2] 孙同景.单片机变M/T测速方法及其应用[J].电气传动自动化,1997,19(4):57-59.
[3] 姜庆明.一种基于光电编码器的高精度测速和测加速度方法[J].微计算机信息,2004,20(6):48-49,78.
[4] 文晓燕.增量式编码器测速的典型问题分析及应对策略[J].电工技术学报,2012,27(2):185-189.
[5] 张文清,于正林.基于labWindows/CVI的随动系统传动比模拟方法研究[J].2012,33(4):108-110.
[6] 王建新,隋美丽.LabWindows/CVI虚拟仪器测试技术及工程应用[M].北京:化学工业出版社,2011.