也体现了人脑推理过程的连续性和单值性等特点。
对一个常规的二文控制器而言,在控制过程的初始阶段,系统的误差较大,控制系统的主要目的是消除误差,这时希望误差值的加权系数太一些;反之,当控制过程趋向稳定时,系统误差已经较小,控制系统的主要任务是减小超调量,使系统尽快稳定,这就需要增大误差变化率的加权系数,为此采用两个可调因子
U=-[
U=-[
其中
基于以上的分析,在M文件编辑器里编写相应模糊控制器的S-function,如下所示:
function[sys,x0]=fics(t,x,u,nag)
ke=19;
kc=4;
ku=30;
al=0.8;
a2=0.2:
if
abs(flag)==3
E=round(ke*u(1));
EC=round(kc*u(2));
e=u(1);
if e>0.04
sys=ku*(al*E+(1—a1)*EC);
else
sys=ku*(a2*E+(1—a2)*EC);
end
else if flag==0
sys=[0;0;1;2;0;0];
else
sys=[];
end
这样就完成了对控制规则可调整的模糊控制器的S-function描述.取文件名为fics.m。
在MATLAB环境下编写好模糊控制器后,需要通过DDE协议进行MATLAB和InTouch之间的通信。DDE是程序间数据交换的主流技术,它使用Windows消息和共享的内存,使相互合作的应用程序能够交换数据。
要实现DDE通信,首先打开InTouch中Windowmaker中的特别-访问名设置访问名,访问名为DDE_MATLAB,应用程序名为matlab,主题名为Engine,要使用的协议选用DDE协议。
然后是MATLAB如何实现与InTouch通信,MATLAB作为DDE客户机程序的工作过程如下:首先。是用ddeinit函数与服务器建立对话,建立成功则该函数返回一个通道号。以后的操作均对这个通道号进行。然后用ddeadv请求建立热链。ddereq向服务器索要数据,返回值是存有数据的矩阵。ddepoke函数向服务器发送数据。在本文中,INTOUCH编制的主控程序将数据送到MATLAB程序进行仿真计算。计算后将结果返回INTOUCH。下面是MATLAB与服务器连接的程序结构:
channel=ddeinit(view ,tagname); 建立与服务器的对话,并返回通道号。
rc=ddereq(channel,tagname); 从InTouch中获取数据。
rc=ddepoke(channel, item ,result);请求向服务器发送数据。
rc=ddeterm(channe1); 请求解除与服务器已建立的对话。
其中rc是返回值,1表示成功,0表示操作失败。channel是由ddeinit函数得到的通道号 item是DDE会话的主题。在M文件需要从InTouch中获得数据的地方运用ddereq函数,InTouch中的标记名要与MATLAB中要进行运算的变量名一一对应,计算后的结果通过函数ddepoke传回到InTouch中,此处的变量也要和组态软件中的表示结果的标记名相对应。以上程序与服务器建立连接后,进入等待状态。只要服务器数据发生变化,就会将新的数据传到MATLAB中进行计算并传回新的计算结果。
3.4 本章小结
本章首先简单的介绍了组态软件InTouch,较为详细的介绍了模糊控制理论的原理并通过具体例子描述了模糊控制器的实现方法以及在MATLAB环境下实现和仿真,本章介绍了两种方法,即运用M文件和运用SIMULINK进行仿真。最后说明了如何将模糊控制器和InTouch联系起来以实现二者之间的数据交换,本章以MATLAB作为客户端,需要在InTouch设置好访问名,在MATLAB里面利用不同的函数来实现与InTouch的通信,最终达到将模糊控制算法嵌入到InTouch中的目的。
本文选用编写模糊控制器的方法是利用M文件来实现并进行仿真,具体实现方法将在下一章中详细讲到。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>