计算机控制系统实验报告 _第1页
计算机控制系统实验报告 _第2页
计算机控制系统实验报告 _第3页
计算机控制系统实验报告 _第4页
计算机控制系统实验报告 _第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实验一线制PT100温度采集测量实验(自动)1实验目的1)四线制PT100温度传感器测量原理;2)掌握ADuC单片机数据采集技术;3)学习单片机串口通讯原理;4)掌握温度的信号测试方法.2实验要求1)将四线制PT100温度传感器每秒一次的速率进行采集;2)四线制PT100温度传感器用主通道采集,并采用单极性,输入电压范围2.56V,使用外部参考电压2.5V;3)采用时间由间隔定时器TIC产生的中断控制;4)使用串口调试工具显示温度的温度值。3实验电路IIII图1四线PT100测量与温度控制电路其它说明:水泵2由ADUC834的DAC输出控制开关电源输出024V变化电压控制其流量;搅拌水泵新的

2、实验台由P0.3输出控制;4实验原理.温度控制原理温度传感器及温度计算铂电阻是用很细的铂丝(00.030.07mm)绕在云母支架上制成,是国际公认的高精度测温标准传感器。因为铂电阻在氧化性介质中,甚至高温下其物理、化学性质都非常稳定,因此它具有精度高、稳定性好、性能可靠的特点。因此铂电阻在中温(-200650C)范围内得到。它的电阻一温度关系的线性度非常好,在-200650C温度范围内线性度已经非常接近直线。在0C时其电阻为100Q,按0.385Q/C变化。Pt100是电阻式温度传感器,测温的本质其实是测量传感器的电阻,通常是将电阻的变化转换成电压或电流等模拟信号,再将模拟信号转换成数字信号,

3、再由处理器换算出相应温度。在本实验中采用一个恒流源通过四线Ptio0热电阻,通过检测Ptioo上电压的变化来换算出温度。4.1.2AD转换相关寄存器设置(详细请参考ADuC834Datasheet,P1721)ADC0CON=0 x49;主通道控制寄存器,采用外部参考电压,量程40mV,单极性输入对应零输出。(详细请参考ADuC834Datasheet,P19)ADCMODE=0 x24;/模式寄存器,ADC0使能,内部零刻度校准,内部短路自动连接到启用的ADC(s)。(详细请参考ADuC834Datasheet,P18)ADCMODE=0 x25;/内部满量校准。ICON=0 x02;电流源

4、控制寄存器,激励电流2,从4脚,即IEXC2脚输出,由用户设置为打开励磁电流源(200“A)。(详细请参考ADuC834Datasheet,P21)ADCMODE=0 x22;/主通道单个转换。ADC0L/M/H分别保存24位AD的高八位/中八位/低八位,即得到十六进制TEMP。(详细请参考ADuC834Datasheet,P20)。则采样AD值为TEMP=ADC0H*0 x10000+ADC0M*0 x100+ADC0L,在计算时需要将其转换为十进制数据,由于温度采集的量为40mV,因此其对应的电压:TEMP16777215x40mV则温度对应的电阻:R广V,其中I为恒流源电流(根据实际测量

5、值代入),PT100温度传感器0C对于的电阻为100Q,而每度对应的电阻变化0.385Q*,因此对应的温度可按:T=(R厂100)-0.385当然温度的采集会因传感器的不同而有所偏差,因此在正式使用温度传感器前,需要对传感器进行标定。SF=0 xff;数字滤波器寄存器,/SF=0 xff,即fade为5.35Hz,tadc为186.77ms。(详细请参考ADuC834Datasheet,P21)4.1.3时间间隔定时器相关寄存器设置(详细请参考ADuC834Datasheet,P4041)TIMECON=0 x13;使能TIC,设单位为1秒,自动装入初值。INTVAL=0 x01;在测量中使用

6、时间间隔TIC,时间为1*1s=1s。4.1.4串口通讯原理及相关寄存器设置(详细请参考ADuC834Datasheet,P39、P5355、P52)PLLCON=OxOO;PLL控制寄存器,设置时钟频率为12.582912MHzP39RCAP2H=0 xff;当TH2和TL2分别等于RCAP2H和RCAP2L中的值的时候,计数器下溢(定时器T2中的两个寄存器)/RCAP2L=0 xD7;定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中/TH2=0 xff;配置UART的波特率为9600TL2=0 xD7;SC0N=0 x50;模式1(10位数据接

7、发收),8位UART,激活串行接收T2CON=0 x34;#34H是串口常用的设置值,16位自动加载方式,MODE1、3方式接收、传输频率信号/P524.1.5中断相关寄存器设置(详细请参考ADuC834Datasheet,P57)IEIP2=0 x04;开启TIC中断/IP=0 x10;/串口中断优先/ES=1;/允许串口中断/EA=1;/激活全局中断/4.2水泵控制4.2.1控制原理在水泵控制电路中,ADuC单片机通过其DAC脚输出05V,并间接控制可调开关电源024V直流电压输出,实现水泵1功率和流量的控制。在ADuC834单片机中,通过设置DAC专用寄存器的值输出控制。DAC为12位的

8、寄存器,当DACH=0 x0F,DACL=0 xFF时,整个控制周期都为高电平,即水泵的控制电压为24V;当DACH=0 x00,DACL=0 x00时,整个控制周期都为低电平,水泵的控制电压为0V;当DACH=0 x07,DACL=0 xFF时,为50%高电平,水泵控制电压为12V。4.2.2该部分涉及ADUC834单片机主要专用寄存器:详细请参考ADuC834Datasheet,P34)DACCON=0 x07;使用P1.2脚输出,12位输出,输出范围5V,开启DA/DACH/LDACL/存放12数据,高4位放在DACH的低4位注意:本实验组态软件的PID控制Uk作为输出值为电机电压,其输

9、出为024V,但在组态王输出值范围设置为mV单位,因此最大值为24000,最小值为0。在单片机中24000mV要按比例变为4096,因此其PWM值为DAT0,1=(4096/24000)*Vp其中Vp为组态王控制输出值(即Uk)。DACH=P2H;DACL=P2L;注意在12位模式中,DAC电压输出在DACL数据寄存器被写入后就被校正;所以,DAC数据寄存器应先写DACH,再写DACL。4.2.3循环水泵的控制该实验循环水泵直接由P2.0口通过光耦继电器U19,驱动场效应管Q7控制水泵开关,如图1所示。当P2.0输出低电平时,光耦继电器U19闭合,场效应管Q7接通水泵电机的低电平,水泵打水;反

10、正,水泵停止。4.3.加热器控制4.3.1加热器原理固态继电器(简写为SSR)是一种四端有源器件,下图为固态继电器的结构和使用方法。输入输出之间采用光电耦合器进行隔离。过零检测电路可使交流电压变化到零状态附近时让电路接通,从而减少干扰。电路接通以后,由触发电路给出晶闸管器件的触发信号。+控制信号零触发电路吸收电路交流电源图3固态继电器结构和使用方法在加热控制电路中,采用交流电压220V,电流3A加热管,单片机通过PWM信号,控制S208ZB固态继电器的通断,从而实现加热的需求。其控制电路如图8所示。电网电压波形220V50HZ图4加热控制电路图PWM波t负载上的波形yT=1000msT=100

11、0mstt图5PWM控制原理图在控制电路中,采用PWM波配合固态继电器实现加热控制。PWM(PulseWidthModulation)即脉宽调制。它是利用数字电路产生的方波,通过控制其输出的占空比,对模拟电路进行控制的有效控制技术,广泛应用于测量、通讯、功率控制等许多领域。在功率控制中常与固态继电器联合使用,通过控制算法,改变PWM波的占空比来实现对加热器等设备的功率控制,从而达到系统的目标控制。具体控制流程如下:PWM输出频率为32.768KHz/PWMl,取PWM1为32768,则控制周期为1000ms。根据单片机的数据手册,当PWM0取18384时,则高电平时间为500ms,因此,一个控

12、制周期内(1s,共输出100个半波)交流电实际输出为50个半波,占1/2,因此加热管最小输出功率为:660W*1/2330W。如图9所示。若PWM0取984,即3个半波,则加热管的最小输出功率为660W*3/1001.98W。4.3.2涉及ADuC834单片机专用寄存器(详细请参考ADuC834Datasheet,P3637)PWMCON=Ox11;/方式1:单可变分辨率PWM,不分频,PWMCounter=PWMClock=32.768kHz。PWM0L=DAT0;在方式1:PWM0H/L控制高电平时间。PWM0H=DAT1注意:本实验组态软件的固态继电器控制是根据功率百分比来控制的,也就是

13、全功率为100%,控范围为0-100%的范围。所以在单片机中也需要按一定的比例进行转换:DAT0,1=327.68*P%其中P为组态王固态继电器输出值。PWM1L=0 x00;/在方式1:PWM1H/L控制周期,为1秒。PWM1H=0 x80;注意:PWM赋值必须为先PWM0/1L后PWM0/1H。运用PWM寄存器,应首先写PWMCON来选择PWM操作模式和PWM输出时钟。写PWMCON同时也复位PWM的计数器。在任何16位操作模式(模式1,3,4,6),用户操作PWM寄存器时应先写PWM0L后写PWM1L。通过一个隐藏的SFR来写入值。写PWM0H和PWM1H时更新PWMxH和PWMxLSF

14、Rs,但是直到结束PWM循环程序才改变输出。这些写入16位寄存器的值会用在下一个PWM周期。4.4.电磁进水阀控制4.4.1电动阀的控制原理通电时,电磁线圈产生电磁力把关闭件从阀座上提起,阀门打开;断电时,电磁力消失,弹簧把关闭件压在阀座上,阀门关闭。电磁阀控制主要利用单片机I2C的接口将数据以串行方式发给74HC595移位寄存器,再有74HC595并行输出给ULN2803方向放大控制输出。自动台的进水阀同一时间必须保证一个进水阀开启,其它电动进水阀是关闭的。4.4.2涉及ADuC834单片机专用寄存器(I2CC0N,详细请参考ADuC834Datasheet,P46)4.5.电动球阀的控制原

15、理4.5.1电动球阀工作原理在实验中放水是用电动阀来控制的。在本实验装置中的电动阀采用了24V直流控制的XHL系列电动阀门。其控制电路如图6所示。图6XHL系列电动阀门控制电路电动阀控制线共有四根线,红与黄各两根,红色用于电机的通断控制,电动阀2的开断由ADuC834的P2.5口通过光耦继电器U12控制;两根黄线用于控制阀门开口度方向,由ADuC834的P2.6口控制通过光耦继电器U13进行控制。当P2.6低电平时,光耦继电器闭合,则阀门内部电机正转,开口度变大,直到到最大之后自动停止,并到保持最大开口度,同时红色指示灯亮起;反之,当P2.6高电平时,光耦继电器断开,则阀门内部电机反转,开口度

16、变小,直到到关闭自动停止,同时绿色指示灯亮起。当电动阀转动过程中,切断电源,则可以实现电动阀一定的开度设置。经过精确计算,电动阀从全开到全关或从全关到全开用时均为10s左右,即1s的开度或关度为10%。为此本电动阀控制就可以利用ADuC834内部的Time1定时器实现开口度的控制。如果需要控制电动阀20%的开口度,那么需要定时2s,根据该方法可以精确控制电动阀0100%之间开度的控制了。452涉及ADuC834单片机专用寄存器:(详细请参考ADuC834Datasheet,P4849)ADuC834单片机的Time1与51系列单片机的完全一样,主要专用寄存器:TMOD=0 x15;/T1为定时

17、器工作于方式1,16位定时器;这里T0设置为16位计数器,用于其它功能。TH1=(65536-50000)/256;定时器初值寄存器TL1=(65536-50000)%256T1一次定时50ms,作为基本定时时间,通过多少定时中断,控制时间50ms*num,因此只要控制num值即可控制开口度的大小,num的范围为0200,即可以控制010sTCON定时器控制寄存器,用于启动定时器、中断和溢出标记以及中断触发信号类型等。5.实验步骤5.1设备连接与检查将计算机控制技术实验台水槽中灌满水(至溢出口的下沿)。连接RS232串口线,将串口选择开关拨向使用的RS232串口类型的方向。连接电源线,将电源插

18、头接到220V电源上。打开电源,电源指示灯亮。使用万用表检查5V,24V,220V电源是否正常。5.2实验操作注意:正常情况下,采集控制器程序已安装。可以跳过(1)、(2),直接进行(3)。若未下载,则需要重新下载程序:按继续进行(1)、(2)。短接下载口Download,编写通讯程序,改变通讯波特率等,使用串口调试助手查看实验效果。打开桌面上WSD的下载软件,在Configuration选择串口的Port,然后点击0K,次选择Reset,Download,打开实验一四线制PT100温度采集控制程序(自动)找到要烧写的Hex文件test.hex。烧写完成后选择Run,程序开始运行,当下次试验台

19、关机重启时,可以直接拔掉Download短接线,程序会自动执行。用万用表测量+24V和24VGND,AVDD和AGND,DVDD和DGND以及参考源REF+和AGND之间的电压,将上述数据记录在表1中,见附录1;将左上方的恒流源开关拨向OFF,将电压红表笔插到mA插孔中,测量出从IEXC2引脚输出恒流源的实际大小值,将上述数据记录在表1中,见附录1;用串口调试工具向单片机发送4051命令,开启电磁阀3。用串口调试工具向单片机发送4011命令,会自动启动水泵2,当水泵2水位达到150mm左右的高度时,发送4010命令关闭水泵2。接着发送4031启动搅拌泵。(7)将左上方的恒流源开关拨向OFF,用

20、万用表的电阻档测量PT100的电阻值;(8)将左上方的恒流源开关拨向ON,将从IEXC2引脚输出恒流源到PT100,测量电阻两端电压;(9)使恒流源开关处于ON的状态,在串口调试工具中向单片机发送4033命令,读出AD转换值(注意拔下万用表探针);(10)将上述数据记录在表1中,见附录1;(11)在串口调试工具中向单片机发送4021命令,打开加热器,1分钟后再向单片机发送4020命令,关闭加热器;(12)重复(7)(11)共7次;(13)完成实验时,发送4030关闭搅拌机,再发送4020命令进一步保证关闭加热器;(14)最后发送4010指令来关闭水泵,发送4041来打开电动球阀2来放水,放水完

21、成后可以选择发送4040关闭电动阀,在实验一开机我们总是把电动球阀关闭掉的。(15)完成表1的填写。说明:串口调试工具向单片机发送4011等指令时,应该选择16进制发送。接收也要选择16进制显示。为了便于了解是否正确发送,单片机会回发相同的指令到串口调试工具如4011,只有4033是特例,单片机会回发AD采样值;由于(7)(9)操作本身就有时间差等因素,测量相应地会引入了人为误差。5.3实验计算根据上述表格1,对实验数据进行如下计算、分析、比较:(1)根据上述表格1中的PT100电阻两端实际电阻值,PT100特性推算出温度值1;(2)根据上述表格1中的恒流源IEXC2电流(|1A)和PT100

22、电阻两端电压,计算出PT100电阻值,计算出PT100温度值2;(3)根据AD采样值计算出相应的电压,再按(2)计算出PT100温度值3(4)用Excel画出温度值1、温度值2、温度值3;(5)对3个温度进行比较和分析。表1信号采集测量记录表 实验记录内容24V和24VGND两端电压(V)AVDD和AGND两端电压(V)DVDD和DGND两端电压(V)REF+和AGND两端电压(V)恒流源IEXC2电流(|1A)加热时间PT100两端电阻(Q)PT100电阻两端电压(mV)PT100AD采样值传感器换算温度(温度值)电压换算温度(温度值?)Pt100换算温度(温度3)24.124.124.12

23、4.124.2.42041min112.422.3913C6F32.2124.1929.162.42.42.42.4204204204201min1min1min1m114.2115.4116.611722.823.223.423.936F1195724A9703AA97E36.6230.5633.6140.0043.1145.435.6438.2039.437.5640.7442.4注:水箱2的液位高度均为150mm;传感器换算温度(温度值1)=(当前Pt100电阻-100Q)/0.385;电压换算温度(温度值2)=(PT100电阻两端电压/恒流源IEXC2电流-100)/0.385;Pt1

24、00换算温度(温度3)计算:AD采样电压=TEMP(转化为十进制值)*40mV/16777215,再根据实测恒流源电流值算出电阻,再减实际温度3。 实验二单水箱液位控制实验(自动)1实验目的1)了解水泵控制及液位测量原理;2)了解单水箱一阶液位控制系统的工作原理;3)掌握PID控制算法编程及其控制参数的调整方法;4)了解Matlab的M文件编写方法和利用Matlab制作相应的dll文件,掌握C#-Matlab混合编程技术;5)学习三容水箱计算机控制实验台控制软件的使用方法。2实验要求1)利用三容水箱计算机控制实验台自带控制软件,完成单水箱一阶液位PID控制参数的调整,达到控制最优效果;2)利用

25、Matlab编写PID控制算法,实现单水箱液位控制。3系统结构框图电动阀1Kea电动球阀1+图1单水箱一阶液位控制结构图4实验原理水泵2和电动球阀1是控制水箱液位的主要控制器。水泵2控制进水口的流量,作为入水口的控制,通过电压的改变控制其出水流量;电动球阀1作为放水口控制出水口的流量;电动阀1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动球阀1开口度不变,通过改变水泵2的电压实现液位控制。4.1电路原理图2单水箱液位采集与控制电路4.1.1控制原理在水泵控制电路中,ADuC834单片机通过其DAC脚输出05V,并间接控制可调开关电源024V直流电压输出,实现水泵2功率和流量的控制。

26、在ADuC834单片机中,通过设置DAC专用寄存器的值输出控制。DAC为12位的寄存器,当DACH=0 x0F,DACL=0 xFF时,整个控制周期都为高电平,即水泵的控制电压为24V;当DACH=0 x00,DACL=0 x00时,整个控制周期都为低电平,水泵的控制电压为0V;当DACH=0 x07,DACL=0 xFF时,为50%高电平,水泵控制电压为12V。4.1.2该部分涉及ADuC834单片机主要专用寄存器(详细请参考ADuC834Datasheet,P34)DACCON=0 x07;使用P1.2脚输出,12位输出,输出范围5V,开启DA/DACH/LDACL存放12数据,高4位放在

27、DACH的低4位注意:本实验的PID控制Uk作为输出值为电机电压,其输出为024V,但在C#中输出值范围设置为mV单位,因此最大值为24000,最小值为0。在单片机中24000mV要按比例变为4096,因此其DAC值为DAT0,1=(4096/24000)*Uk其中Uk为上位机控制输出值。DACH=P2H;DACL=P2L;注意在12位模式中,DAC电压输出在DACL数据寄存器被写入后就被校正;所以,DAC数据寄存器应先写DACH,再写DACL。4.2.压力传感器及液位换算4.2.1液位传感器介绍MPXV5004G是一种先进的单片硅压力传感器。被测介质的压力直接作用于传感器的膜片上,使膜片产生

28、与截止压力成正比的微位移,使传感器的电阻值发生变化,并用电路检测这一变化,转换输出一个对应于这一压力的标准测量信号。MPXV5004G内部除传感单元外,还包含信号调理器、温度补偿器和压力修正电路,特别适用于由单片机构成的检测系统。其芯片电路示意框图如图所示。图3压力传感器电路示意框图MPXV5004G压力传感器采用额定5V供电电压,最大测量压差为3.92kPa(即400mmH2O),最大耐受压力为16kPa,温度补偿范围为-。在工作温度为,该压力传感器具有良好的线性输出关系,如式(1)所示:V二(9.8H+1000)土75mV心、OUT(1)其中,VOUT输出电压,yS为工作电压(即电源电压)

29、,H为液位高度值mm,最大误差为75mV。由物理常识易得,随着液位的上升,容器底部受到的压力相应增大。压力传感器采集到的模拟信号通过AD“C834中的AIN3单端输入进行16位高精度AD转换成数字信号。4.2.2涉及专用寄存器ADClCON=Ox48;辅助通道控制寄存器,AIN3作为单端输入,采用外部参考电压,单极性输入对应零输出(详细请参考ADuC834Datasheet19)ADCMODE=Ox14;模式寄存器,ADC1使能,内部零刻度校准,内部短路自动连接到启用的ADC(s)(详细请参考ADuC834Datasheet,P18)ADCMODE=0 x15;/内部满量校准(同上)ADCMO

30、DE=0 x12;/辅助通道单个转换(同上)ADC1H/1L:分别保存16位AD的高八位和低八位,则采样AD值为:Press=ADC1H*256+ADC1L。其它专用寄存器设置,可参考实验一的相关部分具体设置根据式(1)、图2电路测量电路以及AD关系,可以算出液位高度与AD转换值有如下关系TOC o 1-5 h za(9.8H+1000)2162)=X22500即:H=0.007785*AD-102(3)但由于存在系统误差,通常直接根据线性标定的方法进行标定。任选择2个具有代表意义的2个液位,如由H1=20mm和H1=120mm液位高度,读取对应的AD1和AD2采样值,则有如下关系:H1=k*

31、AD1+b(4)H2=k*AD2+b(5)将具体值代入,即可得到实际的k和b,因此,实际液位高度H与AD值可以按下式(5)进行计算:H=k*AD-b(6)其中,H为实际液位高,AD为实际液位高度的AD采样值。其k为标定后的放大系统,b为标定后的偏移值。实际上本实验系统有自动标定功能,其操作步骤见4.2.3。4.2.3液位软件自动标定操作在主界面菜单栏中选择“设置”-“液位标定”,出现图4所示标定界面,标定对象选择“液位1标定,标定公式会出现y=klx+bl,点击“开始打水按钮,在液位高度为20左右时点“停止打水”(开始打水会变为停止打水键),读出水箱1液位高度并填写到液位高度1的输入框中,点击

32、“获取AD1采样值。然后再次点“开始打水,在液位高度为120左右时点“停止打水(开始打水会变为停止打水键),读出水箱1液位高度并填写到液位高度2的输入框中,点击“获取AD2”采样值。然后点击“标定结果”可以看到标定结果框中会计算出标定公式,至此标定工作完成。然后再点击“开始打水按钮在液位高度为140左右时点“停止打水”(开始打水会变为停止打水键),读出水箱1液位高度并填写到液位高度1的输入框中,再点击“验证”,在标定验证中可以看到通过该标定公式换算出的当前液位高度,可以与水箱1中的实际液位进行比较,如果标定正确,则两者值接近。最后点击“保存”,将标定结果存储在数据库中,点图4液位自动标定界面4

33、.3电动阀控制4.3.1电动阀工作原理在实验中的液位控制是在动态状态下工作的,即一边用水泵打水,同时电动阀又在放水。在本实验装置中的电动阀采用了24V直流控制的XHL系列电动阀门。其控制电路如图5所示。黄羸控制电貉图5XHL系列电动阀门控制电路电动阀控制线共有四根线,红与黄各两根,红色用于电机的通断控制,电动阀1的开断由ADuC834的P0.1口通过光耦继电器U10控制;两根黄线用于控制阀门开口度方向,由ADuC834的P0.0口控制通过光耦继电器U11进行控制。当P0.0低电平时,光耦继电器闭合,则阀门内部电机正转,开口度变大,直到到最大之后自动停止,并到保持最大开口度,同时红色指示灯亮起;

34、反之,当P0.0高电平时,光耦继电器断开,则阀门内部电机反转,开口度变小,直到到关闭自动停止,同时绿色指示灯亮起。当电动阀转动过程中,切断电源,则可以实现电动阀一定的开度设置。经过精确计算,电动阀从全开到全关或从全关到全开用时均为10s左右,即1s的开度或关度为10%。为此本电动阀控制就可以利用ADuC834内部的Time1定时器实现开口度的控制。如果需要控制电动阀20%的开口度,那么需要定时2s,根据该方法可以精确控制电动阀0100%之间开度的控制了。5.实验步骤实验设备三容水箱计算机控制实验台、万用表、计算机、RS232/RS485串口线,电源线、Matalb软件和三容水箱计算机控制软件。

35、设备连接与检查(1)将计算机控制技术实验台的水槽中灌满水(至溢出口的下沿)。(2)连接RS232/RS485串口线,将串口选择开关拨向使用的串口类型的方向。(3)连接电源线,将电源插头接到220V电源上。(4)打开电源,电源指示灯亮。(5)使用万用表检查5V,24V,220V电源是否正常。5.3操作步骤5.3.1直接利用控制软件进行PID控制(1)打开计算机控制技术系统软件tanks桌面应用程序。如图6所示。用户名请输入自己的姓名(请不要输入中文,可以输入如zhangqiang0914),将存储在数据库中,用于历史查询。图6系统登陆图(2)进入系统主界面,单击工具栏的“新建”或菜单栏的“系统”

36、的“新建实验”。图7主界面3)进入实验选择窗口,选择“单回路简单控制实验”,以一阶液位控制实验为例,进入实验设置窗口,选择“一阶液位控制实验”,如果需要进行混合编程请在右上角的“是否选择混合汇编”上打勾(注意:第一次实验将不选择混合编程,因此不要选勾!);实验信息框中提示实验的内容,实验信息会提示你是否支持混合编程,如果没有提示支持混合编程请不要在“是否选择混合汇编”上打勾,即便打勾之后程序不会调用你自己写的程序,窗口中还给出了实验的原理框图。图8实验选择(4)单击“下一步”,进入实验设置窗口,输入液位目标值及球阀开口度的初始值,在算法选择框中选择“普通PID控制算法”。图9参数设置5)单击“

37、确定”,完成实验设置,在弹出的实验提示窗口中,按照提示的步骤完成相应的操作进入下一步,勾选已完成上述选择,再点击确定按钮,。图10实验说明(6)进入实验主界面后,在右下角的PID设置窗口中,用凑试法选择Kp、Ki、Kd(Kp推荐值在1000左右,Ki在10左右,实验过程中不能改变PID的参数值)然后点击“开始“按钮,实验开始。如下图所示。单回路简单控制一阶液位PID蔘数设置图11PID设置(7)在单击“开始”按钮或者菜单栏“操作”的“开始实验”进行实验后,观察实验现象并记录数据,运行一段时间后单击“暂停”实验按钮,然后单击“查询”进入查询项记录数据并填入表格。用户也可保存曲线并导出数据到Exc

38、el,通过Excel查看采集到的数据。(8)当水箱里的水放完后,最后单击“停止”按钮,电动球阀关闭后,然后进入“新建”并重复上述实验步骤,以找出最佳PID控制参量。打历砂I -3ESW-P誉EESSAOia朋I】.播禺卄tfliii障里一曲濾趙Ji贅单一驚遽骨魁单一修锻柱fiWn5.3.2利用Matlab-PID混合编程进行液位控制.1)C#-matlab混合编程原理利用Matlab软件,自行编写算法,生成相应的dll文件,上位机(C#编写)调用dll文件实现相应的控制策略(整个过程可以理解为Matlab生成的dll相当于一个函数,上位机调用该函数并获得该函数的返回值。)类C_Matlab_M

39、ixed_Compilation中包含的具体方法(函数)如下EasyFlowPID(简单流量PID)、EasyOnePID(简单一阶液位PID)、EasyTwoPID(简单二阶液位PID)、EasyTempPID(简单温度PID)、CompOnePID(复杂一阶液位PID)、CompTwoPID(复杂二阶液位PID)、CascadeOnePID(一阶串级液位PID)、CascadeTwoPID(二阶串级液位PID)、Feedfor_backOnePID(前馈-反馈液位PID)、Example(示例编程PID)。以EasyOnePID.m文件存储的是混合编程示例程序,其它的文件只有函数入口,剩下

40、的程序需要同学们根据不同的实验自行编写算法。样例程序说明如下:%函数入口 Functionresult=EasyOnePID(Set_High1,Actual_High1,i)%此处result是该函数的输出参数;EasyOnePID是函数名;Set_High1,Actual_High1,i是3个输入参数。%Set_High1是上位机设定的被控对象液位高度1的值;Actual_High1是上位机采集到的实际液位高度的值;i为标记参数,第一次调用该函数时i=0,即对你所要用到的全局变量e、u的初始化,第二次及以后的调用时i均为1,保证初始化变量只进行一次,第二次调用时e、u等全局变量能保持上一次

41、的值。Kp=1000;%推荐1000左右Ki=10;%推荐10左右Kd=O;%推荐10左右globaleglobaluif(i=0)e=000;u=0,0;Ende(3)=e(2);e(2)=e(1);e(1)=Set_High1-Actual_High1;u(2)=u(1)+Kp*(e(1)-e(2)+Ki*e(1)+Kd*(e(1)-2*e(2)+e(3);result=u(2);u(1)=u(2);end算法返回值赋给输出参数result,最终传递给上位机然后通过串口对硬件电路板的DAC进行控制。这里的result就是在上面实验原理介绍的DACH/L值(由于该值是16位的,又由于前面所述

42、比例换算关系,uk最后发给单片机的控制量在024000之间,若计算值超过该范围由上位机程序对其进行限定)。为了节约时间和提高Kp、Ki、Kd等PID参数的设定,在做混合编程之前应该利用三容水箱计算机控制软件先进行相关参数的调试,然后就可以直接利用相关PID参数代入到混合编程之中。2)Matlab中dll文件的制作打开Matlab,在CommandWindows窗口中输入deploytool,弹出如图12所示对话框;Jiatijuii.f,olrn?X*kumrin4htDeHhnieniTwlTdaSsttilsCd#wiy咸ItefoiiwiES:CficfcUliIbu!DirplEnii

43、nlFtD|KlicanDnLheCvplDnml1Cfckihi瞪輛11:切松mtriRra.i?c4kmi巾apenanewHnsCfiitthiHrijkon.*uItwlwtba:VsptifflwIwTTTgp|Ixjirrbnnihcpcla畑图12Matlab界面1在DeploumentTool中单击第二个按钮吕打开一个已经创建好的工程,如图13所示(工程的路径为:桌面混合编程)图13Matlab界面2打开工程后如图14所示,其中工程名为PIDcom.prj,包含一个名为C_Matlab_Mixed_Compilation的类,类中包含Example、EasyOnePID等方法(

44、函数)。其中Example为示例编程,其包含了一个完整的PID编程算法及详细的文字介绍,其m文件Example.m为只读文件,请不要随意对其操作。Jkr比MLki?耳IXTLAHT.-0诅2皿砧JL3UltIifiJiEnrjiiElIMtegfiEfcirisJw片叱1口|“|冲4吋團蹩|OmriEdHlJJtzi11:iBfcata与n.raw.LMEJJrtMfteuLs-dHfitoMi創trtfsfcJIlLn:.尹11HI:.axgLId?ploytiJDl1KJ.niaTIELk,hi如FILL-JDiba-tilesfJlClKiriilWni.B鼻CSKbdsTWcFID.H

45、?jGsifiDnem*|Ch-bTEHFqkABstJisdcEoLsFIlLTInxyfrslTD.sflGjrtggjifeVrliBKi!CrainsiMitin辭.图14Matlab界面3在做一阶液位混合编程时,需要自己在Matlab中的EasyOnePID.m文件中完成相应函数的编写。在方法“EasyOnePID”完成书写后,如图15所示。II.JE*flfriT|irTwiTiffl畀Hi呻一dGhwm*CurpsJE二C.MvUb.Mdd_CariTJTpSX-TiyE平-l叭咖点jhanpUjEATwH.htjHlOtWT翔江玄皑?Iflfl-3JP+LJ;I*土鶴Lncui

46、rIE】:u_HiBhlii1ftKbi刖計.WK1D.2*NtLliEDI*Up;vrdILlSrt_fti|hl=谄LtQfl-1a+ifl-it*11HIHll*4Ei皿-出I曲+*41.d.ik-IJ-nlh1.图15在EasyOnePID中完成算法书写在图15中,点击匸按钮对算法进行编译,请等待Matlab的编译过程,如无错误编译结果见图16所示,如有红色字体提示错误,请修改后重新编译。将编译生成的“桌面混合编程PIDcomdistribPIDcom.dll和PIDcom.ctf”,复制到D:计算机控制技术实验教学平台三容水箱tanksbinDebug,并替换原来的PIDcom.dl

47、l和PIDcom.ctf即可(如果没有PIDcom.ctf文件可以只替换PIDcom.dll文件)。DepJayTrientTDDlOutputBuildnutpuK2O13-0W717:021.mcc-F匕81冷可叭|131片白11西畑|:第酒士科沪心:口厂|prfCanalervstsloili雯El(EIZGDBb.)e&ecTNdDUceciPLDe口匚_iLffiLa_iM-sl_CaiiCFLLisLDr.1,D.d.匸史工仙方亡-d1iy3ezaXLaaLLi,kDesfctasii=a3PIDs口-rpLixJcifzaceaaLDQCsFzogz-saFllesHATLAEI

48、LZOQ-SdVT-口口Lbujclmat丄bIXjdgueccPiaceaai口口inclusiefilea.2iteir.|addtd.Pws吕日.日qlrgcarleaiDscallLwlcnMCSIh4C.lrCzeared3Bfc匚hitecrj.2-isgj.zivalLdaclDHalELlestMdilMay2717eD:i-352Q13-|ICampildtiDTicompletedeL*aflnr.r.-nrazTiUSTRnXPLnTXrjnmnn1rHl.TcjbshTrrej1rXTI图16matlab中编译结果3)混合编程实验(1)重复531实验方法中的(1)(8)

49、。但要注意在(3)步骤中请在右上角的“是否选择混合汇编”上打勾!(2)若不控制效果不佳,则修改Matlab-PID控制算法中的Kp、Ki、Kd,再重复本实验(1)(2)步骤。6实验记录和分析(1)记录每次实验的Kp、Ki、Kd和控制效果,并进行分析;2)通过混合编程参数整定、算法编写,得到较满意的液位控制曲线。3)记录自己编写的.m文件的程序。60CBn=-畏-am-EE-昌.一憔102E9100010Q抿时冏药询罚也年:冃cB-砸户时同轴r*taoisw碑一事殖融口皿ISdAlL|擱号单目略并觀设pwdFHKp:肝二静差大,震荡大畑人黄J耳旺开fftih曙方式o抿1勺间辰询旳府疝阳日鲫审畜悔

50、怡果用户时阿奏雉lattaciL|躍aa言口31用口口唏号SiSlP.F】D誉計11ThesT单吕Zt虽毎溟减下Ki,和适当的增加Kd使系统更稳定。7注意事项(1)实验前将水箱中的水清空。(2)使用前请自行备份“混合编程”文件夹,不要随意更改文件夹中的内容,自己编程需要的的.m文件可以自行保留,完成实验后请从实验前备份的“混合编程”文件夹替换掉用过的“混合编程”文件夹。(3)用户如果发现除了Example.m之外,其它文件中除了函数入口部分外有其它内容,请将备份的“混合编程”文件夹替换桌面上的文件夹。(4)正常情况下,采集控制器程序已安装,若未下载,则需要重新下载程序:短接下载口Downloa

51、d,下载计算机控制实验MODBUSRTU协议单片机程序V4(自动)。实验三基于组态王的液位PID控制实验(水泵控制)(自动)(1)实验目的1)了解单水箱一阶液位控制系统的工作原理;2)掌握组态王软件的使用方法3)了解水泵控制及液位测量原理;4)了解组态王软件与基于单片机的采集控制器通讯协议;5)掌握组态王编程和PID控制算法编写;(2)实验要求1)用组态王软件完成单水箱一阶液位控制系统;2)利用组态王编写PID控制算法,实现基于水泵控制的单水箱液位控制。系统结构框图进水阀1图1单水箱一阶液位控制结构图实验原理水泵2和电动球阀1是控制水箱液位的主要控制器。水泵2控制进水口的流量,作为入水口的控制

52、,通过电压的改变控制其出水流量;电动阀1作为放水口控制出水口的流量;进水阀1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动阀1开口度不变(但初始开口度可调),通过改变水泵2的电压实现液位控制。4.2电路原理图2单水箱液位采集与控制电路4.1.1控制原理在水泵控制电路中,ADuC单片机通过其DAC脚输出05V,并间接控制可调开关电源024V直流电压输出,实现水泵2功率和流量的控制。在ADuC834单片机中,通过设置DAC专用寄存器的值输出控制。DAC为12位的寄存器,当DACH=0 x0F,DACL=0 xFF时,整个控制周期都为高电平,即水泵的控制电压为24V;当DACH=0 x0

53、0,DACL=0 x00时,整个控制周期都为低电平,水泵的控制电压为0V;当DACH=0 x07,DACL=0 xFF时,为50%高电平,水泵控制电压为12V。4.1.2该部分涉及ADuC834单片机主要专用寄存器(详细请参考ADuC834Datasheet,P34)DACCON=0 x07;使用P1.2脚输出,12位输出,输出范围5V,开启DA/DACH/LDACL/存放12数据,高4位放在DACH的低4位注意:本实验组态软件的PID控制Uk作为输出值为电机电压,其输出为024V,但在组态王输出值范围设置为mV单位,因此最大值为24000,最小值为0。在单片机中24000mV要按比例变为40

54、96,因此其DAC值为DAT0,1=(4096/24000)*Vp其中Vp为组态王控制输出值(即Uk)。DACH=P2H;DACL=P2L;注意在12位模式中,DAC电压输出在DACL数据寄存器被写入后就被校正;所以,DAC数据寄存器应先写DACH,再写DACL。4.1.3组态王中的DAC参数设置图3水泵电压设置4.2.压力传感器及液位换算4.2.1液位传感器介绍MPXV5004G是一种先进的单片硅压力传感器。被测介质的压力直接作用于传感器的膜片上,使膜片产生与截止压力成正比的微位移,使传感器的电阻值发生变化,并用电路检测这一变化,转换输出一个对应于这一压力的标准测量信号。MPXV5004G内

55、部除传感单元外,还包含信号调理器、温度补偿器和压力修正电路,特别适用于由单片机构成的检测系统。其芯片电路示意框图如图4所示。Vs图4压力传感器电路示意框图MPXV5004G压力传感器采用额定5V供电电压,最大测量压差为3.92kPa(即400mmH20),最大耐受压力为16kPa,温度补偿范围为-。在工作温度为,该压力传感器具有良好的线性输出关系,如式(1)所示:V二(9.8H+1000)土75mV门、OUT(1)其中,VouT为输出电压,H为液位高度值mm,最大误差为75mV。实际液位高度值H也是组态王采集的数据值,为了取保水位不会溢出,建议最大值设置为300mm,因此在组态王液位高度值设定

56、范围:因此最大值为300,最小值为0。由物理常识易得,随着液位的上升,容器底部受到的压力相应增大。压力传感器采集到的模拟信号通过AD“C834中的AIN3单端输入进行16位高精度AD转换成数字信号。根据式(1)、图1电路测量电路以及AD关系,可以算出液位高度H与AD转换值有如下关系TOC o 1-5 h za(9.8H+1000)2162)A_J=X22500即:AD=129.45*H+13107(3)根据公式(3)便可得出液位传感器液位高度与AD的对应关系为H=AD/129.45-102.041。(4)4.2.2涉及ADuC834单片机专用寄存器(详细请参考ADuC834Datasheet,

57、P1721)ADC1CON=0 x48;辅助通道控制寄存器,AIN3作为单端输入,采用外部参考电压,单极性输入对应零输出(详细请参考ADuC834Datasheet,P19)ADCMODE=Oxl4;模式寄存器,ADC1使能,内部零刻度校准,内部短路自动连接到启用的ADC(s)(详细请参考ADuC834Datasheet,P18)ADCMODE=0 x15;/内部满量校准(同上)ADCMODE=0 x12;/辅助通道单个转换(同上)ADC1H/1L:分别保存16位AD的高八位和低八位,则采样AD值为:Press=ADC1H*256+ADC1L。其它专用寄存器设置,可参考实验一的相关部分具体设置

58、组态王中的液位标定在组态王中,液位标定是直接在变量定义中完成。在组态王界面中最小值,最大值分别设定为液位的实用范围值,最小原始值,最大原始值的设定需要根据最小最大值的液位采样值来设定,如图5。图5组态王中液位高度H变量定义和标定界面4.2.4液位釆样值He的获取定义I/O实数变量的液位高度H时,需填写最小原始值和最大原始值。可通过串口调试工具发送命令获取。(1)在水箱液位高度为0mm时发送“010300000001840A”命令,获得返回数据“010302CRC校验码”,其中第4-5位为液位采集值(HEX型),再将该液位采样值转化得到的十进制采样值填入最小原始值中;(2)进行打水,首先将进水阀

59、1打开,在串口调试工具中输入“0105001000010DCF”,其次在串口调试工具中输入“010600652ee085fd”,使水泵开始打水。当液位到300mm高度左右时在串口调试工具中输入“01060065000099D5”关闭水泵,发送数据“010300000001840A”,读取液位值,将转化得到的十进制采样值填入最大原始值中,并将液位实际值填入最大值中。4.3电动阀控制4.3.1电动阀工作原理在实验中的液位控制是在动态状态下工作的,即一边用水泵打水,同时电动阀又在放水。在本实验装置中的电动阀采用了24V直流控制的XHL系列电动阀门。其控制电路如图6所示。红黄控制电貉图6XHL系列电动

60、阀门控制电路电动阀控制线共有四根线,红与黄各两根,红色用于电机的通断控制,电动阀1的开断由ADuC834的P0.1口通过光耦继电器U10控制;两根黄线用于控制阀门开口度方向,由ADuC834的P0.0口控制通过光耦继电器U11进行控制。当P0.0低电平时,光耦继电器闭合,则阀门内部电机正转,开口度变大,直到到最大之后自动停止,并到保持最大开口度,同时红色指示灯亮起;反之,当P0.0高电平时,光耦继电器断开,则阀门内部电机反转,开口度变小,直到到关闭自动停止,同时绿色指示灯亮起。当电动阀转动过程中,切断电源,则可以实现电动阀一定的开度设置。经过精确计算,电动阀从全开到全关或从全关到全开用时均为1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论