*====================================================================================================
这是从网上找来的一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID
参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,
而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可
大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余
数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
=====================================================================================================*/
#i nclude
#i nclude
typedef struct PID {
double SetPoint; // 设定目标 Desired Value
double Proportion; // 比例常数 Proportional Const
double Integral; // 积分常数 Integral Const
double Derivative; // 微分常数 Derivative Const
double LastError; // Error[-1]
double PrevError; // Error[-2]
double SumError; // Sums of Errors
} PID;
double PIDCalc( PID *pp, double NextPoint )
{
double dError,
Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 积分
dError = pp->LastError - pp->PrevError; // 当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例项
+ pp->Integral * pp->SumError // 积分项
+ pp->Derivative * dError // 微分项
);
}
void PIDInit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}
double sensor (void) // Dummy Sensor Function
{
return 100.0;
}
void actuator(double rDelta) // Dummy Actuator Function
{}
void main(void)
{
PID sPID; // PID Control Structure
double rOut; // PID Response (Output)
double rIn; // PID Feedback (Input)
PIDInit ( &sPID ); // Initialize Structure
sPID.Proportion = 0.5; // Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // Set PID Setpoint
for (;;) { // Mock Up of PID Processing
rIn = sensor (); // Read Input
rOut = PIDCalc ( &sPID,rIn ); // Perform PID Interation
actuator ( rOut ); // Effect Needed Changes
}
}
扩充临界比例法确定PID系数??
采用比例控制形成闭环系统,比例系数从小逐渐加大,使闭环系统处于临界震荡状态(稳定边界)得到的临界振荡状态波形如图2所示。此状态下的振荡周期Tc=0.0396 s。
根据经验公式确定范围,由单桥换流器构成的舟山直流输电系统特点决定,仅在脉冲触发阀换向时,才对系统进行控制,即每3.3 ms控制一次,即有Ts=3.3 ms也就是Ts=0.083 Tc。 由表1提供的经验公式以上的情况接近Ts=0.09 Tc,可得PID系数的大致范围为Kp=1 800,Ki=370,Kd=4 000附近。
表1 扩充临界比例法的PID控制器参数的范围
Ts Kp Ti Td
0.014Tc 0.63Kpc 0.49Tc 0.14Tc
0.043Tc 0.47Kpc 0.47Tc 0.16Tc
0.090Tc 0.34Kpc 0.43Tc 0.20Tc
0.160Tc 0.27Kpc 0.40Tc 0.22Tc
关键字:PID 算法调节 C51程序
引用地址:
PID算法调节C51程序(2)
推荐阅读最新更新时间:2024-03-16 14:45
用单片机玩PID控制—从理想PID控制至先进PID控制_3
2.1.2软件 MCS-51单片机用Keil C51开发,优点是容易了许多,缺点是不会汇编语言了,对于我个人来说,可以把差不多忘光了的C语言捡起来一些,总体上来说,用C51开发涉及的难度相对来说比较简单(如与数据结构比较),个人感觉,C51难点是硬件开发,或者说要搞清硬件工作的时序原理。我玩的系统,主要有:DS18B20温度传感器数据读取、LCD1602液晶显示器字符显示、串行口通信和各种PID控制,为了串行口通信需要有一个定时器,由于PID控制与时基相关,所以还需要第二个定时器,PID控制的采样周期,一般来说流量系统采样周期是1-2秒,压力和液位系统采样周期是3-5秒,温度系统采样周期是15-20秒,我们定的PID采样周期定
[单片机]
PID调节器正/反作用的确定方法
一 调节器正/反作用的确定方法 调节系统投自动:往往在控制方案确定好且判断出调节器的正/反作用后,最关键的是P、I、D参数如何整定,根据多年的现场工作经验,谈谈如何整定调节系统的P、I、D参数,请大家在工程中参考。 在整定调节系统的P、I、D参数前,要保证一个闭环调节系统必须是负反馈,即Ko*Kv*Kc >0。 调节对象Ko: 阀门、执行器开大,测量PV增加,则Ko>0;反之,则Ko<0; 调节阀门Kv: 阀门正作用(气开、电开),则Kv>0;阀门反作用(气关、电关),则Kv<0; Ko、Kv的正负由工艺对象和生产安全决定,根据Ko、Kv的正负和Ko*Kv*Kc >0,我们可以确定Kc的正负; 调节器Kc: 若Kc>0,
[嵌入式]
8位数码管显示电子时钟c51单片机程序
/* 8位数码管显示 时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include reg52.h sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char
[单片机]
手把手教你S7-1200中实现PID控制
【导读】分享S7-1200中如何实现PID控制。 概述 【一】PID控制 PID功能用于对闭环过程进行控制。PID控制适用于温度、压力和流量等物理量,是工业现场中应用最为广泛的一种控制方式,其原理是对被控对象设定一个给定值然后将实际值测量出来,并与给定值比较,将其差值送入PID控制器,PID控制器按照一定的运算规律,计算出结果,即为输出值,送到执行器进行调节,其中的P、I和D指的是比例、积分和微分,是一种闭环控制算法。通过这些参数,可以使被控对象追随给定值变化并使系统达到稳定,自动消除各种干扰对控制过程的影响。 【一】S7-1200的PID控制 S7-1200 CPU提供了PID控制器回路数量受到CPU的工作内存及支持D
[嵌入式]
LCD1602液晶显示器 C51模块化程序+电路图
下面是51单片机驱动1602液晶的电路图: 程序一共有3个文件: /********************** lcd.h 头文件 **********************/ #ifndef _LCD_H_ #define _LCD_H_ #include reg51.h extern void lcd_init(); extern void lcd_busy(); extern void lcd_write_dat(unsigned char dat); extern void lcd_write_com(unsigned char dat); extern void lcd_xy(unsigned char x,
[单片机]
基于PID单相逆变器复合控制方案设计
引言
PID控制作为一种经典控制 算法 ,具有结构简单、易于调试、动态响应特性快、鲁棒性强等特点。但是,对于中、低频周期信号,该算法仍无法实现无静差控制;对由非线性负载引起的输出波形畸变的调节能力也较差。
本文介绍了一种PID控制器与重复控制器采用串联拓扑结构的方案,将稳定的PID+控制对象闭环系统作为重复控制器的控制对象,在保证系统稳态误差和动态性能的同时,简化了重复控制器的设计。
1 逆变器模型
式中,u0为输出电压;i 为电感电流; 为负载电阻;C为滤波器电容;£为电容等效串联电阻:
取采样频率和 开关 频率相等,把逆变桥看作一个零阶保持器,将式(2)离
[电源管理]
OMRON PLC在化工污水焚烧装置控制系统中的应用
1 化工污水焚烧装置控制系统简介 水气厂化工污水焚烧装置处理的废水来源于大庆石化分公司各个生产装置排出的污水。此装置主要包括再生炉和焚烧炉两个主体设备,温度控制和炉子火咀点火控制是整套控制系统的关键。原控制系统是由调节器、显示仪表、继电器等搭接而成的,1 9 84年安装并投用。由于长时间使用,设备老化、陈旧、显示仪表误差大,不仅使操作不便、维护困难,而且存在着安全隐患。2006年将再生炉、焚烧炉两部分的原有控制系统改造成统一的PLC控制系统,采用日本OMRON公司生产的CS1H系列PLC产品。装置的控制系统改造后开车一次成功,通过PLC控制系统能够对整个生产过程进行监视和控制。 2 控制系统配置及说明 2.1硬件配置
[工业控制]
什么是pid控制,什么是pid控制器
所谓PID控制,就是在一个闭环控制系统中,使被控物理量能够迅速而准确地无限接近于控制目标的一种手段。 PID 控制功能是变频器应用技术的重要领域之一,也是变频器发挥其卓越效能的重要技术手段。 变频调速产品的设计、运行、维护人员应该充分熟悉并掌握 PID 控制的基本理论。 PID控制简介 目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,控制理论的发展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。智能控制的典型实例是模糊全自动洗衣机等。自动控制系统可分为开环控制系统和闭环控制系统。一个控制系统包括控制器﹑传感器﹑变送器﹑执行机构﹑输入输出接口。控制器的输出经过输出接口﹑执行机构﹐加到被控系统上﹔
[模拟电子]