永发信息网

急求位置式PID控制算法 MATLAB 代码

答案:1  悬赏:50  手机版
解决时间 2021-03-29 04:26
急求位置式PID控制算法 MATLAB 代码
最佳答案
刚好前不久搞过PID,部分程序如下,仅供参考



#include
#include


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控制结构 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
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
万用电表的使用方法
城市污水进水总氮含量高是什么原因?
化妆学中人物面部三线处理线是
我的富怡cad对话框咋不见计算器
怎么做一个让人佩服的人,让他感觉害怕,又想
27分之25x10分之1x5分之3
斐讯倒闭是谁编造的谣言啊?
初中生跳高能跳多高?急阿!!
什么是明心见性成佛,见性是佛吗
市场上的小甜瓜为什么这么甜
为什么打光棍的基本是老实人?那些油嘴滑舌的
磁石煮水的作用
持有北京市区通行证的京牌箱货都什么时间限行
税务举报是怎么规定的?谢谢了,大神帮忙啊
怎样能看出女人刚做完爱
推荐资讯
手机157开头是移动还是联通电信
建筑面积127平方米,使用面积
陕西勉县勉阳镇,都有啥姓
什么歌曲,用来告白最好?
求带有“清、墨、竹、水、闲、简”其中一字的
求一首歌:男女对唱的,很是凄凉伤感的那种,
前世若真的无缘,今生又何必让你为难?前世注
学的偏旁有什么字
把104粒花生分给15只小猴,每只小猴都要分到
八上英语作文my nen yea’r resdutions并翻译
请问SA105是什么材料?
把二次函数y=0.5x^2-3x+4配方成y=a(x-k)^2+h
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?