论文部分内容阅读
中图分类号:TP2文献标识码:A文章编号:1671-7597(2009)0510016-02
一、背景介绍
1854年,在纽约水晶宫举行的世界博览会上,美国人伊莱沙·格雷夫斯·奥的斯第一次向世人展示了他的发明-历史上第一部安全升降梯。从那以后,升降梯在世界范围内得到了广泛应用。电梯在操纵控制方面更是步步出新手柄开关操纵,按钮控制,信号控制,集选控制、人机对话等,多台电梯还出现了并联控制,智能群控。现在的电梯大都采用分布式控制系统,由主控制柜、轿顶站、轿内操纵箱、层站召唤等控制部件组成。轿顶站是电梯的重要控制部件,主要通过接收控制柜和轿内操纵箱的信号,驱动门电动机,实现电梯门的开关动作。
因为轿顶站是电梯中的关键部件之一,必须在出厂前对其进行模拟调试,以保证其工作性能达到设计要求。由于电梯轿门形式多样,其开门的力矩和速度特性都不尽相同,轿顶站需要能够对应不同的开门特性需求。本文将介绍一种调试装置的设计,以达到检验电梯轿顶站能否按照设计要求满足对应不同的开门特性的目的。
二、系统设计
(一)硬件系统设计
由于设计的是测试装置,测试对象仅是控制门机动作的轿顶站,因此考虑通过采集电机的编码器脉冲信号,得到开门的速度曲线和位置信息,来模拟门的开关动作。采用计算机模拟电梯控制柜与轿顶站实际通讯,触发轿顶站发送信号,驱动电机运动实现开关门动作。并且使用专用板卡,实现数据采集等功能,利用计算机分析开关门速度曲线与预设曲线是否吻合,以检验轿顶站功能是否正常。
系统的整体框图如图1所示。
(二)系统的软件设计
系统要解决的关键问题是速度曲线的采集和与预设曲线的比较。本文接下来将就这两个方面进行详细介绍。
1.速度曲线的采集。本系统采用一个与电动机同轴的编码器,利用电动机每转过一圈编码器都会发出一个脉冲信号的特性,来表示电动机转过的圈数。同时,在工控计算机中,插入一块专用的数据采集板卡,以记录编码器发出的脉冲数。这样经过数据的计算,就可以得到电动机的速度曲线,并将其直观的显示在调试软件的界面上。
void speed() /*电动机速度图形*/
{
spd=abs(dis2-dis1);/*在数据采集卡计数间隔前后的两次计数值差*/
spd=spd*spd_value; /*脉冲数除以计数间隔,即转速rpm*/
x2=x1+1; /*将这一计时段内的速度曲线绘于调试界面*/
y2=spd;
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
}
2.速度曲线与预设曲线的比较。由于门机型号等参数的不同,其开门力矩和速度特性不尽相同。实际产品中,门机开门速度曲线是采用双闭环控制来实现的。所谓的双闭环,是指的电流环和速度环,速度环的反馈是通过与开门电机相连的编码器的信号反馈实现的,而电流环则通过DC-CT(一种电流互感器)来实现的。根据编码器的脉冲来获知门的位置并产生速度反馈信号,通过差动放大器从既定的速度曲线(在驱动软件中的一张数据表格)里减去电动机的反馈速度,并计算速度的偏移,再根据偏移和电动机常数来计算所需要的电动机扭矩(力矩),通过运算电流指令产生信号来驱动逆变回路的功率器件,从而实现对门机的调速。整个运行过程就是不断的比较和校正,图2给出了双闭环速度控制的基本框图。
在轿顶站工作正常的情况下,由于双闭环的存在,可以对门机速度进行实时的调整,门机的速度曲线应该是与预设曲线基本一致的。轿顶站调试台的作用就是需要判断轿顶站产品的性能能否达到设计要求,其中非常重要的指标就是轿顶站能否按照设计要求实时调整门机速度曲线,换句话说就是实际的门机速度曲线与预设曲线能否保值大致的一致。
对于实际的门机速度曲线与预设的曲线是否一致,调试软件中应能够做到自动进行判别,并给出结论,以提示操作者做出判断。
上文已经提到了如何采集实际的门机速度曲线,接下来介绍几种方法来判别实际门机速度曲线与预设曲线的符合程度。
(1)方差法。这是一种比较简单直观的方法,就是对采集到的门机速度曲线上的每个点与对应的预设曲线上的每个点做差值,然后计算差值的方差,方差小说明两条曲线的符合程度较高。以下的程序代码是方差法比较的基本实现思路。
void Judge1()
{
double x[349],y[349],z[349];
/*x表示实际的速度曲线,y表示预设的速度曲线,z表示两者差值的绝对值*/
int i;
for(i=0;i<350;i++)
{
z[i]=abs(x[i]-y[i]);
}
double ez,vz,t=0,v=0;/*ez表示z的均值,vz表示z的方差*/
for(i=0;i<350;i++)
{
t=t+z[i];
}
ez=t/350;
for(i=0;i<350;i++)
{
v=v+(z[i]-ez)*(z[i]-ez);
}
vz=v/350;
if(vz printf("实测曲线达到设计要求。");
else
printf("实测曲线不符合设计要求。");
}
(2)Minkowski法。距离是事物之间差异性的测度,不同距离的度量方式,会导致不同的测度结果。常用的对i,j两个n维数组的距离度量有如下几种。
①绝对值距离
在Minkowski距离公式中p≥1。当p=1时,它就是绝对值距离;当p=2时,它就是欧氏距离。在比较两条曲线的相似度时,往往可以采用几种距离进行计算、对比,选择一种较为合理的距离作为判别的准则。在本问题中,上述的方差法已经使用了绝对值距离进行判别,如果要提高判别的精度,还可以采用欧式距离或者更高阶的Minkowski距离作为判别的依据。可以仅以距离的大小,作为判断实际曲线与预设曲线是否相符,而不必再计算方差作为判据。以下简单给出p=3时,利用Minkowski距离,作为判据的判断方法。
void Judge2()
{
double x[349],y[349],z[349],m,t=0;
/*x表示实际的速度曲线,y表示预设的速度曲线,m表示两者之间的mikowski距离*/
int i;
for(i=0;i<350;i++)
{
z[i]=abs(x[i]-y[i]);
t=t+pow(z[i],3);
}
m=pow(t,1.0/3);
if(m printf("实测曲线达到设计要求。");
else
printf("实测曲线不符合设计要求。");
}
(3)相关系数法。除了以距离来表示两个事物之间差异性,还可以用相关系数来测度其相似性。
相关系数的计算公式如下所示:
要判断实测速度曲线预设曲线之间的相似程度,我们就可以用计算两组数据的相关系数的方法。如果越相似,则相关系数越接近于1,反之越接近于0。可以设定一个合适阀值作为判断的依据。以下的程序代码是相关系数法比较的基本实现思路。
void Judge3()
{
double x[349],y[349],t=0,ex,ey;
/*x表示实际的速度曲线,y表示预设的速度曲线*/
int i;
for(i=0;i<350;i++)
{
t=x[i]+t;
}
ex=t/350; /*ex表示x的均值*/
t=0;
for(i=0;i<350;i++)
{
t=y[i]+t;
}
ey=t/350; /*ey表示y的均值*/
double a=b=c=0;
for(i=0;i<350;i++)
{
a=(x[i]-ex)*(y[i]-ey)+a;
}
for(i=0;i<350;i++)
{
B=(x[i]-ex)*(x[i]-ex)+b;
}
for(i=0;i<350;i++)
{
c=(y[i]-ey)*(y[i]-ey)+c;
}
r=a/(sqrt(b)*sqrt(c));/*r为x与y的相关系数*/
if(r>n) /*n为根据需要设置的阀值*/
printf("实测曲线达到设计要求。");
else
printf("实测曲线不符合设计要求。");
}
一、背景介绍
1854年,在纽约水晶宫举行的世界博览会上,美国人伊莱沙·格雷夫斯·奥的斯第一次向世人展示了他的发明-历史上第一部安全升降梯。从那以后,升降梯在世界范围内得到了广泛应用。电梯在操纵控制方面更是步步出新手柄开关操纵,按钮控制,信号控制,集选控制、人机对话等,多台电梯还出现了并联控制,智能群控。现在的电梯大都采用分布式控制系统,由主控制柜、轿顶站、轿内操纵箱、层站召唤等控制部件组成。轿顶站是电梯的重要控制部件,主要通过接收控制柜和轿内操纵箱的信号,驱动门电动机,实现电梯门的开关动作。
因为轿顶站是电梯中的关键部件之一,必须在出厂前对其进行模拟调试,以保证其工作性能达到设计要求。由于电梯轿门形式多样,其开门的力矩和速度特性都不尽相同,轿顶站需要能够对应不同的开门特性需求。本文将介绍一种调试装置的设计,以达到检验电梯轿顶站能否按照设计要求满足对应不同的开门特性的目的。
二、系统设计
(一)硬件系统设计
由于设计的是测试装置,测试对象仅是控制门机动作的轿顶站,因此考虑通过采集电机的编码器脉冲信号,得到开门的速度曲线和位置信息,来模拟门的开关动作。采用计算机模拟电梯控制柜与轿顶站实际通讯,触发轿顶站发送信号,驱动电机运动实现开关门动作。并且使用专用板卡,实现数据采集等功能,利用计算机分析开关门速度曲线与预设曲线是否吻合,以检验轿顶站功能是否正常。
系统的整体框图如图1所示。
(二)系统的软件设计
系统要解决的关键问题是速度曲线的采集和与预设曲线的比较。本文接下来将就这两个方面进行详细介绍。
1.速度曲线的采集。本系统采用一个与电动机同轴的编码器,利用电动机每转过一圈编码器都会发出一个脉冲信号的特性,来表示电动机转过的圈数。同时,在工控计算机中,插入一块专用的数据采集板卡,以记录编码器发出的脉冲数。这样经过数据的计算,就可以得到电动机的速度曲线,并将其直观的显示在调试软件的界面上。
void speed() /*电动机速度图形*/
{
spd=abs(dis2-dis1);/*在数据采集卡计数间隔前后的两次计数值差*/
spd=spd*spd_value; /*脉冲数除以计数间隔,即转速rpm*/
x2=x1+1; /*将这一计时段内的速度曲线绘于调试界面*/
y2=spd;
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
}
2.速度曲线与预设曲线的比较。由于门机型号等参数的不同,其开门力矩和速度特性不尽相同。实际产品中,门机开门速度曲线是采用双闭环控制来实现的。所谓的双闭环,是指的电流环和速度环,速度环的反馈是通过与开门电机相连的编码器的信号反馈实现的,而电流环则通过DC-CT(一种电流互感器)来实现的。根据编码器的脉冲来获知门的位置并产生速度反馈信号,通过差动放大器从既定的速度曲线(在驱动软件中的一张数据表格)里减去电动机的反馈速度,并计算速度的偏移,再根据偏移和电动机常数来计算所需要的电动机扭矩(力矩),通过运算电流指令产生信号来驱动逆变回路的功率器件,从而实现对门机的调速。整个运行过程就是不断的比较和校正,图2给出了双闭环速度控制的基本框图。
在轿顶站工作正常的情况下,由于双闭环的存在,可以对门机速度进行实时的调整,门机的速度曲线应该是与预设曲线基本一致的。轿顶站调试台的作用就是需要判断轿顶站产品的性能能否达到设计要求,其中非常重要的指标就是轿顶站能否按照设计要求实时调整门机速度曲线,换句话说就是实际的门机速度曲线与预设曲线能否保值大致的一致。
对于实际的门机速度曲线与预设的曲线是否一致,调试软件中应能够做到自动进行判别,并给出结论,以提示操作者做出判断。
上文已经提到了如何采集实际的门机速度曲线,接下来介绍几种方法来判别实际门机速度曲线与预设曲线的符合程度。
(1)方差法。这是一种比较简单直观的方法,就是对采集到的门机速度曲线上的每个点与对应的预设曲线上的每个点做差值,然后计算差值的方差,方差小说明两条曲线的符合程度较高。以下的程序代码是方差法比较的基本实现思路。
void Judge1()
{
double x[349],y[349],z[349];
/*x表示实际的速度曲线,y表示预设的速度曲线,z表示两者差值的绝对值*/
int i;
for(i=0;i<350;i++)
{
z[i]=abs(x[i]-y[i]);
}
double ez,vz,t=0,v=0;/*ez表示z的均值,vz表示z的方差*/
for(i=0;i<350;i++)
{
t=t+z[i];
}
ez=t/350;
for(i=0;i<350;i++)
{
v=v+(z[i]-ez)*(z[i]-ez);
}
vz=v/350;
if(vz
else
printf("实测曲线不符合设计要求。");
}
(2)Minkowski法。距离是事物之间差异性的测度,不同距离的度量方式,会导致不同的测度结果。常用的对i,j两个n维数组的距离度量有如下几种。
①绝对值距离
在Minkowski距离公式中p≥1。当p=1时,它就是绝对值距离;当p=2时,它就是欧氏距离。在比较两条曲线的相似度时,往往可以采用几种距离进行计算、对比,选择一种较为合理的距离作为判别的准则。在本问题中,上述的方差法已经使用了绝对值距离进行判别,如果要提高判别的精度,还可以采用欧式距离或者更高阶的Minkowski距离作为判别的依据。可以仅以距离的大小,作为判断实际曲线与预设曲线是否相符,而不必再计算方差作为判据。以下简单给出p=3时,利用Minkowski距离,作为判据的判断方法。
void Judge2()
{
double x[349],y[349],z[349],m,t=0;
/*x表示实际的速度曲线,y表示预设的速度曲线,m表示两者之间的mikowski距离*/
int i;
for(i=0;i<350;i++)
{
z[i]=abs(x[i]-y[i]);
t=t+pow(z[i],3);
}
m=pow(t,1.0/3);
if(m
else
printf("实测曲线不符合设计要求。");
}
(3)相关系数法。除了以距离来表示两个事物之间差异性,还可以用相关系数来测度其相似性。
相关系数的计算公式如下所示:
要判断实测速度曲线预设曲线之间的相似程度,我们就可以用计算两组数据的相关系数的方法。如果越相似,则相关系数越接近于1,反之越接近于0。可以设定一个合适阀值作为判断的依据。以下的程序代码是相关系数法比较的基本实现思路。
void Judge3()
{
double x[349],y[349],t=0,ex,ey;
/*x表示实际的速度曲线,y表示预设的速度曲线*/
int i;
for(i=0;i<350;i++)
{
t=x[i]+t;
}
ex=t/350; /*ex表示x的均值*/
t=0;
for(i=0;i<350;i++)
{
t=y[i]+t;
}
ey=t/350; /*ey表示y的均值*/
double a=b=c=0;
for(i=0;i<350;i++)
{
a=(x[i]-ex)*(y[i]-ey)+a;
}
for(i=0;i<350;i++)
{
B=(x[i]-ex)*(x[i]-ex)+b;
}
for(i=0;i<350;i++)
{
c=(y[i]-ey)*(y[i]-ey)+c;
}
r=a/(sqrt(b)*sqrt(c));/*r为x与y的相关系数*/
if(r>n) /*n为根据需要设置的阀值*/
printf("实测曲线达到设计要求。");
else
printf("实测曲线不符合设计要求。");
}