模糊PID控制温控系统设计C语言程序代码_第1页
模糊PID控制温控系统设计C语言程序代码_第2页
模糊PID控制温控系统设计C语言程序代码_第3页
模糊PID控制温控系统设计C语言程序代码_第4页
模糊PID控制温控系统设计C语言程序代码_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 模糊模糊 PIDPID 控制温控系统仿真设计控制温控系统仿真设计 C C 程序代码程序代码 include define uchar unsigned char define uint unsigned int define PULSE 200 define number 0 035 sbit SDO P2 0 sbit SDI P2 1 sbit CS P2 2 sbit CLK P2 3 sbit EOC P2 4 sbit RS P2 5 sbit RW P2 6 sbit EN P2 7 sbit KEY1 P3 0 sbit KEY2 P3 1 sbit KEY3 P3 2 sbit KEY4 P3 3 sbit KEY5 P3 4 sbit IN1 P3 5 sbit IN2 P3 6 sbit ENA P3 7 uchar flag uchar flag start float S temp 60 0 float P temp 20 0 float Kp float Ki float Kd float Err 0 0 float Last Err 0 0 float D Err 0 0 float Sum Err 0 0 float U 0 0 函数功能 延时 void delay ms uchar z 精品文档 2欢迎下载 uchar i uchar j for i z i 0 i for j 360 j 0 j void delay us uchar z uchar i for i z i 0 i void LCD WriteData uchar Dat RS 1 P1 Dat delay us 10 EN 1 delay us 10 EN 0 void LCD WriteCOM uchar com RS 0 P1 com delay us 10 EN 1 delay us 10 EN 0 void Show Num uchar x uchar y uchar n float num uchar a 3 uchar i uint Temp Temp int num for i 0 i0 i LCD WriteData a i 1 0 x30 void Show Ki uchar num Ki uchar Temp num Ki Ki 100 Temp uchar num Ki Show Num 10 2 1 Temp 10 Temp Temp 10 Show Num 9 2 1 Temp 10 Temp Temp 10 Show Num 7 2 1 Temp void Show char uchar x uchar y uchar ch if y 2 1 LCD WriteCOM 0 x80 x else LCD WriteCOM 0 x80 0 x40 x LCD WriteData ch void LCD Init void RW 0 EN 0 LCD WriteCOM 0 x38 LCD WriteCOM 0 x0c LCD WriteCOM 0 x06 LCD WriteCOM 0 x01 函数功能 显示函数 void LCD display void Show char 1 1 T delay us 10 Show char 0 1 P 精品文档 4欢迎下载 delay us 10 Show char 1 1 T delay us 10 Show char 2 1 delay us 10 Show Num 3 1 3 P temp delay us 10 Show char 10 1 S delay us 10 Show char 11 1 T delay us 10 Show char 12 1 delay us 10 Show Num 13 1 3 S temp delay us 10 Show char 0 2 P delay us 10 Show char 1 2 delay us 10 Show Num 2 2 2 Kp delay us 10 Show char 5 2 I delay us 10 Show char 6 2 delay us 10 Show char 8 2 delay us 10 Show Ki Ki delay us 10 Show char 12 2 D delay us 10 Show char 13 2 delay us 10 Show Num 14 2 2 Kd delay us 10 函数功能 定时器 2 初始化 void Timer2 Init RCAP2H 65536 300 256 RCAP2L 65536 300 256 精品文档 5欢迎下载 TH2 RCAP2H TL2 RCAP2L ET2 1 TR2 1 EA 1 函数功能 键盘扫描 调整设置温度 void key scan void if KEY1 0 delay ms 1 if KEY1 0 S temp S temp 1 if S temp 200 S temp 200 while KEY1 if KEY2 0 delay ms 1 if KEY2 0 if S temp 0 S temp S temp 1 else if S temp 0 S temp 0 while KEY2 if KEY3 0 delay ms 1 if KEY3 0 if S temp 10 S temp S temp 10 while KEY4 if KEY5 0 delay ms 1 if KEY5 0 flag start 1 while KEY5 函数功能 PID 的计算 void PID Calculate Err S temp P temp Sum Err Err D Err Err Last Err Last Err Err U Kp Err Ki Sum Err Kd D Err U int U if U 0 if U 200 U 200 flag 1 else U U if U 200 U 200 flag 0 精品文档 7欢迎下载 函数功能 PID 参数 Kp 的计算 float fuzzy kp float e float ec e ec 表示误差 误差 变化率 float Kp calcu uchar num pe pec float code eRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 误差 E 的模糊论域 float code ecRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 误差变化 率 EC 的模糊论域 float eFuzzy 2 0 0 0 0 隶属于误差 E 的隶属程 度 float ecFuzzy 2 0 0 0 0 隶属于误差变化率 EC 的隶 属程度 float code kpRule 4 0 0 8 0 16 0 24 0 Kp 的模糊子集 float KpFuzzy 4 0 0 0 0 0 0 0 0 隶属于 Kp 的隶 属程度 int code KpRule 7 7 Kp 的模糊控制表 3 3 3 3 3 3 3 2 2 2 2 1 2 2 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 2 3 3 3 3 3 3 3 误差 E 隶属函数描述 if e eRule 0 eFuzzy 0 1 0 pe 0 else if eRule 0 e pe 0 else if eRule 1 e pe 1 else if eRule 2 e pe 2 else if eRule 3 e pe 3 else if eRule 4 e pe 4 else if eRule 5 e pe 5 else eFuzzy 0 0 0 pe 5 eFuzzy 1 1 0 eFuzzy 0 误差变化率 EC 隶属函数描述 if ec ecRule 0 ecFuzzy 0 1 0 pec 0 else if ecRule 0 ec pec 0 else if ecRule 1 ec pec 1 精品文档 9欢迎下载 else if ecRule 2 ec pec 2 else if ecRule 3 ec pec 3 else if ecRule 4 ec pec 4 else if ecRule 5 ec pec 5 else ecFuzzy 0 0 0 pec 5 ecFuzzy 1 1 0 ecFuzzy 0 查询模糊规则表 num KpRule pe pec KpFuzzy num eFuzzy 0 ecFuzzy 0 num KpRule pe pec 1 KpFuzzy num eFuzzy 0 ecFuzzy 1 num KpRule pe 1 pec KpFuzzy num eFuzzy 1 ecFuzzy 0 num KpRule pe 1 pec 1 KpFuzzy num eFuzzy 1 ecFuzzy 1 加权平均法解模糊 Kp calcu KpFuzzy 0 kpRule 0 KpFuzzy 1 kpRule 1 KpFuzzy 2 kpRule 2 KpFuzzy 3 kpRule 3 return Kp calcu 函数功能 PID 参数 Ki 的计算 float fuzzy ki float e float ec float Ki calcu uchar num pe pec 精品文档 10欢迎下载 float code eRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 float code ecRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 float eFuzzy 2 0 0 0 0 float ecFuzzy 2 0 0 0 0 float code kiRule 4 0 00 0 01 0 02 0 03 float KiFuzzy 4 0 0 0 0 0 0 0 0 int code KiRule 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 3 3 3 3 3 3 3 误差隶属函数描述 if e eRule 0 eFuzzy 0 1 0 pe 0 else if eRule 0 e pe 0 else if eRule 1 e pe 1 else if eRule 2 e pe 2 else if eRule 3 e pe 3 else if eRule 4 e 精品文档 11欢迎下载 pe 4 else if eRule 5 e pe 5 else eFuzzy 0 0 0 pe 5 eFuzzy 1 1 0 eFuzzy 0 误差变化隶属函数描述 if ec ecRule 0 ecFuzzy 0 1 0 pec 0 else if ecRule 0 ec pec 0 else if ecRule 1 ec pec 1 else if ecRule 2 ec pec 2 else if ecRule 3 ec pec 3 else if ecRule 4 ec pec 4 else if ecRule 5 ec 精品文档 12欢迎下载 pec 5 else ecFuzzy 0 0 0 pec 5 ecFuzzy 1 1 0 ecFuzzy 0 查询模糊规则表 num KiRule pe pec KiFuzzy num eFuzzy 0 ecFuzzy 0 num KiRule pe pec 1 KiFuzzy num eFuzzy 0 ecFuzzy 1 num KiRule pe 1 pec KiFuzzy num eFuzzy 1 ecFuzzy 0 num KiRule pe 1 pec 1 KiFuzzy num eFuzzy 1 ecFuzzy 1 加权平均法解模糊 Ki calcu KiFuzzy 0 kiRule 0 KiFuzzy 1 kiRule 1 KiFuzzy 2 kiRule 2 KiFuzzy 3 kiRule 3 return Ki calcu 函数功能 PID 参数 Kd 的计算 float fuzzy kd float e float ec float Kd calcu uchar num pe pec float code eRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 float code ecRule 7 3 0 2 0 1 0 0 0 1 0 2 0 3 0 float eFuzzy 2 0 0 0 0 float ecFuzzy 2 0 0 0 0 float code kdRule 4 0 0 1 0 2 0 3 0 float KdFuzzy 4 0 0 0 0 0 0 0 0 int code KdRule 7 7 3 3 3 2 2 2 2 2 2 2 1 1 1 1 1 1 2 1 1 2 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 2 2 1 0 1 1 1 3 3 3 3 2 3 2 精品文档 13欢迎下载 误差隶属函数描述 if e eRule 0 eFuzzy 0 1 0 pe 0 else if eRule 0 e pe 0 else if eRule 1 e pe 1 else if eRule 2 e pe 2 else if eRule 3 e pe 3 else if eRule 4 e pe 4 else if eRule 5 e pe 5 else eFuzzy 0 0 0 pe 5 eFuzzy 1 1 0 eFuzzy 0 误差变化隶属函数描述 精品文档 14欢迎下载 if ec ecRule 0 ecFuzzy 0 1 0 pec 0 else if ecRule 0 ec pec 0 else if ecRule 1 ec pec 1 else if ecRule 2 ec pec 2 else if ecRule 3 ec pec 3 else if ecRule 4 ec pec 4 else if ecRule 5 ec pec 5 else ecFuzzy 0 0 0 pec 5 ecFuzzy 1 1 0 ecFuzzy 0 查询模糊规则表 num KdRule pe pec KdFuzzy num eFuzzy 0 ecFuzzy 0 num KdRule pe pec 1 KdFuzzy num eFuzzy 0 ecFuzzy 1 num KdRule pe 1 pec 精品文档 15欢迎下载 KdFuzzy num eFuzzy 1 ecFuzzy 0 num KdRule pe 1 pec 1 KdFuzzy num eFuzzy 1 ecFuzzy 1 加权平均法解模糊 Kd calcu KdFuzzy 0 kdRule 0 KdFuzzy 1 kdRule 1 KdFuzzy 2 kdR ule 2 KdFuzzy 3 kdRule 3 return Kd calcu 函数功能 AD 将采集到的温度进行转化 uint read tlc2543 uchar port static uchar PORT 0 uchar Temp i k 0 uint AD value 0 Temp port CS 1 CLK 0 Temp 4 CS 0 while 1 for i 0 i 8 i CLK 0 if Temp else SDI 0 AD value 1 if SDO AD value 0 x01 CLK 1 Temp 1 for i 8 i 12 i CLK 0 AD value 1 if SDO AD value 0 x01 精品文档 16欢迎下载 delay us 10 CLK 1 CLK 0 CS 1 if PORT port break e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论