问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数字PID控制的设计(基于Protues的8051单片机)

发布网友 发布时间:2022-05-13 18:33

我来回答

2个回答

热心网友 时间:2023-10-20 20:24

/*转载:标准PID源程序

--- 工业控制中常用算法 ---*/

/*====================================================================================================
这是从网上找来的一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID
参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的*,一般不采用浮点数运算,
而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可
大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余
数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
=====================================================================================================*/
#include <string.h>
#include <stdio.h>
/*====================================================================================================
PID Function

The PID (比例、积分、微分) function is used in mainly
control applications. PIDCalc performs one iteration of the PID
algorithm.

While the PID function works, main is just a mmy program showing
a typical usage.
=====================================================================================================*/

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;

/*====================================================================================================
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 // 微分项
);
}

/*====================================================================================================
Initialize PID Structure
=====================================================================================================*/

void PIDInit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}

/*====================================================================================================
Main Program
=====================================================================================================*/

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
}
}

你是哪里的哦?

热心网友 时间:2023-10-20 20:24

看你的设计要求,应该跟我一样是CEC的,加我的QQ吧:616078678,我刚才才验收通过...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
烟台驾管所在什么地方 镂空刺绣裙如何搭配才能展现出时尚又迷人的气质? 深紫色的刺绣印花外套如何搭配才能呈现出满满的时尚感? 民间故事:女子救青蛇,再嫁时青蛇却藏在桌底,它说小心你丈夫 选购刺绣服装时需要注意些什么? 男士的刺绣毛衣有哪些品牌的质量不错? 电脑绣花厂工种有哪些请问一下在时尚行业中电脑绣花的工艺类型有哪些可... 气性大的人很容易生气适合上夜班吗 小孩子气性大怎么办 气性大是什么意思 关于广告的问题 几种PID控制器设计方法的比较 中秋节在茶叶店门口贴上pop海报上面 写什么简单易记的短语能突出《中秋、月饼、茶叶、友情》,这几个词呢 怎样设计PID控制器 怎么修改?已经修改过一次了 想再修改一次。 在茶博会上看到合和昌最近出的那款“六合同风”海报好好看啊,怎么样? pid控制器怎么设计 网上怎样预约科目一考试 男人穿什么裤子显腿长?配什么鞋子好呢? 朋友们好,问一下,腿短腿粗的男生,穿什么类型的裤子能显得腿细腿长,裤子的颜色如何? ps如何使图案按路径 妻子不怀孕被婆婆欺负赶出家门,女人遇到这种情况该怎么办? 我老婆我们俩结婚几年还不怀孕,在哪里可以治,我应不应该和她离婚。 笔记本 无线网卡做WIFI 能隐藏SSID么 别人开启WIFI无法搜索到此SSID无线网 但是能手动添加 兰州交通大学接受三本毕业的调剂吗? B类区的那些大学研究生院有建筑学(0813)专业 兰州交通大学研究生可以返校吗? 兰州交通大学外国语学院的研究生 请问兰州交通大学自动化学院的研究生什么专业好 安得生用英语怎么翻译 我修改了一次,我想修改第二次,怎么办? 在数字PID控制算式的工程实现中,PID控制程序包括哪六部分? 自动控制实验报告六-数字PID控制 she is the girl with glasses中为什么要用with?. thegirl with glasses is our new classmate为什么用with? the girl with glasses is in red什么意思?为什么用“with”? the girl with glasses is my friend the girl with glasses is in 为什么用“with”? 戴眼镜的那个女孩是澳大利亚人翻译成英文。 the girl (with) glasses,the girl (wearing) glasses,the girl (wears) glasses,为什么括号中的词可以替 Alice is my best friend.She is a tall girl with glasses.She often tells me jokes to make me The girl ____ glasses is ___ red.A.with ;with B.in;in C.with;in D.in;with 选择并语法说明 英语翻译 那个戴眼镜的女孩是我的姐姐 修改过一次,还想修改怎么办 who&#39;s the girl with___(glass)? Have you seen ( ) girl with a glasses 已经改过一次了,想再改一次,怎么改? 英语翻译-那个戴眼镜的女孩想要喝两杯绿茶 不要网上抄的 Do you know the girl has glass\ 请问我最近左侧腰部很疼痛是怎么回事啊?