1、基于单片机的液位模糊控制器的设计,液位控制由于其应用极其普遍,种类繁多,其中不乏一些大型的复杂系统,譬如在石油化工等工业生产中。它主要有以下几个特点:1、时滞性很大。在大型、复杂的液位控制系统中,当改变进出容器的液体流量来控制液位时,控制效果在较长的时间后才能得到体现,这会使得最后的稳态误差较大,液位在期望值附近波动。2,时变性。液位控制一般是通过控制液体流入量的大小来控制液位的,流出量是根据后续工艺生产的需求而调节,这种需求的数量和速度是在不断变化的。3,非线性。容器内液体流出量不仅随后续工艺生产需求变化,即使在控制阀门保持不变的情况下,实际的流出量也随着液位高度的变化而发生一种非线性的变化
2、。这几个特点,都严重影响PID控制的效果,当实际生产对控制有较高的性能指标要求时,就需要将智能控制方法引入到液位控制系统中来。,模糊控制的基本原理,模糊控制属于智能控制的范畴,它是以模糊数学和模糊逻辑为理论基础、模仿人的思维方式而统筹考虑的一种控制方式。 它是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制。模糊控制模仿人的思维方式,计算控制量时并不需要参数的精确量,而是以参数的模糊信息为基础,通过模糊推理得到控制量的模糊形式,然后再经过反模糊化处理输出具体的控制量。其控制方框图如下图1所示,图1 模糊控制原理图,模糊控制算法的四个步骤,根据本次采样得到的系统的输出值,计算所
3、选择的系统的输入变量 ; 将输入变量的精确值变为模糊量; 根据输入变量(模糊量)及模糊控制规则,按模糊推理合成规则计算控制量(模糊量); 由上述得到的控制量(模糊量)计算精确的控制量。,基于单片机的液位模糊控制器的设计,一.模糊控制器的设计的基本原理第一步 : 在采样时刻,采样系统的输出值,然后根据所选择的系统的输入变量来进行计算,得到输入变量的具体值。一般系统通常选择误差及误差的变化情况作为输入变量。 第二步 :将输入变量的精确值变为模糊量。当然,在这之前需要先确定模糊变量的基本论域、模糊子集论域、模糊词集及隶属函数。系统中输入变量的实际变化范围称为变量的基本论域,对于模糊控制输入所要求的变
4、化范围称为它们的模糊子集论域。模糊子集论域的确定和下一步的模糊推理中需要的模糊值有关。模糊值可用模糊词集来表示,人们对数值的模糊表示一般可用大、中、小加以区别,再加上正负模糊词集就可表示为:负 大 , 负中,负小,零,正小,正中,正大一般系统的输入变量的模糊子集论域所含的元素个数应为词集总数的两倍以上,这样才能确保模糊词集能较好地覆盖,模糊子集论域,避免出现失控现象。针对上面选用的模糊词集,模糊子集论域可选择为 -6 , -5 ,-4,-3,-2,一1,0 , 1,2 ,3 ,4 ,5 ,6 对于一个模糊控制系统,它的控制器输入变量的实际范围一般不会正好和模糊子集论域一致,这时就需要进行转化。
5、假如基本论域为a. b,模糊子集论域为m, n,则将一个精确输入量x转化到模糊子集论域中的变量Y是通过以下公式来实现的。y=(n-m)*x-(b-a)/2/(b-a) (1)模糊 子 集 论域和模糊词集之间是通过隶属函数来联系的。模糊变量的隶属函数就和普通变量的特征函数一样,但它的取值范围并不是单纯的0或1,而是在0, 1之间连续变化。隶属函数的形状常采用梯形、三角形、钟形、高斯形等。在实际应用中,为方便起见,采用三角形的较多。这一步的工作可以用下图表示:输入变量精确值 模糊子集论域中的变量 输入变量模糊值,公式1,隶属函数,第三步:根据上一步得到的输入变量(模糊量)及模糊控制规则,按模糊推理
6、合成规则计算控制量(模糊量)。模糊控制规则是根据操作者的经验或专家的知识,用if, then描述的一组条件语句。 第四步 :控制量的模糊量转化为精确量。上一步虽然通过模糊推理得到了控制量,但它是模糊形式的,而真正的执行机构不能接受模糊量,只能接受精确量,所以必须把控制量由模糊形式转化为精确形式,这一步也叫做解模糊化。二.模糊控制器的设计过程模糊控制器的结构设计 模糊控制器的结构设计是指确定模糊控制器的输入变量和输出变量。模糊控制器输入变量的个数称为模糊控制器的维数,目前广泛采用的均为二维模糊控制器.在此我们也选择这一结构形式。我们设计的是液位模糊控制器,就选择液位的,误差和误差的变化作为模糊控
7、制器的输入变量,分别记作E, Ec。模糊控制器的输出应该是用来控制液位的,液位实际上就是受流入量和流出量的影响,而流出量是根据后续工艺不停的变化,是不可控的。所以模糊控制器的输出就只有一个,作为控制流入量执行机构的控制量,记作U。对于模糊控制器的输出,可以有两种形式,一种是绝对的控制量输出,另一种是增量方式输出。在本次设计的模糊控制器中,我们选择了绝对值输出方式 。模糊控制规则的设计 控制规则的设计一般包括三部分内容:选择描述输入输出变量的词集,定义各模糊变量的模糊子集和建立模糊控制器的控制规则。下面就分别来进行说明:,选择描述输入、输出变量的词集对于液位误差、误差变化率及控制量我们选用相同的
8、模糊词集,都用自然语言大、中、小来进行描述,将大、中、小再加上正、负两个方向并考虑变量的零状态,共有七个词汇,即负 大 , 负 中 ,负小,零,正小,正中,正大为叙述方便,用英文字头缩写表示为N B ,N M , N S ,Z E, PS, PM,P B其中,N=Negative, P=Positive, B=Big, M=Medium, S=Small, ZE=Zero 。 定义各模糊变量的模糊子集 定义 一 个 模 糊 子集,实际上就是要确定模糊子集隶属函数曲线的形状。对于输入变量误差和误差变化率,我们选用的模糊子集论域和隶属函数曲线都完全一致,所以在此就只针对误差的模糊子集的确定来进行说
9、明。,误 差的 模 糊子集论域取-6,6 之间,然后离散化,只取整数,所以它的模糊子集论域可表示为-6 , -5 ,-4,-3,-2,-1,0 ,1 ,2 ,3 ,4 ,5 ,6 其中有13个元素,而模糊词集中有7个元素,基本满足了二倍的关系,可以保证不会出现失控现象。 为了计算方便,将隶属函数曲线都选为三角形形式,而且根据经验,在靠近0附近,三角形的形状选的窄一些,这样有利于提高灵敏度,抑制超调。在远离0的地方,三角形的形状选的宽一些,因为这时候误差还很大,不会引起超调。至于三角形具体形状及位置的有关参数,是根据经验初步确定的,在控制器调试的时候还需要对这些进行反复的修改。图2是误差的各模糊
10、词集的隶属函数曲线,根据这个隶属函数可以得出模糊子集元素对各模糊词集的隶属程度,具体如表1所示,表1 误差的模糊变量的赋值表,图2 误差的隶属函数,对于模糊控制器的输出量,虽然它是执行机构的控制量,但还需经过D/A的转换。因为计算机输出的是数字量,而执行机构只能接受模拟量。在本次设计中,我们用了AD420来实现这样的功能,所以说模糊控制器的输出实际上是作为AD420的输入。虽然AD420的输入是16位的数字量,但在设计过程中,我们先采用8位的方式来进行处理(具体操作方法在下节说明),所以它的范围基于CAN总线的液位模糊控制系统的设计及研究是0-FFH,这就是输出量的模糊子集论域。模糊词集也取7
11、个,如下所示负 大 ,负 中,负小,零,正小,正中,正大即N B, N M,N S,Z E,P S, PM,P B对于输出量,也采用三角形形状的隶属函数曲线,其中的有关参数也是根据经验初步确定,尚待在调试时进行修正,具体如图3所示,建立模糊控制器的控制规则 根据实际控制经验,建立如表2所示模糊控制规则,图3 输出的隶属函数,模糊推理及其模糊量的非模糊化方法 模糊推理是从一些模糊前提条件推导出某一结论, 目前模糊推理有十几种方法,大致分为直接法和间接法二大类。其中的MIN-MAX合成法属于直接推理法,应用的比较多,我们在此也应用这种推理方法。这种方法也叫做Mamdani推理法,其具体推理过程如下
12、。,表2 模糊控制规则表,假如有输入变量E,E c的值分别是x,y ,对应的n条规则为:If E=A and Ec=B then u=C其中,Ai,Bi,Ci,分别表示E, Ec, U的某一个模糊词集元素。则每个规则推出的结果为:最终的推理出的输出变量模糊集为C,隶属度表示如下:对于解模糊化,采用重心法。具体计算公式如2所示:(2),由于在本次设计的液位模糊控制器中,在程序实现时采用的是查表的方法,所以在此根据公式2计算出模糊控制查询表如表3所示 :,表3 模糊控制查询表,三. 模糊控制器的程序实现对于模糊控制算法的软件实现,可以根据输入变量和模糊控制规则进行实时计算,也可以先离线计算好,然后
13、在控制时直接查表来得到控制量。 AT89S51的资源分配 对于AT89S51,它本身的中断资源就比较少,为了节省这些资源,按键输入采用1/0口查询的方式,中断资源分配情况如下:外部中断0 INT0 CAN总线接收定时器 0 T0 设置为50ms的定时器,用来产生程序中所需要的有关时间及采样周期定时器1 T1 为串行口的通讯产生时钟,控制波特率串行口中断 SERI 应用于RS232的接受和发送外部中断1 INT1 备用,对于内部RAM的分配,将60H-7FH之间的单元分配给堆栈使用,总共有32个单元,因为在中断中要用到堆栈,而中断是随机的,所以这部分单元不能再做它用。20H-27H共8个单元作为
14、位标志区,存放程序中的一些状态标志。剩下的29H-59H单元,除个别单元固定分配给少许的全局变量外,大多数进行动态的分配,这样可提高其利用效率。 程序编写中的几点说明 a. 在程序的起始部分,加了一个大约100ms的延时是因为单片机系统的一些外围芯片在上电时有一个上电复位过程,如果这些芯片复位还未完全结束时就对其进行操作会得到错误的结果。b.我们采用的单片机AT89S51是8位机,所以在制做模糊控制查询表时其 中 的 输出值也为8位。但数/模转换器件AD420是16位的,在编程中将 查 表得到的值作为高8位,低8位按0进行输出 。,C. 为了使系统开机工作时能保持和上次关机前相 同的工作状态,
15、就需要将有关的参数存储起来,譬如液位的设定值等,这里选用的存储芯片是AT24C01。 d.为了防止对液位值进行采样时受干扰而得到不正确的值,采取了连续采样10次,剔除最大最小值,然后进行平均的方法 。 程序流程图 在主程序中主要完成有关的初始化操作,按键扫描和显示刷新,程序流程图见图4。实现控制功能是通过T0中断计时,累计达到3秒时在中断程序中实现的,程序流程图见图5。,图4 主程序流程图,图5 T0中断服务流程图,三. 仿真,仿真结构图,响应曲线图,五. 结论通过观察仿真结果可以看出,模糊控制器对大滞后系统的控制效果比较理想,可以做到无稳差,响应迅速超调也不大。如果结合遗传算法,优化控制器参
16、数能得到更好的效果。,六. 参考文献1 A.Haj-Ali and H.Ying The Structure of a Class of Mandani Fuzzy Controllers with Nonlinear Input Fuzzy Sets 2003 IEEE international conference on fuzzy systems 52352.2Jia-Xin Chen,Wei Li Application of fuzzy control PID algorithm intemperature controlling systems Machine Learning and Cybernetics, 2003 International Conference on 2601 2604 Vo1.43Mohand Mokhtari,Michel Marie MATLAB与SIMULINK.I程应用(赵彦玲吴淑红译) 北京 电子工业出版社 20024余永权,曾碧, 单片机模糊逻辑控制, 北京北京航空航天大学出版社, 19995张化光,何希勤, 模糊白适应控制理论及其应用, 北京北京航空航大人学出版社, 2002.6汤兵勇,路林占,T. 文杰, 模糊控制理论与应用技术,北京, 清华人学出版社, 2002.,