久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機PID抗飽和積分程序+Proteus仿真
[打印本頁]
作者:
nhwdb
時間:
2019-9-25 15:51
標題:
51單片機PID抗飽和積分程序+Proteus仿真
這是一個C51的PID調節的源程序。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(11.32 KB, 下載次數: 68)
下載附件
2019-9-25 16:01 上傳
單片機源程序如下:
#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#include <math.h>
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#ifndef ulong
#define ulong unsigned long
#endif
/*
struct _pid{
float SetSpeed; //定義設定值
float ActualSpeed; //定義實際值
float err; //定義偏差值
float err_last; //定義上一個偏差值
float Kp,Ki,Kd; //定義比例、積分、微分系數
float voltage; //定義電壓值(控制執行器的變量)
float integral; //定義積分值
float umax;
float umin;
}pid;
void PID_init(){
printf("PID_init begin \n");
pid.SetSpeed=0.0;
pid.ActualSpeed=0.0;
pid.err=0.0;
pid.err_last=0.0;
pid.voltage=0.0;
pid.integral=0.0;
pid.Kp=0.4;
pid.Ki=0.2; //注意,和上幾次相比,這里加大了積分環節的值
pid.Kd=0.2;
pid.umax=400;
pid.umin=-200;
printf("PID_init end \n");
}
float PID_realize(float speed){
int index;
pid.SetSpeed=speed;
pid.err=pid.SetSpeed-pid.ActualSpeed;
if(pid.ActualSpeed>pid.umax) //灰色底色表示抗積分飽和的實現
{
if(abs(pid.err)>200) //藍色標注為積分分離過程
{ index=0; }
else{
if(abs(pid.err)>180) {index=(200-abs(err))/20;}
else{index=1;}
if(pid.err<0)
{
pid.integral+=pid.err;
}
}
}
else
if(pid.ActualSpeed<pid.umin)
{
if(abs(pid.err)>200) //積分分離過程
{ index=0; }
else{
if(abs(pid.err)>180) {index=(200-abs(err))/20;}
else{index=1;}
if(pid.err>0)
{
pid.integral+=pid.err;
}
}
}
else
{
if(abs(pid.err)>200) //積分分離過程
{ index=0; }
else{
if(abs(pid.err)>180) {index=(200-abs(err))/20;}
else{index=1;}
pid.integral+=pid.err;
}
}
//pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);
//pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral/2+pid.Kd*(pid.err-pid.err_last); //梯形積分
pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last); //
pid.err_last=pid.err;
pid.ActualSpeed=pid.voltage*1.0;
return pid.ActualSpeed;
}
*/
void main()
{
uint idata count=0;
int idata speed1,speed3=0;
// uchar speed2;
SCON=0x50;
TMOD=0x20;
TCON=0x40;
TH1=0xe8;
TL1=0xe8;
TI=1;
TR1=1;
printf("System begin \n");
PID_init();
while(1)
{
if(count<100)
{
speed1 = PID_contral(250, speed3 );
// printf("%f\n",speed);
printf("%d\n",speed1);
printf("%5d\n",speed3);
// if(speed3<151){speed3 +=20;}
// if((speed3>150)&&(speed3<181)){speed3 += 10;}
// if((speed3>180)&&(speed3<191)){speed3 += 2;}
if(speed3<250){speed3 += 10;}
}
if((count>99)&&(count<150))
{
speed1=PID_contral(200,speed3);
printf("%d\n",speed1);
printf("%5d\n",speed3);
if(count<110) {speed3 -= 2;}
if((count>119)&&(count<130)) {speed3 -= 1;}
// else speed3 =202;
}
count++;
if(count>150){break;}
}
}
復制代碼
0.png
(9.17 KB, 下載次數: 73)
下載附件
2019-9-25 16:02 上傳
所有資料51hei提供下載:
pid抗飽和變積分.rar
(103.99 KB, 下載次數: 37)
2019-9-25 15:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
高德辛
時間:
2019-9-27 16:02
keil編譯不通過,提供的仿真一直發送“覽”,你告訴我你干啥呢?
作者:
jnshuhe
時間:
2019-9-28 07:38
這里高手真多,學習了,謝謝樓主!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
在线观看黄色片
|
中文字幕在线观看不卡
|
亚洲成人免费网站
|
九色91popny蝌蚪新疆
|
久久久精品一区
|
在线网站免费观看18
|
国产精品一区在线播放
|
在线观看av网站
|
亚洲涩涩涩
|
www.黄色网
|
欧美视频久久
|
婷婷色综合
|
免费毛片在线播放免费
|
成av人片在线观看www
|
日韩黄视频
|
国产精品视频久久久
|
亚洲免费视频观看
|
狠狠干狠狠操
|
国产一级特黄
|
欧美午夜精品一区二区三区
|
国产精品久久久久久久免费看
|
一级免费视频
|
国产极品国产极品
|
天堂影院av
|
久久久天堂国产精品女人
|
国产精品一区二区三区四区
|
国产午夜一区
|
日日爱影视
|
久久久久一区
|
久久精品国产免费
|
男人影院在线观看
|
视频一区二区在线
|
黄色大片在线播放
|
亚洲第一av
|
高清一级片
|
波多野结衣一区二区三区
|
日韩精品在线一区二区
|
欧美视频亚洲视频
|
亚洲+小说+欧美+激情+另类
|
精品在线一区
|
久久一区二区三区四区
|