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

PID算法控制温度加热系统,室温(为防止分数流失,做成追加100分以上)

发布网友 发布时间:2022-04-26 20:16

我来回答

4个回答

热心网友 时间:2023-10-28 06:57

刚好前不久搞过PID,部分程序如下,仅供参考

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

#include <string.h>
#include <stdio.h>

/*===============================================================================
PID Function
The PID function is used in mainly
control applications. PID Calc performs one iteration of the PID
algorithm.
While the PID function works, main is just a mmy program showing
a typical usage.

PID功能
在PID功能主要用于控制应用。 PID 计算器执行一个PID的迭代算法。虽然PID功能的工程,
主要只是一个虚拟程序显示一个典型的使用。
================================================================================*/
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 // 微分项
);
}

/*======================= 初始化的PID结构 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控制结构 PID Control Structure
double rOut; // PID响应(输出) PID Response (Output)
double rIn; // PID反馈(输入) PID Feedback (Input)
PIDInit ( &sPID ); // 初始化结构 Initialize Structure
sPID.Proportion = 0.5; // 设置PID系数 Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // 设置PID设定 Set PID Setpoint
for (;;)
{ // 模拟最多的PID处理 Mock Up of PID Processing
rIn = sensor (); // 读取输入 Read Input
rOut = PIDCalc ( &sPID,rIn ); // 执行的PID迭代 Perform PID Interation
actuator ( rOut ); // 所需的更改的影响 Effect Needed Changes
}

热心网友 时间:2023-10-28 06:57

有现成的温控仪表,里边都有PID功能,且当达到你的上下限时候,会输出一个干触点信号,你可以用来接通蜂鸣器。就算是用PLC加触摸屏或者上位机也很简单,因为你就是一路信号的控制!

热心网友 时间:2023-10-28 06:58

你这就是做个温度器嘛。
个人是很难做的,涉及很多电子方面的知识,还有电路知识。
建议你直接买一个温控器,花个一百来块钱。直接应用上。
若自己想做的话,就拆开仔细研究吧。

热心网友 时间:2023-10-28 06:59

详情咨询二班老董。

热心网友 时间:2023-10-28 06:57

刚好前不久搞过PID,部分程序如下,仅供参考

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

#include <string.h>
#include <stdio.h>

/*===============================================================================
PID Function
The PID function is used in mainly
control applications. PID Calc performs one iteration of the PID
algorithm.
While the PID function works, main is just a mmy program showing
a typical usage.

PID功能
在PID功能主要用于控制应用。 PID 计算器执行一个PID的迭代算法。虽然PID功能的工程,
主要只是一个虚拟程序显示一个典型的使用。
================================================================================*/
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 // 微分项
);
}

/*======================= 初始化的PID结构 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控制结构 PID Control Structure
double rOut; // PID响应(输出) PID Response (Output)
double rIn; // PID反馈(输入) PID Feedback (Input)
PIDInit ( &sPID ); // 初始化结构 Initialize Structure
sPID.Proportion = 0.5; // 设置PID系数 Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // 设置PID设定 Set PID Setpoint
for (;;)
{ // 模拟最多的PID处理 Mock Up of PID Processing
rIn = sensor (); // 读取输入 Read Input
rOut = PIDCalc ( &sPID,rIn ); // 执行的PID迭代 Perform PID Interation
actuator ( rOut ); // 所需的更改的影响 Effect Needed Changes
}

热心网友 时间:2023-10-28 06:57

有现成的温控仪表,里边都有PID功能,且当达到你的上下限时候,会输出一个干触点信号,你可以用来接通蜂鸣器。就算是用PLC加触摸屏或者上位机也很简单,因为你就是一路信号的控制!

热心网友 时间:2023-10-28 06:58

你这就是做个温度器嘛。
个人是很难做的,涉及很多电子方面的知识,还有电路知识。
建议你直接买一个温控器,花个一百来块钱。直接应用上。
若自己想做的话,就拆开仔细研究吧。

热心网友 时间:2023-10-28 06:59

详情咨询二班老董。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...和O3、1H216O和2H218O.下列有关说法正确的是( )A.35Cl和37Cl互称为... ...做环境分析指示物.下列说法中正确的是( )A.1H216O在相同 ...1H、2H、3H,氧也有3钟同位素:16O、17O、18O,那么水的种类最多有... 全身没力气、想睡觉怎么回事 我的乙肝检查单 请帮忙看看 帮忙看看乙肝检查报告 谢谢 万分感谢!好人一生平安 麻烦帮我看看乙肝两对半的结果 五冶集团由哪家控股 我的苹果6手机百度视频播放不了是什么原因? 高一怎么选科历生地 简述空调系统怎么完成对洁净室温湿度的控制 基于plc的中央空调的温度控制设计 温度控制器设计 基于STM32的温湿度监控系统设计 温湿度的设计及控制 设计一个温度控制系统 木瓜怎样煮着吃比较有营养 木瓜生吃好还是煮熟吃好 木瓜生吃好还是蒸着吃好 鸡蛋大的冰雹是怎么来的? 木瓜是怎么吃的?怎么分辨生熟?吃了有什么用的? 木瓜怎么做着吃最有营养? 浙江杭州下冰雹,大的冰雹直径超过5厘米,冰雹是如何形成的? 木瓜生吃好还是煮熟吃好? 熟木瓜怎么吃 熟木瓜的吃法 熟木瓜怎么做好吃,熟木瓜的吃法 酒后吊销驾照多久可以重考 醉酒驾驶被吊销后多久才能重新取得驾驶证 醉酒驾驶机动车被吊销驾驶证后,还能恢复吗 酒驾吊销证会不会吊销机动车驾驶证 求一份关于室内温湿度监控系统设计的c语言程序! 温度控制器的设计 智能温度控制系统研究目的和意义及发展 温度控制系统 首行缩进 悬挂缩进 和整段缩进有什么不同? 家里恒温系统怎么安装 1.简述格式刷的作用 2.首行缩进和悬挂缩进的区别 3.首行缩进设置的方法有哪些? 首行缩进和悬挂缩进能同时设置吗?它们有什么区别? word里面的几个缩进的区别和作用 WORD中格式的&quot;段落&quot;如何正确使用首行缩进与悬挂缩进? word 悬挂缩进和悬垂缩进有何不同? 荣耀和华为手环哪个好 信用卡逾期能领结婚证吗 信用卡逾期可以领结婚证吗?会查到吗? 信用卡逾期可以登记结婚吗 信用卡逾期还不了对领结婚证有影响吗 信用卡逾期了被起诉,可以领结婚证吗?对方会受影响码! 信用卡逾期一个月会对以后结婚登记有影响吗 欠信用卡领结婚证会有影响吗 信用卡欠款会影响结婚吗?