伺服转台调试软件的开发与应用
2017-03-13王绍伟盛小波尹玉京
王绍伟,盛小波,赖 欢,尹玉京,杨 斐
(重庆望江工业有限公司 军品研发中心,重庆 400071)
通常一个高性能的跟瞄平台,应具备跟踪精度高、响应速度快、抗干扰能力强的性能特点,而要实现这些性能就必须有一套有效的方法,使系统能够克服负载惯性、摩擦、间隙等因素的影响,将其校正为线性系统。典型的三环调节伺服转台的控制结构框图如图1所示。为了直观地反映其性能特点,利用伺服转台测试软件发送标准信号,同时采集系统响应信号进行分析和评价。
对伺服转台输入响应进行时域分析时,可以较为直观和形象地反映系统的动态特性,如位置、速度、加速度和误差等。根据伺服转台测试软件产生的负载运动特征参数曲线,调试人员可以调整参数,修改控制模型,这也是传统的调试方法。这种方法对调试人员要求较高,需要较多经验积累,否则,就很难达到理想的性能指标。
频域分析法作为时域分析法的补充,已在振动分析、自动控制、机械故障诊断、图像分析等领域得到广泛地应用。笔者主要运用C#编程环境开发了一套适用于伺服转台的调试软件,可以深刻地剖析信号的谐波组成和系统带宽等指标。其中,快速傅里叶变换作为该调试软件的核心算法,其正确性已在MATLAB中得到验证。根据调试软件可以估计伺服转台系统参数模型的频率特性,进而求得系统的传递函数,这为伺服转台的PID参数调节确定了范围和方向,进而提高了调试效率。
1 频域分析法
1.1 信号采样
由图1可知,上位机的命令和位置信息经过伺服控制箱进行位置调节,并经数模转换(D/A)模块,将位置控制信号输入到伺服驱动器,最终在力矩电机的作用下驱动转台方位或俯仰调转至预定位置,绝对值式编码器将实时采集到的位置信息反馈到伺服控制箱。
图1 伺服转台的控制结构框图
为了对伺服转台系统进行频域分析,首先上位机对给定信息和位置反馈信息按照一定的频率进行采样。在采样过程中既要避免由于采样频率过低造成频域分析过程中的频率混叠现象[1],也要尽量避免由于采样频率过高,造成计算机未能进行实时数据处理的问题。
采用傅里叶变换算法对伺服转台系统调试软件开发之前,需要按照一定的频率对系统输入和反馈进行采样。为保证采样的离散时序能够反映出原始信号的波形特征,信号采样应满足仙农采样定理[2]要求:①采样频率fs和模拟信号中最高频率fmax之间的关系应满足fs>2fmax;②对信号至少进行一个周期的采样,否则无法得到原始信号的波形特征。
1.2 离散傅里叶变换原理
上位机按照一定的采样频率对位置信息进行采样 ,可以得到伺服转台旋转轴的位置信息的数据序列:{x(n) ,n=0:N-1}。
该位置序列的离散傅里叶变换(DFT)为:
(1)
1.3 快速傅里叶变换
快速傅里叶变换作为本调试软件频域分析模块的核心算法,该算法采用按时间抽取的基2快速傅里叶变换。首先采样点数应满足2的M次幂即N=2M(M=0,1,2,…) ,如果不满足条件,需对其序列进行补零延拓操作。
为了找出快速傅里叶变换的规律,引入一个典型的8点按时间抽取基2快速傅里叶变换的运算流程图(如图2)进行分析梳理。通过图2中信号流找到快速傅里叶变换的规律是编制快速傅里叶变换算法的首要任务。
图2 一个8点FFT时间抽取算法信号流图
1.3.1 数据倒序排列
为确保输出序列X(k) 为自然顺序排列,在进行快速傅里叶变换之前,采用雷德算法对输入序列x(k)进行位倒序操作[3]。
1.3.2 蝶形运算
(2)
式中:p、q分别为m级参与该蝶形运算单元中上、下节点的序号。
综上所述,首先对位置输入和反馈信息进行采样,读取采样数据,确定输入数据点数是否满足2的幂次方,如若不满足,需要进行补零延拓操作;然后对输入的数据序列运用雷德算法进行位倒序操作,以满足输出序列为自然顺序排列;最后进行蝶形运算,确定所需的运算级数M,同一个蝶形运算的上、下节点的距离L(或者B),该级m的蝶形因子分布D以及相同蝶形因子所对应蝶形运算单元之间的步长S、起止节点标号k,最后对两点的短序列进行离散傅里叶变换,并采用“同址运算”将蝶形单元输出仍然存放在输入数组中,以节约大量内存,提高计算速度。最终经过适当组合,可以计算得到N点序列的快速傅里叶变换。快速傅里叶变换的流程如图3所示。
图3 快速傅里叶变换的流程图
2 数据解析
假设位置输入或反馈信息的峰值为A,那么经过快速傅里叶变换后的结果Xk的每个点(除了第一个点直流分量外)的模值就是A的N/2 倍;而第一个点就是直流分量,它的模值就是直流分量的N倍。每一点的相位就是该频率下的信号的相位(第一点所对应的直流信号的相位为0 rad);某点n所对应的频率为fn=(n-1)fs/N,fn的频率分辨率为fs/N,为提高频率分辨率,在采样频率一定的情况下,可以适当增加采样点数,也即增加采样长度[4]。
(3)
(4)
(5)
式(3)~式(5)分别表示某点谐波分量的幅值、相位角的主值和实际信号表达式,Xn-1.real与Xn-1.image分别表示经过快速傅里叶变换后的第n个复数值的实部和虚部。通过分析,可以获取复杂信号的谐波组成(频率、幅值、相位)。对伺服转台系统输入某一频率的谐波信号,通过伺服转台调试软件的频域分析模块可以得到系统的响应,进而可以判断伺服转台系统存在何种频率的噪声。若该噪声对系统响应影响比较大,可以采用滤波技术将噪声对伺服转台系统的影响减至系统允许的范围内[5]。
3 C#程序实现
根据快速傅里叶变换的流程图(图3),运用C#编程环境进行伺服转台系统调试软件的开发。由于C#没有复数类型,首先定义一个复数的结构体和复数的四则运算、求模数以及辐角的方法(参照式(3)和式(4));接下来对读取数据序列采用雷德算法进行位倒序操作,最后进行快速傅里叶变换。雷德算法和快速傅里叶变换核心代码分别如下:
///
/// 采用雷德算法进行位倒序操作
///
/// 需要位倒序的复数
/// FFT的离散点数
public static void Rader_BitReversed(Complex[]Cin, intFFT_N)
{
intnv2,nm1,i,k,j= 0;
nv2 =FFT_N/ 2;
nm1 =FFT_N- 1;
Complext= new Complex(); //复数变量
for (i= 0;i { if (i { t=Cin[j]; Cin[j] =Cin[i]; Cin[i] =t; } k=nv2; //求j的下一个倒位序 while (k<=j&&k> 0) //如果k<=j,表示j的最高位为1(采用循环进行运算) { j=j-k; //把最高位变成0 k=k/2; //k/2,比较次高位,依次类推,逐个比较,直到某个位为0 } j=j+k; } } /// /// 进行快速傅立叶变换的核心算法 /// /// 输入序列 变换核 /// 定义傅里叶变换的点数 /// public static Complex[] Function_FFT(Complex[]C,intFFT_N) { doublePI= Math.PI; //π值常量 intk,r,N,m,M; intS,L,q; //FFT运算核,使用蝶形运算完成FFT运算 N=FFT_N; Complexu= new Complex(); //操作数1 Complexw= new Complex(); //操作数2 Complext= new Complex(); //复数变量 ComplexCin= new Complex(); //复数变量 Cin= Rader_BitReversed(Complex[]C,N)//调用雷德算法实现位倒序 { M= Convert.ToInt32(Math.Log(N) / Math.Log(2)); //计算M的值,即计算蝶形运算级数M=log(2)N for (m= 0;m { //m表示第m级蝶形,l为蝶形级总数l=log(2)N L= Convert.ToInt32(Math.Pow(2,m)); //同一个蝶中参加运算的两点之间的距离 S=2×L; //同一个蝶形因子,对应的蝶形运算组间步长 u.real= 1.0; //u为蝶形结运算系数,初始值为1 u.image= 0; w.real= Math.Cos(PI/L); //w为系数商,即当前系数与前一个系数的商 w.image= -Math.Sin(PI/L); for (r= 0;r { for (k=r;k< =N-2;k=k+S) //控制同一蝶形结运算,即计算系数相同蝶形结 { q=k+L; t= Complex_multiplicate(Cin[q],u); //蝶形运算(求两个复数的乘积) Cin[q].real=Cin[k].real-t.real; //蝶形结的下半部分 Cin[q].image=Cin[k].image-t.image; Cin[k].real=Cin[k].real+t.real; //蝶形结的上半部分 Cin[k].image=Cin[k].image+t.image; } u= Complex_multiplicate(u, w);//改变系数,进行下一个蝶形运算(求两个复数的乘积) } } } returnCin; //返回经过快速傅里叶变换后的序列 } 4.1 系统辨识及应用 在对伺服转台系统进行系统辨识中,分别向方位和俯仰方向输入预定的线性扫频信号,线性扫频信号[6]为: (6) 式中:φ0为初始相位,系统默认为0 rad;f0为起始频率,系统默认为0 Hz;tg为目标时间;fi(tg)为目标时间所对应的目标频率。 伺服转台系统对输入的频率响应反映了系统本身的固有特性,取决于系统的结构与参数特性。伺服转台系统之频率响应特性如图4所示。 图4 伺服转台系统之频率响应特性图 伺服转台系统的频域响应特性图是伺服转台系统进行系统辨识的基础[7-9]。首先依据方位和俯仰从低频开始分别至转角频率ωa1=1.8S-1与ωb1=2.3S-1,就是一条20lgKa=-0.95 dB与20lgKb=-0.95 dB水平直线作为渐近线,说明伺服转台系统的方位和俯仰均为0型系统,并且方位和俯仰的增益Ka=Kb≈0.9。 其次,方位在转角频率ωa1=1.8S-1和ωa2=6.4S-1处,分别以-20 dB/dec与-40 dB/dec的斜率下降,说明系统的方位是两个惯性环节的串联,这两个惯性环节的时间常数分别为Ta1=1/ωa1≈0.56S和Ta2=1/ωa2≈0.16S。因此,根据方位各环节的对数幅频特性可初步估计出的频率特性为: 同理,俯仰在转角频率ωb1=2.3S-1和ωa2=7.0S-1处,分别以-20 dB/dec与-40 dB/dec的斜率下降,该方向也是两个惯性环节串联,相应的时间常数为Tb1=1/ωb1≈0.43S和Tb2=1/ωb2≈0.14S。伺服转台俯仰方向初步估计出的频率特性为: 因此,伺服转台系统方位经过修正后的最小相位系统的传递函数为: 同理,可以得到伺服转台系统俯仰经过修正后的最小相位系统的传递函数为: 依据伺服转台系统方位与俯仰的参数模型及其特征参数,如时间常数T,时间延迟ξ和放大系数(即增益)K,则按照经验公式计算出伺服驱动器的参数,该方法确定了伺服转台系统的PID参数范围[10],进而大大提高系统的调试效率。 4.2 带宽分析 根据伺服转台系统的性能特点,在进行带宽测试过程中使用更严格的“双十”标准进行评判[11],其中“双十”指的是频率响应的幅值衰减10%(即-0.92 dB)或者相位滞后10度时的频率,取二者较小的那个带宽。 由图4可知,伺服转台系统方位的带宽为0.9 Hz,俯仰的带宽为1.1 Hz。带宽指标影响伺服转台系统对输入响应的快慢以及响应的精度。但是带宽过大,则系统对外界干扰的抑制能力减弱。如果系统的带宽在合适的范围内进一步提高,除了选用较大力矩的伺服电机和驱动器外,同时也要优化伺服转台的机械结构,方位和俯仰的转动惯量尽可能小。 伺服转台系统调试软件中的频域分析法对数字信号进行分析,可以获得系统的带宽,进而计算出伺服转台系统所能够响应的最大角加速度。系统辨识则深刻剖析出系统中所具有的典型环节类型以及系统中的转角频率和延迟时间等参数,这对于系统的PID参数确定了调整范围和方向。最终,调试人员的调试效率得到提高,并且调整的参数满足系统性能要求。 [1] 王伯雄.测试技术基础[M].北京:清华大学出版社,2006. [2] 胡广书.数字信号处理(第二版)[M].北京:清华大学出版社,2003. [3] 张登奇,李宏民,李丹.按时间抽取的基2FFT算法分析及MATLAB实现[J].电子技术,2011(2):75-77. [4] 陈杰.MATLAB宝典[M].北京:电子工业出版社,2010. [5] 钱富才,黄姣茹,秦新强.基于鲁棒优化的系统辨识算法研究[J].自动化学报,2014,40(5):988-993. [6] 王晗,张卯瑞,李俊夫,等.Chirp信号激励的电液伺服系统辨识[J].机床与液压,2016,44(13):128-131. [7] 熊隽.雷达伺服转台方位传动系统设计[J].机械传动,2013,37(1):61-64. [8] 丁锋.系统辨识(3):辨识精度与辨识基本问题[J].南京信息工程大学学报(自然科学版),2011,3(3):193-226. [9] 杨叔子,杨克冲.机械工程控制基础[M].武汉:华中科技大学出版社,2005. [10] 陈大鹏,韩平.伺服转台智能PID复合控制算法研究[J].仪表技术,2014(12):12-14. [11] 曾鸣,张东纯,苏宝库.伺服转台高精度控制系统带宽设计的探讨[J].中国惯性技术学报,2001(2):56-60.4 调试软件在系统辨识与带宽分析中的应用
5 结论