论文部分内容阅读
[摘要]:工业自动化在工业领域发挥举足轻重的作用,被广泛应用于机械制造、电力、建筑、交通运输、信息技术等领域,极大地促进了工业的进步。工业自动化控制,就是通过使用计算机技术、微电子技术、电气手段,使工厂的生产和制造过程更加自动化、效率化、精确化,并具有可控性及可视性。本文主要讨论的是工业集中控制配料系统的设计,以及如何利用该系统实现对不同物料进行自动配料并连续地精确计量。
[关键词]:信号采集与滤波 PI调节
中图分类号:F123.13 文献标识码:F 文章编号:1009-914X(2012)32- 0429-02
[正文]本系统是在Windows XP操作系统下,利用Delphi编程开发工具开发出来的。其中涉及到对现场信号的采集、过滤,以及对变频器的控制,对电子皮带秤上物料的配料、计量等等。下面就本系统进行本文论述。
1、系统构成
1.1荷重传感器;
1.2测速装置;
1.3现场变送器;
1.4变频器;
1.5工业PC机(上位机集散控制系统);
1.6电子皮带秤。
2、系统工作原理
在电子皮带秤的计量段安装荷重传感器,在电机处安装光编或测速开关,荷重传感器受力输出的毫伏信号和与皮带线速度成正比的脈冲信号经过信号调理箱调理后,送至电脑进行乘法运算和量化计算,从而得出皮带上物料的瞬时量和累计量并显示,同时电脑将瞬时量与设定量值进行比较得出偏差值,根据此偏差得出控制输出值应有的变化值自动调节控制变频器,再由变频器控制电机转速,改变皮带的线速度,从而使实际流量趋近于设定值,以此来实现定量给料的目的。
3、系统实现
3.1采集重力信号和速度信号,输出控制信号
此处需要用到信号采集卡和控制输出卡,前者主要是采集现场的模拟量信号,将它转换成数字量信号提供给计算机,后者主要是由计算机给出数字量信号,将它转换成模拟量信号提供给变频器,即通常所讲的AD转换和DA转换。由于现场情况比较恶劣,各种干扰源很多,如果采集来的信号直接在画面上显示可能会出现信号乱跳,参与运算会出现计量不准确的情况,因此,一般来讲,不建议直接使用,而是通常会将采集来的信号先滤波,然后再使用。对于控制输出信号,当为手动控制方式时按固定的手动输出电压恒定输出,当为自动控制方式时按PID调节的手动输出电压调速输出。
3.1.1采集重力信号并滤波的程序实现。
此处仅介绍重力信号,速度信号的处理与此类似。功能是:每秒采集20个重力信号,去掉一个最大值,去掉一个最小值,求得平均值,这个值作为重力信号显示。
function CalAvWeight:Double;
var
i,j,temp:Integer;
SumWeight:Integer;
AvWeight:array [1..20] of Integer;
begin
SumWeight:=0;
for i:=1 to 20 do
AvWeight[i]:=ISO813_AD_Hex($220,0,1); //每秒采集20个重力信号
for i:=1 to 19 do //20个数据从大到小排序
begin
for j:=i+1 to 20 do
begin
if AvWeight[i] begin
temp:=AvWeight[i];
AvWeight[i]:=AvWeight[j];
AvWeight[j]:=temp;
end;
end;
end;
for i:=3 to 18 do
SumWeight:=SumWeight+AvWeight[i];
SumWeight:=SumWeight div 16;
Result:=SumWeight;
end;
3.1.2手动输出电压来控制变频器
procedure TForm1.BtnHandClick(Sender: TObject); //手动输出
begin
A628_DaFloat($2C0,0,1,StrToFloat(edtInput.Text));
end;
3.2系统功能
第一步:测皮:该操作为的是测量得出皮带秤本身的皮重,以便于以后对物料净重的测量。
procedure TFrm_main.MyCePi; //实现测皮功能
var
MyTe:Double;
begin
MyCount:=MyCount+1; //测试时间累计
Inc(jj);
MyTe:=AvWeight/4095; //计算皮重
SumWeight:=SumWeight+MyTe; //皮重累计
MyPiWeight:=RoundTo(TeWeight*SumWeight/jj,-3); //平均皮重
end;
第二步:标定:该操作为的是让由电脑计算出的物料重量与实际的物料重量接近,以便于对物料净重进行准确计量。
procedure TFrm_main.MyBiao; //实现标定功能
var
Temp:Double;
begin
MyCount:=MyCount+1;
Temp:=(CalAvWeightAndSpeed-PiWe)/4095*TeWeight; //净重
SumWeight:=SumWeight+DemConset*Temp*TempSpeed; //累计量 end;
第三步:投料生产阶段:有手动、自动、停车这3种方式。
当手动生产时,由电脑给出一个恒定的控制输出信号来控制变频器运行;当自动生产时,由电脑根据瞬时量与目标量的偏差通过PI控制方式调节控制输出信号来使变频器调速运行;当停车时,变频器停止运行,停止投料生产。手动方式一般用于设备检修时,通常生产中只会用到自动方式,因此,此处主要针对自动方式进行描述。
对于自控来讲,最重要的无非是自动化控制,它可以使得机器或装置在无人干预的情况下按规定的程序或指令自动进行操作或控制。自控采用的主要控制方式有反馈控制、前馈控制、PID控制等。当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。当然,在实际使用中,并非P、I、D都会使用到,也有PI和PD控制。
①比例(P)控制:控制器的输出与输入误差信号成比例关系;
②积分(I)控制:由于光靠P控制时,系统输出在进入稳态后可能会存在稳态误差,为了消除稳态误差,在控制器中必须引入积分项,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差;
③微分(D)控制:它能预测误差变化的趋势,这样就能提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
procedure TFrm_main.MyAutoClick; //自动开秤
var
Change:Boolean;
begin
Change:=False; //手/自动无扰动切换
if LineAuto=0 then
Exit;
if LineAuto=1 then
Change:=True;
if Change then
InitElec:=avSpeed
else
InitElec:=Round(ChenStartSp*4095/100); //電机起始速度
LineAuto:=0; //自动方式
Err:=0;
ErrAdd:=0;
end;
procedure TFrm_main.Timer1Timer(Sender: TObject);
var
TempS:Integer;
TempW,PIDRa:Double;
begin
if LineAuto=0 then
begin
CountSec:=CountSec+1;
if CountSec=8 then
CountSec:=0;
Flow[CountSec]:=3.6*DemConset*TempW/4095*TeWeight*TempS; //瞬时量
Case CountSec of
1:AvFlow:=Flow[1];
2:AvFlow:=(Flow[1]+Flow[2])/2;
3:AvFlow:=(Flow[1]+Flow[2]+Flow[3])/3;
4:AvFlow:=(Flow[1]+Flow[2]+Flow[3]+Flow[4])/4;
end;
MySum:=MySum+Flow[CountSec]/3600; //累计量
MyPrct:=MyPrct+Flow[CountSec]/3600; //班产量
PIDRa:=1; //内部PID
Err:=ChenFlow-Flow[CountSec]; //目标量与瞬时量的偏差
ErrAdd:=ErrAdd+Err; //偏差累计
if Abs((Err/ChenFlow)*100)<=5 then
PIDRa:=3;
if (Abs((Err/ChenFlow)*100)>5) And(Abs((Err/ChenFlow))*100<=10) then
PIDRa:=5;
if (Abs((Err/ChenFlow)*100)>10) And(Abs((Err/ChenFlow))*100<=20) then
PIDRa:=7;
if (Abs((Err/ChenFlow))*100>20) And(Abs((Err/ChenFlow))*100<=50) then
PIDRa:=10;
if Abs((Err/ChenFlow))*100>50 then
PIDRa:=12;
if (InitElec<=4095) And(InitElec>=0) then //PI调节
begin
if (ChenP*Err*PIDRa>-1) And(ChenP*Err*PIDRa<0) then
InitElec:=Round(InitElec-1)
else
begin
if (ChenP*Err*PIDRa>0) And(ChenP*Err*PIDRa<1) then
InitElec:=Round(InitElec+1)
else
InitElec:=Round(InitElec+ChenP*Err*PIDRa+ChenI*ErrAdd);
end;
end;
if InitElec<0 then
begin
InitElec:=0;
ErrAdd:=0;
Err:=0;
end;
if InitElec>4095 then
begin
InitElec:=4095;
ErrAdd:=0;
Err:=0;
end;
A628_DaFloat($2C0,0,1,2*InitElec/819);
end;
end;
4、结束语
在工业领域,许多行业都是相通的,它们都需要使用到本文所提到的一些东西,在处理此类问题时本文都具有参考意义。对于PID控制参数具体设置多少,则需要根据现场经验进行调整设置,现场工艺不同,PID控制参数的值也就需要相应的调整。
[参考文献]
[1]张庆彬,毕丽红,王铸;工业自动配料系统的精度分析[J];自动化技术与应用;2005(5)
[2]胡奇,电子皮带秤定量给料机大林算法的控制系统[J].黑龙江科技信息.2012(2)
[3]张东瀛,郭咏虹,王斌,王孙安. 基于模糊PID的自动配料系统控制研究[J]. 机床与液压.2005(1)
[4]陈毅宏,李志宏. 综合粉配料自动控制系统设计及应用[J].工业仪表与自动化装置.2010(2)
[5]张永平,积分分离PID在配料控制系统中的应用[J].中国高新技术企业.2009(20)
[作者简介]
谢丽莉(1988- ),女,江苏无锡人,助理工程师,研究方向:自动化控制与软件设计。
[关键词]:信号采集与滤波 PI调节
中图分类号:F123.13 文献标识码:F 文章编号:1009-914X(2012)32- 0429-02
[正文]本系统是在Windows XP操作系统下,利用Delphi编程开发工具开发出来的。其中涉及到对现场信号的采集、过滤,以及对变频器的控制,对电子皮带秤上物料的配料、计量等等。下面就本系统进行本文论述。
1、系统构成
1.1荷重传感器;
1.2测速装置;
1.3现场变送器;
1.4变频器;
1.5工业PC机(上位机集散控制系统);
1.6电子皮带秤。
2、系统工作原理
在电子皮带秤的计量段安装荷重传感器,在电机处安装光编或测速开关,荷重传感器受力输出的毫伏信号和与皮带线速度成正比的脈冲信号经过信号调理箱调理后,送至电脑进行乘法运算和量化计算,从而得出皮带上物料的瞬时量和累计量并显示,同时电脑将瞬时量与设定量值进行比较得出偏差值,根据此偏差得出控制输出值应有的变化值自动调节控制变频器,再由变频器控制电机转速,改变皮带的线速度,从而使实际流量趋近于设定值,以此来实现定量给料的目的。
3、系统实现
3.1采集重力信号和速度信号,输出控制信号
此处需要用到信号采集卡和控制输出卡,前者主要是采集现场的模拟量信号,将它转换成数字量信号提供给计算机,后者主要是由计算机给出数字量信号,将它转换成模拟量信号提供给变频器,即通常所讲的AD转换和DA转换。由于现场情况比较恶劣,各种干扰源很多,如果采集来的信号直接在画面上显示可能会出现信号乱跳,参与运算会出现计量不准确的情况,因此,一般来讲,不建议直接使用,而是通常会将采集来的信号先滤波,然后再使用。对于控制输出信号,当为手动控制方式时按固定的手动输出电压恒定输出,当为自动控制方式时按PID调节的手动输出电压调速输出。
3.1.1采集重力信号并滤波的程序实现。
此处仅介绍重力信号,速度信号的处理与此类似。功能是:每秒采集20个重力信号,去掉一个最大值,去掉一个最小值,求得平均值,这个值作为重力信号显示。
function CalAvWeight:Double;
var
i,j,temp:Integer;
SumWeight:Integer;
AvWeight:array [1..20] of Integer;
begin
SumWeight:=0;
for i:=1 to 20 do
AvWeight[i]:=ISO813_AD_Hex($220,0,1); //每秒采集20个重力信号
for i:=1 to 19 do //20个数据从大到小排序
begin
for j:=i+1 to 20 do
begin
if AvWeight[i]
temp:=AvWeight[i];
AvWeight[i]:=AvWeight[j];
AvWeight[j]:=temp;
end;
end;
end;
for i:=3 to 18 do
SumWeight:=SumWeight+AvWeight[i];
SumWeight:=SumWeight div 16;
Result:=SumWeight;
end;
3.1.2手动输出电压来控制变频器
procedure TForm1.BtnHandClick(Sender: TObject); //手动输出
begin
A628_DaFloat($2C0,0,1,StrToFloat(edtInput.Text));
end;
3.2系统功能
第一步:测皮:该操作为的是测量得出皮带秤本身的皮重,以便于以后对物料净重的测量。
procedure TFrm_main.MyCePi; //实现测皮功能
var
MyTe:Double;
begin
MyCount:=MyCount+1; //测试时间累计
Inc(jj);
MyTe:=AvWeight/4095; //计算皮重
SumWeight:=SumWeight+MyTe; //皮重累计
MyPiWeight:=RoundTo(TeWeight*SumWeight/jj,-3); //平均皮重
end;
第二步:标定:该操作为的是让由电脑计算出的物料重量与实际的物料重量接近,以便于对物料净重进行准确计量。
procedure TFrm_main.MyBiao; //实现标定功能
var
Temp:Double;
begin
MyCount:=MyCount+1;
Temp:=(CalAvWeightAndSpeed-PiWe)/4095*TeWeight; //净重
SumWeight:=SumWeight+DemConset*Temp*TempSpeed; //累计量 end;
第三步:投料生产阶段:有手动、自动、停车这3种方式。
当手动生产时,由电脑给出一个恒定的控制输出信号来控制变频器运行;当自动生产时,由电脑根据瞬时量与目标量的偏差通过PI控制方式调节控制输出信号来使变频器调速运行;当停车时,变频器停止运行,停止投料生产。手动方式一般用于设备检修时,通常生产中只会用到自动方式,因此,此处主要针对自动方式进行描述。
对于自控来讲,最重要的无非是自动化控制,它可以使得机器或装置在无人干预的情况下按规定的程序或指令自动进行操作或控制。自控采用的主要控制方式有反馈控制、前馈控制、PID控制等。当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。当然,在实际使用中,并非P、I、D都会使用到,也有PI和PD控制。
①比例(P)控制:控制器的输出与输入误差信号成比例关系;
②积分(I)控制:由于光靠P控制时,系统输出在进入稳态后可能会存在稳态误差,为了消除稳态误差,在控制器中必须引入积分项,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差;
③微分(D)控制:它能预测误差变化的趋势,这样就能提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
procedure TFrm_main.MyAutoClick; //自动开秤
var
Change:Boolean;
begin
Change:=False; //手/自动无扰动切换
if LineAuto=0 then
Exit;
if LineAuto=1 then
Change:=True;
if Change then
InitElec:=avSpeed
else
InitElec:=Round(ChenStartSp*4095/100); //電机起始速度
LineAuto:=0; //自动方式
Err:=0;
ErrAdd:=0;
end;
procedure TFrm_main.Timer1Timer(Sender: TObject);
var
TempS:Integer;
TempW,PIDRa:Double;
begin
if LineAuto=0 then
begin
CountSec:=CountSec+1;
if CountSec=8 then
CountSec:=0;
Flow[CountSec]:=3.6*DemConset*TempW/4095*TeWeight*TempS; //瞬时量
Case CountSec of
1:AvFlow:=Flow[1];
2:AvFlow:=(Flow[1]+Flow[2])/2;
3:AvFlow:=(Flow[1]+Flow[2]+Flow[3])/3;
4:AvFlow:=(Flow[1]+Flow[2]+Flow[3]+Flow[4])/4;
end;
MySum:=MySum+Flow[CountSec]/3600; //累计量
MyPrct:=MyPrct+Flow[CountSec]/3600; //班产量
PIDRa:=1; //内部PID
Err:=ChenFlow-Flow[CountSec]; //目标量与瞬时量的偏差
ErrAdd:=ErrAdd+Err; //偏差累计
if Abs((Err/ChenFlow)*100)<=5 then
PIDRa:=3;
if (Abs((Err/ChenFlow)*100)>5) And(Abs((Err/ChenFlow))*100<=10) then
PIDRa:=5;
if (Abs((Err/ChenFlow)*100)>10) And(Abs((Err/ChenFlow))*100<=20) then
PIDRa:=7;
if (Abs((Err/ChenFlow))*100>20) And(Abs((Err/ChenFlow))*100<=50) then
PIDRa:=10;
if Abs((Err/ChenFlow))*100>50 then
PIDRa:=12;
if (InitElec<=4095) And(InitElec>=0) then //PI调节
begin
if (ChenP*Err*PIDRa>-1) And(ChenP*Err*PIDRa<0) then
InitElec:=Round(InitElec-1)
else
begin
if (ChenP*Err*PIDRa>0) And(ChenP*Err*PIDRa<1) then
InitElec:=Round(InitElec+1)
else
InitElec:=Round(InitElec+ChenP*Err*PIDRa+ChenI*ErrAdd);
end;
end;
if InitElec<0 then
begin
InitElec:=0;
ErrAdd:=0;
Err:=0;
end;
if InitElec>4095 then
begin
InitElec:=4095;
ErrAdd:=0;
Err:=0;
end;
A628_DaFloat($2C0,0,1,2*InitElec/819);
end;
end;
4、结束语
在工业领域,许多行业都是相通的,它们都需要使用到本文所提到的一些东西,在处理此类问题时本文都具有参考意义。对于PID控制参数具体设置多少,则需要根据现场经验进行调整设置,现场工艺不同,PID控制参数的值也就需要相应的调整。
[参考文献]
[1]张庆彬,毕丽红,王铸;工业自动配料系统的精度分析[J];自动化技术与应用;2005(5)
[2]胡奇,电子皮带秤定量给料机大林算法的控制系统[J].黑龙江科技信息.2012(2)
[3]张东瀛,郭咏虹,王斌,王孙安. 基于模糊PID的自动配料系统控制研究[J]. 机床与液压.2005(1)
[4]陈毅宏,李志宏. 综合粉配料自动控制系统设计及应用[J].工业仪表与自动化装置.2010(2)
[5]张永平,积分分离PID在配料控制系统中的应用[J].中国高新技术企业.2009(20)
[作者简介]
谢丽莉(1988- ),女,江苏无锡人,助理工程师,研究方向:自动化控制与软件设计。