职场文秘网

首页 > 演讲致辞 > 竞职演说 / 正文

虚拟仪器课程设计实验报告

2020-09-18 10:07:43

《微机化仪器综合设计与实践》 实验指导书 大学机电工程学院 目录 实验六 基于PID算法的可控硅水温自动调节系统设计 一、实验目的和要求 1.掌握虚拟仪器高级语言Lab VIEW 或Lab Windows/CVI 的流程图和软仪器 面板的编程设计方法,熟悉数据处理模块、信号分析模块、仪器控制模 块等各种软件模块的应用。

2.掌握数据采集硬件的低层驱动程序(C 语言/汇编语言)设计、调试及 嵌入Lab VIEW 的技术。

3.学习基于PID的比例积分微分程序编写方法。

4.了解可控硅的的温度控制特点和原理。

5.熟悉CB-68LP接线端子板各接口,利用CB-68LP端子板和PCI-6023E数据采集卡进行模拟量和数字量的转换及相关数据采集。

二、实验主要仪器设备和材料 (1)装有lab windows/CVI 软件PC 一台 (2)PC-DAQ/PCI 卡 (3)CB-68LP端子板 (4)变送器(型号 SBWZ-2460) (5)可控硅 (6)热电偶 三、实验内容和要求 1、实验内容 1)、对水温进行数据采样:先把水温加热至某个温度值(100℃左右,利用万能表测试相应引脚的输出电压,温度每下降1 摄氏度,就马上记录输出电压值。

2)、对采样数据进行处理:通过观察可知,电压与温度不成线性关系, 是一条曲线,因此,本设计采用分段直线拟合。得出电压与温度的对应 关系。

3)、用户界面设计:用Lab windows/CVI 软件进行用户界面开发,并进行 编程。具体程序见后面。

4)、进行调试:把PC 和其他设备连接好,测试程序,设置PID 参数,观 察控制效果,确立PID 参数。

5)、重新对数据采样:开始采样时,因为温度和电压值都不断发生变化, 而温度计显示变化相对于电压变化有一定的滞后,造成微机上温度显示 数值比温度计发生一定量的偏移,造成较大误差。因此,此次采样利用 刚开发的程序控制炉温恒定,观察电压变化范围,记录多个电压值,求 其平均值。但只需要对部分温度采样就可以了,因为这里采用线段拟合 成曲线,只需要线段的端点数据就可。

6)、重新调试程序,并完善用户界面。

2、程序如下:
#include <ansi_c.h> #include <easyio.h> #include <analysis.h> #include <cvirte.h> #include <userint.h> #include “PID.h“ Static int panelHandle; Static double Wave [1024]; Static double Temp [1024]; Static double A; Static double F; Static double Ph, VOL, GG; Static double AM; Static double PGAIN; Static double IGAIN; Static double DGAIN; Static double LASTERR; Static double TEMP; Static double integral, TEMPUP, PIDPWM; Static double TE=0; Static unsigned long AOtaskID; Static double ERR, FERROR, PT; PID_PWM() // PID 算法定义 {Double ERR; Double PT, 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; } Else if (integral<0.0) {Integral=0.0 ;} } DT= (ERR-LASTERR)*DGAIN; RESULT=PT+integral+DT; } Else RESULT=integral=PGAIN+IGAIN; LASTERR=ERR; Return (RESULT); } int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, “PID.uir“, PANEL)) < 0) return -1; DisplayPanel (panelHandle); GetCtrlVal(panelHandle,PANEL_HORIZONTAL,&F); //获得频率// RunUserInterface (); DiscardPanel (panelHandle); return 0; } int CVICALLBACK SetHorizontal (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) //频率响应后在PC 机上输出方波图形 { switch (event) { case EVENT_COMMIT: DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW); GetCtrlVal(panelHandle,PANEL_HORIZONTAL,&F); break; } return 0; } int CVICALLBACK ShutDown (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) //退 出程序// { switch (event) { case EVENT_COMMIT: QuitUserInterface (0); break; } return 0; } int CVICALLBACK UpDataCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) {case EVENT_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 ; else if(VOL<-0.84) TEMP=-25.00*VOL+46.00 ; else if(VOL<0.05 ) TEMP=-12.36*VOL+56.62 ; else if(VOL<0.73) TEMP=-7.35*VOL+56.37; else if (VOL<1.91) TEMP=-5.08*VOL+54.71 ; else if( VOL<2.72) TEMP=-3.7*VOL+52.07 ; else if (VOL<4.25 ) TEMP=-3.27*VOL+50.89 ; else if (VOL<6.96 ) TEMP=-2.95*VOL+49.55; else if (VOL<7.04) TEMP=-37.50*VOL+290; else if (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; } return 0; } 1、 开发出来的用户界面如下, 这里PID参数如下:
四.实验器材介绍及线路接口 1.CB-68PL端子板 实物图 接线图 接线说明:上图是CB-68LP端子板引脚图,下面是对其接线作简要说明。

AI为模拟信号输入端口,当选择单端测量方式时,接线方式就是把信号源的正端接入AI n(n=0,1,……15)、信号源的负端接入AI GND;

当选择差分测量方式时,接线方式是把信号源的正端接入AI n(n=0,1,……7)、信号源的负端接入AI n+8。

例如,单端时,通道0的正负接入端就分别是AI 0和AI GND;通道1的正负接入端就分别是AI1和AI GND; 差分时,通道0的正负接入端就分别是AI 0和AI 8;通道1的正负接入端就分别是AI 1和AI 9。

PI0.0~P0.7为8个数字信号输入通道,可以通过软件设置每个数字通道为输入或者输出,对应开关量和输入输出。

PCI-6023E有2个计数器:CTR0和CTR1,如果计数器信号只有1个,希望实现简单的计数功能,那么只需要把计数器信号接到CTR 0 SRC或者CTR 1 SRC即可。

(本实验只用到4个接口,分别是:模拟接地67,模拟输入33,数字接地,数字输出) 2.变送器(SBWZ-2460) 变送器(transmitter)是把传感器的输出信号转变为可被控制器识别的信号(或将传感器输入的非电量转换成电信号同时放大以便供远方测量和控制的信号源)的转换器。传感器和变送器一同构成自动控制的监测信号源。不同的物理量需要不同的传感器和相应的变送器。变送器的种类很多,用在工控仪表上面的变送器主要有温度变送器、压力变送器、流量变送器、电流变送器、电压变送器等等。

下图为我们此次课设所用的变送器规格及功能特点:
输出:4~20mA (可以做0-5V 0-10V ) 精度 :0.5% 电源:24VDC 温度范围:0~50℃0~100℃ 0~150℃ 0~200℃ 0~300℃ 0~400℃ 适用范围:
可以接收热电阻或各类热电偶输入,可直接安装于温度传感器接线盒内,并标出标准电压电流信号 功能特点:
变送器信号电源同为两根普通导线,节省了热电偶专用补偿导线,降低了线路干扰带来的误差。体积小巧、安装方便、精度好,抗干扰,稳定性好;
免维护外部可直接调整零点和满度。电流信号输出,传输距、远,缩短了仪表与传感器的距离,降低线路干扰带来的误差。

主要技术指标:
极限28 mA 输入范围:热电阻:Pt100 0-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 八、实验心得与体会 通过本次课程设计,我们大大感受到了团队分工合作,相互帮助,相互配合的重要性,在我们感受到团结合作的力量的同时,也让我们学到了不少知识和技能,特别是掌握了虚拟仪器高级语言Lab VIEW 或Lab Windows/CVI 的流程图和软仪器面板的编程设计方法,熟悉数据处理模块、信号分析模块、仪器控制模 块等各种软件模块的应用;
也了解了数据采集硬件的低层驱动程序(C 语言/汇编语言)设计、调试及嵌入Lab VIEW 的技术;
进一步学习掌握了基于PID的比例积分微分程序编写方法;
初步掌握了可控硅的的温度控制特点和原理,同时对CB-68LP接线端子板各接口、利用CB-68LP端子板和PCI-6023E数据采集卡进行模拟量和数字量的转换及相关数据采集更加熟悉。

总之,通过本次课程设计,对我们的知识和技能都有很大的提高,相信在以后的工作生活中会有很大的帮助,为此,感谢XX老师和各个同学细心耐心的指导和帮助,老师和同学都让我们组学到了很多知识。

九、参考文献 1. 《基于LabWindows/CVI的虚拟仪器设计与应用(第2版)》 作者 孙晓芸 2. 《LabWindows/CVI测试技术及工程应用》 作者 王建新 3. 《LabWindows/CVI虚拟仪器设计》 作者 史君成

Tags: 课程设计   实验   报告  

搜索
网站分类
标签列表