没有合适的资源?快使用搜索试试~ 我知道了~
最全pid控制算法的C语言实现

温馨提示


试读
44页
最全pid控制算法的C语言实现,pid实现的经典算法大集合,基本都有了,有代码直接用
资源推荐
资源详情
资源评论




比例环节
执行器
微分环节
传感器
.
PID 控制算法的 C 语言实现 PID 算法原理
最近两天在考虑一般控制算法的
C
语言实现问题,发现网络上尚没有一套完
整的比较
体系的讲解 。于是总结了几天,整理一套思路分享给大家。
在工业应用中 PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万
能算
法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研发人员来
讲,应该
是足够应对一般研发问题了,而难能可贵的是,在我所接触 的控制算法
当中,PID 控
制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的
经典。经典的未必
是复杂的,经典的东西常常是简单的 ,而且是最简单的 ,想想
牛顿的力学三大定律
吧,想想爱因斯坦的质能方程吧,何等的简单 !简单的不是
原始的,简单的也不是落后
的 ,简单到了美的程度。先看看
PID
算法的一般形式:
+
积分环节
PID
的流程简单到了不能再简单的程度,通过误差信号控制被控量 ,而控制
器本身
就是比例、积分、微分三个环节的加和。这里我们规定 (在
t
时刻)
:
1.
输入量为
r in (t) ;
2.输出量为 rout (t) ;
3. 偏差量为
err (t) =r in (t) -rout (t) ;
pid 的控制规律为
r
T
n
d
e
厅
(
t
)
u
(
χ
)
二
k
p(
err
(
t
)
+
T
·
er
r
(
t
)
dt+
u
,.,4-
理解一下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境
具体一
下:
1.
规定这个流程是用来为直流电机调速的 ;

2
.
输入量
r
in
(
t
)
为电
机转速预定值
;
3
.
输出
量
rout
(
t
)
为电
机转速
实际
值
;
4.执行器为直流电机 ;
5. 传感器为光电码盘,假设码盘为 10 线;
6.
直流电机采用
PWM
调速 转速用单位 转/
min
表示;
不难看出以下结
论:
1. 输入量
r in
C
t
)
为电机转速预定值 (转/min ) ;
2.
输出
量
rout
(
t
)
为电机转
速实际
值
(转
/
min
)
;
3
.
偏
差量
为预定值和
实际
值之
差
〈
转
/
min
)
;
那么以下儿个问题需要弄清楚:
1.
通过
PID
环节之后的
u
(
t
)
是
什
么
值呢
?
2.控制执行器 (直流电机) 转动转速应该为电压值 (也就是 PWM 占空比)。
3.
那么
u
(
t
)
与
PV
刚
之间存在
怎样的
联系
呢
?
htto:
//
blog.
21ic.
com
/
us
e
r
l/3407
/
archi
ves
/
2006
/33
541.
html
(
见附
录
1)
这
篇
文
章
上给出
了
一
种方
法
,
即
,
每个电压对应一个转速
,
电
压和转速之间
呈
现线
性关系
。但是
我考虑
这种方
法的
前
提是把直
流电
机的
特性理解为线
性
了
,
而实际
情况
下
,
直
流电
机的
特性绝对
不是线性的
,
或者说在局部上是
趋于线
性的
,
这
就
是为什么说
PIO
调速有
个
范
围的问
题
。具体
看
一
下
http://articles. e-works. net. cn/ component /article90249. htm
(见附录
2)
这篇文章就可以了解了。所以在正式进行调速设计之前,需要现有开环系统 ,测
试电机和转速之间的特性曲线 (或者查阅电机的资料说明) ,然后再进行闭环
参 数整定。这篇先写到这 ,下一篇说明连续系统的离散化问题。并根据离散化后
的 特点讲述位置型
PID
和增量型
PID
的用法和
C
语言实现过程。

’
F
PID 控制算法的 C 语言实现二 PID 算法的离散化
上一节中,我论述了
PID
算法的基本形式,并对其控制过程的实现有了一个
简要的说明,通过上一节的总结 ,基本已经可以明白
PID
控制的过程。这一节中
先继续上一节内容补充说明一下。
1.
说明一下反馈控制的原理,通过上一节的框图不难看出,
PID
控制其实是
对偏
差的控制过程 ;
2. 如果偏差为 0,则比例环节不起作用,只有存在偏差时 ,比例环节才起作用。
3. 积分环节主要是用来消除静差 ,所谓静差 ,就是系统稳定后输出值和设定
值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系
统上以抵消系统造成的静差。
4. 而微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差
信号的变化趋势来进行超前调节,从而增加了系统的快速性 。
好了,关 于
PID
的基本说明就补充到这里,下面将对
PID
连续系统离散化,
从而方便在处理器上实现。下面把连续状态的公式再贴一下
:
r
T
nderr
(
t
)
u(
x
)
=
k
p
(
er
r
(
t
)
+
T
·
.J
err
(
t
)
d
t
十
U
,,.J
假设采样间隔为
T
,则
在
第
K
T
时刻
:
偏
差
err
(K)
=r
in
(K)
-
rout
(K)
;
积分环
节用
加和的
形式表
示
,
即
err
(K)
+err
(
K+l
)+
;
微分环
节
用斜率的
形式表
示
,即
[
err
(K)
-
err
(K-
1
)
]
/T
;
从而形
成
如下
PID
离散表
示
形式
:
毗
)
K
阳
r
(
k
)
吱
L
err
(
j
)
+
手
(
err
(
k
)
-e
rr
(
k
一
1
)))
则
u
(
K
)
可表
示
成为
:
u
(
k
)
=
K
,J_
err
(
k
)
+
K
;
err
(
J
)
+
K
d
(
err
(
k
)
-
er
r
(
k
-
l
)))

至于 说
Kp
、
Ki
、
Kd
三个参数的具体表达式,我想可以轻松的推出了 ,这里节省
时间,
不再详细表示了。
其实到这里为
止
,
PID
的基
本离散
表示形式
已
经出来了
。目前
的
这种表
述
形式属
于
位置型
PID
,
另
外
一
种
表
述方式为增量式
PI
D
,
由
U
上述表
达
式可
以
轻
易
得到
:
:
u
(
k
一
l
)
=
K
P
(
er
r
(
k
一
1
)
+
K
;
er
r
(
j
)
+
K
d
(
err
(
k
-
1
)
-
err
(
k
-
2
)))
那么:
&u
(
k
)
=k
p
(
e
厅
叫
k
)
-erro,{k
-l
) )
+
k.e
厅
叫
k
)
+ki
err
o
叫
k
)
1.
e
厅
刘
k
-l
)
+
erro
叫
k
『
2)
)
这就是离散化
PID
的增量式表示方式,由公式可以看出,增量式的表达结果和最
近三次的偏差有关,这样就大大提高了系统的稳定性 。需要注意的是最终的输出
结果应该为
u(
K
)
+增量调节值
;
PID 的离散化过程基本思路就是这样,下面是将离散化的公式转换 成为 C 语言, 从而实现
微控制器的控制作用。

PID 控制算法的 C 语言实现 三 位置型 PID 的 C 语言实
现
上一节中已经抽象出了位置 性
PID
和增量型
PIO
的数学表达式,这一节,
重
点讲解
C
语言代码的实现过程,算法的
C
语言实现过程具有一般性,通过
PIO
算法的
C
语言实现,可以以此类推,设计其 它算法的
C
语言实现。
第一步:定义 PIO 变量结构体,代码如下:
struct _pid {
float SetSpeed ;
float Actual Speed
;
float err ·
float err last ;
float
Kp,
Ki,
Kd ;
float voltage ;
float integral
;
}pid ;
//定义设定值
//定义实际值
//定义偏差值
//定义上一个偏差值
//定义比例 、积分、微分系数
//定义电压值 (控制执行器的变量)
//定义积分值
控制算法中所需要用到的参数在一个结构体中统一定义 ,方便后面的使用。
第
二部:初始化变量,代码如下:
void PID_init () {
pr
i
ntf
("PID
_
init
begin
\
n")
;
pid
.
SetSpeed
=
O.
O
;
pid
.
ActualSpeed
=
O.
O
;
p
i
d
.
err
=
O.
O
;
pid. err last=O.
O
;
pid. voltage=O.
O
;
pid. integral=O.
O
;
pid. Kp=0. 2 ;
pid.Ki=0. 015;
pid. Kd=0. 2 ;
pr intf ("PID_init end \n") ;
统一初始化变量,尤其是 Kp,缸,Kd 三个参数,调试过程当中,对于要求的控
制
效果 ,可以通过调节这三个量直接进行调节。
第三步:编写控制算法,代码如下:
剩余43页未读,继续阅读
资源评论

- 雷因哈鲁斯RaynHarrus2021-04-05真棒,6星好评
- ladygagada2019-09-23word文档,还有乱码

Carlos橘子柠檬
- 粉丝: 81
- 资源: 16
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
