资源简介
本人对模糊PID控制的两种理解的写法,模糊pid控制C程序,内有一定注释,欢迎交流本人对模糊PID控制的两种理解的写法,模糊pid控制C程序,内有一定注释,欢迎交流

代码片段和文件信息
#include “config.h“
#if fuzzy_EN>0
extern fp32 angle_down_maxangle_up_max;
//extern fp32 motor_xtvelocity_max;
#define IS_Kp 0.3
#define IS_Ki 0.6
#define IS_Kd 0.9
#define NL -0.9
#define NM -0.6
#define NS -0.3
#define ZE 0
#define PS 0.3
#define PM 0.6
#define PL 0.9
static const fp32 fuzzyRuleKp[7][7]={
PL PL PM PM PS PS ZE
PL PL PM PM PS ZE ZE
PM PM PM PS ZE NS NM
PM PS PS ZE NS NM NM
PS PS ZE NS NS NM NM
ZE ZE NS NM NM NM NL
ZE NS NS NM NM NL NL
};
static const fp32 fuzzyRuleKi[7][7]={
NL NL NL NM NM ZE ZE
NL NL NM NM NS ZE ZE
NM NM NS NS ZE PS PS
NM NS NS ZE PS PS PM
NS NS ZE PS PS PM PM
ZE ZE PS PM PM PL PL
ZE ZE PS PM PL PL PL
};
static const fp32 fuzzyRuleKd[7][7]={
PS PS ZE ZE ZE PL PL
NS NS NS NS ZE NS PM
NL NL NM NS ZE PS PM
NL NM NM NS ZE PS PM
NL NM NS NS ZE PS PS
NM NS NS NS ZE PS PS
PS ZE ZE ZE ZE PL PL
};
typedef struct{
fp32 Kp;
fp32 Ki;
fp32 Kd;
}PID;
PID fuzzy(fp32 efp32 ec)//误差,误差变化率
{
char pepec;
fp32 eFuzzy[2]={00};
fp32 ecFuzzy[2]={00};
static fp32 E_TABLE[]={NLNMNSZEPSPMPL};
static fp32 EC_TABLE[]={NLNMNSZEPSPMPL};
PID fuzzy_PID;
//误差隶属函数
if(e {
eFuzzy[0]=1.0;
pe=0;
}
else if(e>=E_TABLE[0]&&e {
eFuzzy[0]=(E_TABLE[1]-e)/(E_TABLE[1]-E_TABLE[0]);
pe=0;
}
else if(e>=E_TABLE[1]&&e {
eFuzzy[0]=(E_TABLE[2]-e)/(E_TABLE[2]-E_TABLE[1]);
pe=1;
}
else if(e>=E_TABLE[2]&&e {
eFuzzy[0]=(E_TABLE[3]-e)/(E_TABLE[3]-E_TABLE[2]);
pe=2;
}
else if(e>=E_TABLE[3]&&e {
eFuzzy[0]=(E_TABLE[4]-e)/(E_TABLE[4]-E_TABLE[3]);
pe=3;
}
else if(e>=E_TABLE[4]&&e {
eFuzzy[0]=(E_TABLE[5]-e)/(E_TABLE[5]-E_TABLE[4]);
pe=4;
}
else if(e>=E_TABLE[5]&&e {
eFuzzy[0]=(E_TABLE[6]-e)/(E_TABLE[6]-E_TABLE[5]);
pe=5;
}
else
{
eFuzzy[0]=0;
pe=6;
}
eFuzzy[1]=1-eFuzzy[0];
//误差变化率隶属函数
if(e {
ecFuzzy[0]=1.0;
pec=0;
}
else if(ec>=EC_TABLE[0]&&ec {
ecFuzzy[0]=(EC_TABLE[1]-ec)/(EC_TABLE[1]-EC_TABLE[0]);
pec=0;
}
else if(ec>=EC_TABLE[1]&&ec {
ecFuzzy[0]=(EC_TABLE[2]-e)/(EC_TABLE[2]-EC_TABLE[1]);
pec=1;
}
else if(ec>=EC_TABLE[2]&&ec {
ecFuzzy[0]=(EC_TABLE[3]-e)/(EC_TABLE[3]-EC_TABLE[2]);
pec=2;
}
else if(ec>=EC_TABLE[3]&&ec {
ecFuzzy[0]=(EC_TABLE[4]-e)/(EC_TABLE[4]-EC_TABLE[3]);
pec=3;
}
else if(ec>=EC_TABLE[4]&&ec {
ecFuzzy[0]=(EC_TABLE[5]-e)/(EC_TABLE[5]-EC_TABLE[4]);
pec=4;
}
else if(ec>=EC_TABLE[5]&&ec {
ecFuzzy[0]=(EC_TABLE[6]-e)/(EC_TABLE[6]-EC_TABLE[5]);
pec=5;
}
else
{
ecFuzzy[0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4862 2019-01-12 20:32 新建文件夹 (5)\fuzzy\fuzzy.c
文件 788 2019-01-11 10:19 新建文件夹 (5)\fuzzy\fuzzy.h
文件 4519 2019-01-18 17:36 新建文件夹 (5)\fuzzy1\fuzzy.c
文件 788 2019-01-11 10:19 新建文件夹 (5)\fuzzy1\fuzzy.h
目录 0 2019-01-25 21:12 新建文件夹 (5)\fuzzy
目录 0 2019-01-18 17:38 新建文件夹 (5)\fuzzy1
目录 0 2019-01-25 21:12 新建文件夹 (5)
----------- --------- ---------- ----- ----
10957 7
相关资源
- PID_AutoTune_v0.rar
- 梯控模糊搜索.exe
- FPGA实现PID.v
- DV泵加罗茨泵独立控制系统PID.smart
- 模糊PID控制 c
- 运动模糊的去除
- 课程设计蔬菜大棚自动控制系统,包
- 基于模糊K均值和自适应混合蛙跳算法
- (温度PID)实验指导书(三菱)
- PLCS7-1200PID参数自整定
- PLCS7-1200PID闭环控制
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- 提高风出力预测精度的储能系统模糊
- BLDC电机PID算法
- 基于模糊聚类和SVM的瓦斯涌出量预测
- 基于运动控制器MCK2407的无刷直流电机
- 基于I-Fuzzy-Smith算法的融合控制策略仿
- 基于双闭环模糊PID控制器的开关电源
- 知识型员工敬业度评价指标体系构建
- pid 模拟测试软件
- 基于RBF神经网络在线辨识的永磁同步
- 基于隶属度转换算法的矿业投资决策
- 基于DSC的数字脉冲MIG弧焊逆变电源设
- 基于FPGA的瓦斯浓度模糊控制系统设计
- 基于模糊PI的低速表贴式永磁同步电机
- 突水水源的独立性权–模糊可变理
-
Lipase-catalyzed synthesis and the lipid me
评论
共有 条评论