一、课题的提出在日常生产生活中,常遇到液位测量及控制问题。比如在一些工业生产自动化系统中对容器中物料位或者液位的测量,又特别是极其恶劣的环境下的测量,比如对具有腐蚀性的液体液位的测量,传统的采用差位分布电极的电极法,通过电脉冲去检测液位高度,电极长期处于这种环境中,极易被电解、腐蚀,从而很容易在短时间内就失去灵敏性。显然,在这种检测环境对测试设备的抗腐蚀性要求较高。因此传统的液位测量设备已不能满足现代工业生产的需要。超声波液位检测系统是一种新兴的液位测量系统,它利用了超声波传感技术的原理,采取一种非接触检测方法,能够实现对工业生产自动化系统中液位、物料位等进行检测。此外,超声波具有很好的束射性和方向性,一般也不会对人体造成伤害。基于超声波的检测控制系统具有实施方便、迅速,测量精度高,易于实时控制,所以有非常广阔的应用领域。VA/随着人们生活需求和工业标准的提高,液位检测技术愈来愈受到社会的重视,检测的精度以及实时性要求也愈来愈高,另外还要求检测系统对被检测对象具有自动控制功能。可以说,在现在以及今后的很长一段时间里,液位的检测及控制系统的研究也将依然是一个重要的课题。二、课题的意义为了改善工人的工作环境,降低工人的劳动强度,节省财力、物力,避免资源的浪费,降低工业生产成本,特别是对某些特殊的生产环境,比如:易爆、高温、低温、毒性、腐蚀性、高压、低压、有辐射性、易挥发等液体的液位进行检测,对于这些对身体健康有一定损害的测量环境,不易在实地直接进行测量及控制,而这种新兴的液位测量及控制技术就显得特别的重要。
上传时间: 2022-06-17
上传用户:XuVshu
【摘要】在人们生活以及工业生产等诸多领域经常涉及到液位和流量的控制问题,例如居民生活用水的供应,饮料、食品加工,溶液过滤,化工生产等多种行业的生产加工过程,通常需要使用蓄液池, 蓄液池中的液位需要维持合适的高度,既不能太满溢出造成浪费, 也不能过少而无法满足需求。因此液面高度是工业控制过程中一个重要的参数, 特别是在动态的状态下, 采用适合的方法对液位进行检测、控制,能收到很好的效果。PID 控制(比例、积分和微分控制)是目前采用最多的控制方法。【关键词】水箱液位; PID 控制;液位控制; Matlab 仿真一.引言在人们生活以及工业生产等诸多领域经常涉及到液位和流量的控制问题, 例如居民生活用水的供应,饮料、食品加工,溶液过滤,化工生产等多种行业的生产加工过程, 通常需要使用蓄液池, 蓄液池中的液位需要维持合适的高度, 既不能太满溢出造成浪费, 也不能过少而无法满足需求。因此液面高度是工业控制过程中一个重要的参数, 特别是在动态的状态下, 采用适合的方法对液位进行检测、控制,能收到很好的效果。本论文利用PID 算法在matlab 中进行仿真并讲解实物搭接效果, 具体如下:1、利用指导书中推导的模型和实际的参数,建立水箱液位控制系统的数学模型,并进行线性化;2、构成水箱液位闭环无静差系统,并测其动态性能指标和提出改善系统动态性能的方法,使得系统动态性能指标满足σ%≤10%,调节器调节阀水槽测量变送出水阀系数<0.5 秒,静态误差小于2%;3、通过在matlab 编程中求取合适的反馈变量K,然后与仿真模型结合构成最优控制的水箱液位系统,通过图形分析是否满足系统的性能参数;
标签: pid调节控制系统
上传时间: 2022-06-18
上传用户:1208020161
假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 /* N值可根据实际情况调整 排序采用冒泡法*/
上传时间: 2014-12-26
上传用户:nanshan
* 高斯列主元素消去法求解矩阵方程AX=B,其中A是N*N的矩阵,B是N*M矩阵 * 输入: n----方阵A的行数 * a----矩阵A * m----矩阵B的列数 * b----矩阵B * 输出: det----矩阵A的行列式值 * a----A消元后的上三角矩阵 * b----矩阵方程的解X
上传时间: 2015-07-26
上传用户:xauthu
(1) 、用下述两条具体规则和规则形式实现.设大写字母表示魔王语言的词汇 小写字母表示人的语言词汇 希腊字母表示可以用大写字母或小写字母代换的变量.魔王语言可含人的词汇. (2) 、B→tAdA A→sae (3) 、将魔王语言B(ehnxgz)B解释成人的语言.每个字母对应下列的语言.
上传时间: 2013-12-30
上传用户:ayfeixiao
1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块碟子,小的只能叠在大的上面 3.把所有碟子从A杆全部移到C杆上 经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片: 如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C 此外,汉诺塔问题也是程序设计中的经典递归问题
上传时间: 2016-07-25
上传用户:gxrui1991
1. 下列说法正确的是 ( ) A. Java语言不区分大小写 B. Java程序以类为基本单位 C. JVM为Java虚拟机JVM的英文缩写 D. 运行Java程序需要先安装JDK 2. 下列说法中错误的是 ( ) A. Java语言是编译执行的 B. Java中使用了多进程技术 C. Java的单行注视以//开头 D. Java语言具有很高的安全性 3. 下面不属于Java语言特点的一项是( ) A. 安全性 B. 分布式 C. 移植性 D. 编译执行 4. 下列语句中,正确的项是 ( ) A . int $e,a,b=10 B. char c,d=’a’ C. float e=0.0d D. double c=0.0f
上传时间: 2017-01-04
上传用户:netwolf
水位计广泛应用于水利、石油、化工、冶金、电力等领域的自动检测和控制系统中.本文设计的智能水位计是吸收了国内外最新智能化仪表的设计经验,采用工业控制单片机,集水位采集、存储、显示及远程联网于一体,适用于各种液位及闸门开度的测量.它具有高精度、高可靠性、多功能和智能化等特点.针对研制任务的要求,课题期间研制了下位机系统硬件和软件,开发了上位机监控软件,其中所作的具体工作包括:测量原理的研究和在系统中的实现,在本次设计中用三种方法来进行水位测量,分别是旋转编码器法、液位压力传感器法和可变电阻器法;主控芯片的选择,我们选用了高集成度的混合信号系统级芯片C8051F021;实现了信号的采集和处理,包括信号的转换和在单片机内的运算;高集成度16位模数转换芯片AD7705在系统中的应用,我们完成了它与单片机的接口设计及程序编制任务;精确时钟芯片DS1302在系统中的应用,在此,我们实现了用单片机的I/O口与DS1302的连接和在软件中对时序的模拟,该芯片的应用给整台仪器提供了时间基准,方便了仪器的使用;另外,针对研制任务的要求,还给系统加上了一路4~20mA模拟信号电流环的输出电路来提供系统监测,该部分的实现是通过采用AD421芯片来完成的,本设计中完成了AD421与单片机的SPI接口任务,协调了它与AD7705芯片和单片机共同构成的SPI总线系统的关系,并完成了程序设计;与上位机的通信接口设计,该部分通过两种方法实现:RS232通信方式和RS485通信方式;系统设计方面还包括报警电路设计、操作键盘设计、电源监控电路设计、电压基准电路的设计.在硬件设计的基础上,对系统进行了软件设计,软件部分包括下位机单片机程序的设计和上位机监控软件的设计.在软硬件充分结合的情况下,实现了系统设计要求,很好地解决了以往的水位计中存在的问题,达到了高精度水位测量仪器的各项标准.
标签: 水位计
上传时间: 2013-06-20
上传用户:libenshu01
/*--------- 8051内核特殊功能寄存器 -------------*/ sfr ACC = 0xE0; //累加器 sfr B = 0xF0; //B 寄存器 sfr PSW = 0xD0; //程序状态字寄存器 sbit CY = PSW^7; //进位标志位 sbit AC = PSW^6; //辅助进位标志位 sbit F0 = PSW^5; //用户标志位0 sbit RS1 = PSW^4; //工作寄存器组选择控制位 sbit RS0 = PSW^3; //工作寄存器组选择控制位 sbit OV = PSW^2; //溢出标志位 sbit F1 = PSW^1; //用户标志位1 sbit P = PSW^0; //奇偶标志位 sfr SP = 0x81; //堆栈指针寄存器 sfr DPL = 0x82; //数据指针0低字节 sfr DPH = 0x83; //数据指针0高字节 /*------------ 系统管理特殊功能寄存器 -------------*/ sfr PCON = 0x87; //电源控制寄存器 sfr AUXR = 0x8E; //辅助寄存器 sfr AUXR1 = 0xA2; //辅助寄存器1 sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器 sfr CLK_DIV = 0x97; //时钟分频控制寄存器 sfr BUS_SPEED = 0xA1; //总线速度控制寄存器 /*----------- 中断控制特殊功能寄存器 --------------*/ sfr IE = 0xA8; //中断允许寄存器 sbit EA = IE^7; //总中断允许位 sbit ELVD = IE^6; //低电压检测中断控制位 8051
上传时间: 2013-10-30
上传用户:yxgi5
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230