虚拟仪器课程设计实验报告.docx
《虚拟仪器课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《虚拟仪器课程设计实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
虚拟仪器课程设计实验报告
《微机化仪器综合设计与实践》
实验指导书
扬周琦
工业大学机电工程学院
20156月印刷
实验六基于PID算法的可控硅水温自动调节系统设计
一、实验目的和要求
1.掌握虚拟仪器高级语言LabVIEW或LabWindows/CVI的流程图和软仪器
面板的编程设计方法,熟悉数据处理模块、信号分析模块、仪器控制模
块等各种软件模块的应用。
2.掌握数据采集硬件的低层驱动程序(C语言/汇编语言)设计、调试及
嵌入LabVIEW的技术。
3.学习基于PID的比例积分微分程序编写方法。
4.了解可控硅的的温度控制特点和原理。
5.熟悉CB-68LP接线端子板各接口,利用CB-68LP端子板和PCI-6023E数据采集卡进行模拟量和数字量的转换及相关数据采集。
二、实验主要仪器设备和材料
(1)装有labwindows/CVI软件PC一台
(2)PC-DAQ/PCI卡
(3)CB-68LP端子板
(4)变送器(型号SBWZ-2460)
(5)可控硅
(6)热电偶
三、实验容和要求
1、实验容
1)、对水温进行数据采样:
先把水温加热至某个温度值(100℃左右,利用万能表测试相应引脚的输出电压,温度每下降1摄氏度,就马上记录输出电压值。
2)、对采样数据进行处理:
通过观察可知,电压与温度不成线性关系,
是一条曲线,因此,本设计采用分段直线拟合。
得出电压与温度的对应
关系。
3)、用户界面设计:
用Labwindows/CVI软件进行用户界面开发,并进行
编程。
具体程序见后面。
4)、进行调试:
把PC和其他设备连接好,测试程序,设置PID参数,观
察控制效果,确立PID参数。
5)、重新对数据采样:
开始采样时,因为温度和电压值都不断发生变化,
而温度计显示变化相对于电压变化有一定的滞后,造成微机上温度显示
数值比温度计发生一定量的偏移,造成较大误差。
因此,此次采样利用
刚开发的程序控制炉温恒定,观察电压变化围,记录多个电压值,求
其平均值。
但只需要对部分温度采样就可以了,因为这里采用线段拟合
成曲线,只需要线段的端点数据就可。
6)、重新调试程序,并完善用户界面。
2、程序如下:
#include
#include
#include
#include
#include
#include"PID.h"
StaticintpanelHandle;
StaticdoubleWave[1024];
StaticdoubleTemp[1024];
StaticdoubleA;
StaticdoubleF;
StaticdoublePh,VOL,GG;
StaticdoubleAM;
StaticdoublePGAIN;
StaticdoubleIGAIN;
StaticdoubleDGAIN;
StaticdoubleLASTERR;
StaticdoubleTEMP;
Staticdoubleintegral,TEMPUP,PIDPWM;
StaticdoubleTE=0;
StaticunsignedlongAOtaskID;
StaticdoubleERR,FERROR,PT;
PID_PWM()//PID算法定义
{DoubleERR;
DoublePT,DT,RESULT,FERROR;
ERR=TEMP-AM;
If(abs(ERR)>0.01)
{FERROR=ERR;
PT=PGAIN*FERROR;
If(PT>100||PT<-100)
{Integral=0.0;
}
Else
{Integral+=IGAIN*FERROR;
If(integral>100.00)
{Integral=100.0;
}
Elseif(integral<0.0)
{Integral=0.0;}
}
DT=(ERR-LASTERR)*DGAIN;
RESULT=PT+integral+DT;
}
ElseRESULT=integral=PGAIN+IGAIN;
LASTERR=ERR;
Return(RESULT);
}
intmain(intargc,char*argv[])
{if(InitCVIRTE(0,argv,0)==0)
return-1;/*outofmemory*/
if((panelHandle=LoadPanel(0,"PID.uir",PANEL))<0)
return-1;
DisplayPanel(panelHandle);
GetCtrlVal(panelHandle,PANEL_HORIZONTAL,&F);//获得频率//
RunUserInterface();
DiscardPanel(panelHandle);
return0;
}
intCVICALLBACKSetHorizontal(intpanel,intcontrol,intevent,
void*callbackData,inteventData1,inteventData2)
//频率响应后在PC机上输出方波图形
{switch(event)
{
caseEVENT_COMMIT:
DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,
VAL_IMMEDIATE_DRAW);
GetCtrlVal(panelHandle,PANEL_HORIZONTAL,&F);
break;
}
return0;
}
intCVICALLBACKShutDown(intpanel,intcontrol,intevent,
void*callbackData,inteventData1,inteventData2)//退
出程序//
{
switch(event)
{
caseEVENT_COMMIT:
QuitUserInterface(0);
break;
}
return0;
}
intCVICALLBACKUpDataCallback(intpanel,intcontrol,intevent,
void*callbackData,inteventData1,inteventData2)
{switch(event)
{caseEVENT_TIMER_TICK:
GetCtrlVal(panelHandle,PANEL_AIM,&AM);//设定目标温度
GetCtrlVal(panelHandle,PANEL_KP,&PGAIN);//设定比例系数
GetCtrlVal(panelHandle,PANEL_KI,&IGAIN);//设定积分系数
GetCtrlVal(panelHandle,PANEL_KD,&DGAIN);//设定微分系数
AISampleChannel(1,"1",0.0,0.0,&VOL);//采集数据
SetCtrlVal(panelHandle,PANEL_VOT,VOL);//在PC机上输出电压
//以下是电压温度转换
if(VOL<-1.12)
TEMP=-40.91*VOL+28.18;
elseif(VOL<-0.84)
TEMP=-25.00*VOL+46.00;
elseif(VOL<0.05)
TEMP=-12.36*VOL+56.62;
elseif(VOL<0.73)
TEMP=-7.35*VOL+56.37;
elseif(VOL<1.91)
TEMP=-5.08*VOL+54.71;
elseif(VOL<2.72)
TEMP=-3.7*VOL+52.07;
elseif(VOL<4.25)
TEMP=-3.27*VOL+50.89;
elseif(VOL<6.96)
TEMP=-2.95*VOL+49.55;
elseif(VOL<7.04)
TEMP=-37.50*VOL+290;
elseif(VOL<7.10)
TEMP=-100.00*VOL+730.00
SetCtrlVal(panelHandle,PANEL_CURTEMP,TEMP);//温度输出
TEMPUP=PID_PWM();//PID函数调用
SetCtrlVal(panelHandle,PANEL_WEIZHI,TEMPUP);
//PID返回数值输出,对用户隐藏
SquareWave(1024,5,F/1024,&Ph,100+TEMPUP/*PID算法控制PWM参数
*/,Wave);//产生方波
DeleteGraphPlot(panelHandle,PANEL_GRAPH,-1,
VAL_IMMEDIATE_DRAW);
PlotY(panelHandle,PANEL_GRAPH,Wave,1024,VAL_DOUBLE,
VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_RED);
AOGenerateWaveforms(1,"1",1000.0,1,0,Wave,&AOtaskID);
//方波进行输出,控制炉温实验箱加热与否
break;
}
return0;
}
1、开发出来的用户界面如下,
这里PID参数如下:
四.实验器材介绍及线路接口
1.CB-68PL端子板
实物图接线图
接线说明:
上图是CB-68LP端子板引脚图,下面是对其接线作简要说明。
AI为模拟信号输入端口,当选择单端测量方式时,接线方式就是把信号源的正端接入AIn(n=0,1,……15)、信号源的负端接入AIGND;
当选择差分测量方式时,接线方式是把信号源的正端接入AIn(n=0,1,……7)、信号源的负端接入AIn+8。
例如,单端时,通道0的正负接入端就分别是AI0和AIGND;通道1的正负接入端就分别是AI1和AIGND;
差分时,通道0的正负接入端就分别是AI0和AI8;通道1的正负接入端就分别是AI1和AI9。
PI0.0~P0.7为8个数字信号输入通道,可以通过软件设置每个数字通道为输入或者输出,对应开关量和输入输出。
PCI-6023E有2个计数器:
CTR0和CTR1,如果计数器信号只有1个,希望实现简单的计数功能,那么只需要把计数器信号接到CTR0SRC或者CTR1SRC即可。
(本实验只用到4个接口,分别是:
模拟接地67,模拟输入33,数字接地,数字输出)
2.变送器(SBWZ-2460)
变送器(transmitter)是把传感器的输出信号转变为可被控制器识别的信号(或将传感器输入的非电量转换成电信号同时放大以便供远方测量和控制的信号源)的转换器。
传感器和变送器一同构成自动控制的监测信号源。
不同的物理量需要不同的传感器和相应的变送器。
变送器的种类很多,用在工控仪表上面的变送器主要有温度变送器、压力变送器、流量变送器、电流变送器、电压变送器等等。
下图为我们此次课设所用的变送器规格及功能特点:
输出:
4~20mA(可以做0-5V0-10V)
精度:
0.5%
电源:
24VDC
温度围:
0~50℃0~100℃0~150℃0~200℃
0~300℃0~400℃
适用围:
可以接收热电阻或各类热电偶输入,可直接安装于温度传感器接线盒,并标出标准电压电流信号
功能特点:
变送器信号电源同为两根普通导线,节省了热电偶专用补偿导线,降低了线路干扰带来的误差。
体积小巧、安装方便、精度好,抗干扰,稳定性好;免维护外部可直接调整零点和满度。
电流信号输出,传输距、远,缩短了仪表与传感器的距离,降低线路干扰带来的误差。
主要技术指标:
极限28mA
输入围:
热电阻:
Pt1000-150度
熔断检测:
上限(标准)
温度漂移:
±0.2%/℃
冷端补偿:
0~50℃±1℃
调整方式:
电位器
负载能力:
0~500Ω
输出:
4~20mA (可以做0-5V 0-10V 价格另议)
精度:
0.5%
电源:
24VDC
温度范围:
0~50℃0~100℃0~150℃ 0~200℃ 0~300℃ 0~400℃
3.可控硅
可控硅,是可控硅整流元件的简称,是一种具有三个PN结的四层结构的大功率半导体器件,亦称为晶闸管。
具有体积小、结构相对简单、功能强等特点,是比较常用的半导体器件之一。
该器件被广泛应用于各种电子设备和电子产品中,多用来作可控整流、逆变、变频、调压、无触点开关等。
家用电器中的调光灯、调速风扇、空调机、电视机、电冰箱、洗衣机、照相机、组合音响、声光电路、定时控制器、玩具装置、无线电遥控、摄像机及工业控制等都大量使用了可控硅器件。
本次实验所用到的可控硅规格型号如下:
输入电压:
交流220V
电压调节:
交流50V~220V
最大功率:
2000W
最大电流:
25A
(说明:
我们在使用该可控硅时,并没有采用调压旋钮,而是把旋钮卸下换上接线柱并接入我们设计好的电路中,利用PWN的高低电平触发使电路在某个设置的温度进行通断电,从而实现水温控制。
)
适用于:
使用新型双向大功率可控硅,因为电流可达25A,很好的解决了电炉丝在冷却的情况下电阻太小从而引起的过流问题;能很方便的调整市电的输出电压,在50--220伏之间任意调整,供用电器使用。
如:
电炉,热水器的调热、灯具的调光、小电机调速、电烙铁调温等。
从而达到调光,调温,调压的效果。
可供用电功率小于2000瓦的大型电器使用由于功率已经很大,所以一般的家庭电器或是小型工厂足够用。
(
适用于:
使用新型双向大功率可控硅,因为电流可达25A,很好的解决了电炉丝在冷却的情况下电阻太小从而引起的过流问题;能很方便的调整市电的输出电压,在50--220伏之间任意调整,供用电器使用。
如:
电炉,热水器的调热、灯具的调光、小电机调速、电烙铁调温等。
从而达到调光,调温,调压的效果。
可供用电功率小于2000瓦的大型电器使用由于功率已经很大,所以一般的家庭电器或是小型工厂足够用。
五、实验方法、步骤及结果测试
1、温度控制基本理论
温度控制不像开关变量,要么全开,要么全关,是一个连续变化量。
当被控温度低于目标值很大时,就需要全速加热,当温度接近目标值时,就必须减慢加热速度,否则就很容易造成温度严重超调,达不到温度控制效果。
炉温实验箱一般只有输入控制是低电平时才会有进行加热,其余则是停止加热。
因此,我们可以通过控制高电平和低电平的比例来控制加热速度(只要电压频率足够快,宏观上就是速度控制了),也就是所谓的PWM控制。
控制算法有很多,而PID算法目前为止比较纯熟的一种,这里采用就采用PID算法,其运算结果转换成PWM输出,以达到控制效果。
2、PID控制的原理和特点
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
P当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
(1)比例(P)控制
比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差(Steady-stateerror)。
(2)积分(I)控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(SystemwithSteady-stateError)。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
(3)微分(D)控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。
这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
六、课程设计电路图
实物图
仿真控制电路①
信号采集仿真电路②
七、实验现象
标定电压转换成温度记录数据及对应的拟合直线:
数据1拟合直线1
数据2拟合直线2
数据3拟合直线3
八、实验心得与体会
通过本次课程设计,我们大大感受到了团队分工合作,相互帮助,相互配合的重要性,在我们感受到团结合作的力量的同时,也让我们学到了不少知识和技能,特别是掌握了虚拟仪器高级语言LabVIEW或LabWindows/CVI的流程图和软仪器面板的编程设计方法,熟悉数据处理模块、信号分析模块、仪器控制模
块等各种软件模块的应用;也了解了数据采集硬件的低层驱动程序(C语言/汇编语言)设计、调试及嵌入LabVIEW的技术;进一步学习掌握了基于PID的比例积分微分程序编写方法;初步掌握了可控硅的的温度控制特点和原理,同时对CB-68LP接线端子板各接口、利用CB-68LP端子板和PCI-6023E数据采集卡进行模拟量和数字量的转换及相关数据采集更加熟悉。
总之,通过本次课程设计,对我们的知识和技能都有很大的提高,相信在以后的工作生活中会有很大的帮助,为此,感洋老师和各个同学细心耐心的指导和帮助,老师和同学都让我们组学到了很多知识。
九、参考文献
1.《基于LabWindows/CVI的虚拟仪器设计与应用(第2版)》作者晓芸
2.《LabWindows/CVI测试技术及工程应用》作者王建新
3.《LabWindows/CVI虚拟仪器设计》作者史君成