写在与大家分享吧,有错误欢迎指出,谢谢。
一、系统功能及特点
1、功能
(1)两种速度设定方式:模拟量旋钮给定和数字键盘输入给定;
(2)两种显示格式:脉冲数每周期和转每秒;
(3)系统具备手动启动,手动停止功能。
2、特点
(1)采用模糊逻辑,自动选择PID参数,来控制系统稳定;
(2)编程采用C语言和汇编语言混编的方法。
二、获取PID参数的模糊调整表
首先说明的是,此处的模糊控制规律是我借鉴论文中的表述,以前人的经验为基础,见参考文献【1】。
1、模糊控制规律
(1)当偏差e较大时,应取较大的Kp和较小的Kd,且使Ki为0。
(2)当偏差e中等大小时,应取较小的Kp,适当的Ki和Kd。
(3)当偏差e较小时,应取较大的Kp和Ki,而且Kd的取值要恰当。
2、输入量模糊化
(1) e的论域
{-3(负大-NB),-2(负中-NM),-1(负小-NS),0(零-ZO),1(正小-PS),2(正中-PM),3(正大-PB)}
(2)ec的论域
{-3(负大-NB),-2(负中-NM),-1(负小-NS),0(零-ZO),1(正小-PS),2(正中-PM),3(正大-PB)}
(3)Kp的论域
{-0.3(负大-NB),-0.2(负中-NM),-0.1(负小-NS),0(零-ZO),0.1(正小-PS),0.2(正中-PM),0.3(正大-PB)}
(4)Ki的论域
{-0.15(负大-NB),-0.1(负中-NM),-0.5(负小-NS),0(零-ZO),0.5(正小-PS),0.1(正中-PM),0.15(正大-PB)}
(5)Kd的论域
{-0.06(负大-NB),-0.04(负中-NM),-0.02(负小-NS),0(零-ZO),0.02(正小-PS),0.04(正中-PM),0.06(正大-PB)}
3、生成模糊规则表
采用经验归纳法和推理合成法来建立模糊控制规则。
(1)∆K_P模糊规则表,K_P(k)=K_P0+∆K_P(k)
(2) ∆ K_ I 模糊规则表, K _I (k)=K_ I 0+∆K_ I (k)(3)∆K_D模糊规则表,K_D (k)=K_D0+∆K_D(k)
4、解模糊—将模糊逻辑转化为查询表
利用MATLAB进行加权平均法(重心法)转化计算,参考网址:如何利用matlab将模糊逻辑转化为查询表
(1)建立模糊逻辑
打开MATLAB的fuzzy工具箱,结合上述关系建立模糊逻辑控制器,添加49条模糊控制规则。
(2) 系统测试
利用Simulink建立控制器模型,调用system test工具,进行系统测试。然后利用MATLAB一个工具,经过多次迭代,计算出需要的调整表。
(3)提取数据
得到的是一个多种参数数据的cell细胞组,需要对数据进行提取。笔者当时利用一个博客提供的方法提取不成功,就自己写了一个函数,在M文件编写程序,提取数据形成查询表,把参数提取在excel表中了。
MATLAB提取程序:
writefile='selectPID.xls';%写入文件夹名
dataout1=zeros(7,7);%最终数据输出
dataout2=zeros(7,7);%最终数据输出
dataout3=zeros(7,7);%最终数据输出
%sourcedata=test_data;
title1={'Kp参数的模糊调整表'};
title2={'Ki参数的模糊调整表'};
title3={'Kd参数的模糊调整表'};
varname={-3;-2;-1;0;1;2;3};
corname={-3;-2;-1;0;1;2;3};
xlswrite(writefile,title1,'E1:E1');
xlswrite(writefile,title2,'E11:E11');
xlswrite(writefile,title3,'E20:E20');
for i=2:8
for j=2:8
dataout1(i-1,j-1)=mean(test_data.Kp{(j-1+(i-2)*7)});
j=j+1;
end
i=i+1;
end
for i=2:8
for j=2:8
dataout2(i-1,j-1)=mean(test_data.Ki{(j-1+(i-2)*7)});
j=j+1;
end
i=i+1;
end
for i=2:8
for j=2:8
dataout3(i-1,j-1)=mean(test_data.Kd{(j-1+(i-2)*7)});
j=j+1;
end
i=i+1;
end
xlswrite(writefile,dataout1,'B3:H10');%将数据写入表格
xlswrite(writefile,dataout2,'B12:H19');%将数据写入表格
xlswrite(writefile,dataout3,'B21:H28');%将数据写入表格
参考文献:【1】宋晓宇,马斌,张波,基于单片机的模糊PID控制双闭环直流调速系统研究