历史上的今天

今天是:2024年10月20日(星期日)

正在发生

2018年10月20日 | 用STM32F407玩控制—不完全微分PID控制

发布者:RadiantGlow 来源: eefocus关键字:STM32F407  不完全微分  PID控制 手机看文章 扫描二维码
随时随地手机看文章

常规pid算法有缺陷,主要有:1是当偏差发生突变时,微分作用仅在一个周期内起作用,这个也不合理,2是当输入PV值有噪声时,调节器输出波动大,这在前面的图中可以看到,这对机械执行机构不理,使执行机构容易坏,执行机构故障多,自然生产也就不稳定,所以工程上通常用不完全微分PID调节器,文献中有两种类型的不完全微分PID算法,一种是在常规PID算法后串一个一阶延滞环节(比如参见金以慧《过程控制》,即

Gc(s)=Kc*(1+1/(Ti*s)+Td*s)/(Tf*s+1),这种不完全微分PID算法,与前面讲的常规pid算法加过程值(PV)滤波有点相近,仅在设定(SP)有变化的情况下,调节器输出不同,其余情况下是一样的;另一种是在微分环节上串一个一阶延滞环节,这又分为2种,

第1种算法是:

Gc(s)=Kc*(1+1/(Ti*s)+Td*s/(Tf*s+1))

第2种算法是:

Gc(s)=Kc*(1+1/(Ti*s)+Td*s/(Td*s/KD+1))

第1种算法见诸西门子S7-300/400PLC的FB41功能块实现的PID算法中。

第2种算法见诸西门子DR系列调节器实现的PID算法中,如图1所示,图中Tv就是Td,vv就是KD,KD一般称为微分增益,工程上KD通常在5-10范围内取值,我们也采用这种不完全微分PID算法,且取KD=8。

滤波常数Tf可以在2-5sec范围内取值。

我们在《用单片机玩PID控制—从理想PID控制至先进PID控制_8》一文中,已经介绍过用离散相似法计算滤波环节,这里介绍用差分变换计算滤波环节:

1.将拉氏变换传递函数变换为微分方程,这里是滤波环节。

2.将微分方程变换为差分方程。

3.进行数值计算。

具体计算式:

y(k)=α*y(k-1)+(1-α)*x(k)

其中   α=Tf/(Tf+Ts)    Ts:采样时间,进一步

4.将数值滤波计算串在微分环节(或PID环节)后面。

5.转换为pid增量计算式。

6.c语言实现。

我们也可以将Td*s/(Tf*s+1)作为一个整体进行差分变换,再作数值计算,或者将Td*s/(Tf*s+1)转换为

(Td/Tf)*(1-1/(Tf*s+1)),再用离散相似法进行计算,这里略过。

采样时间,我们定为1sec,这可以满足过程控制的要求,在STM32F407中用定时器来实现周期循环,具体是用TIM_GetITStatus函数实现定时中断,pid控制算法就放在这个函数条件下,TIM_GetITStatus的用法如下(参见《F407固件库手册》):

ITStatus TIM_GetITStatus  ( TIM_TypeDef *  TIMx, 
  uint16_t  TIM_IT 
 )  

Checks whether the TIM interrupt has occurred or not.

Parameters:
TIMx,: where x can be 1 to 14 to select the TIM peripheral. 
TIM_IT,: specifies the TIM interrupt source to check. This parameter can be one of the following values:
TIM_IT_Update: TIM update Interrupt source
TIM_IT_CC1: TIM Capture Compare 1 Interrupt source
TIM_IT_CC2: TIM Capture Compare 2 Interrupt source
TIM_IT_CC3: TIM Capture Compare 3 Interrupt source
TIM_IT_CC4: TIM Capture Compare 4 Interrupt source
TIM_IT_COM: TIM Commutation Interrupt source
TIM_IT_Trigger: TIM Trigger Interrupt source
TIM_IT_Break: TIM Break Interrupt source
 

Note:
TIM6 and TIM7 can generate only an update interrupt.
TIM_IT_COM and TIM_IT_Break are used only with TIM1 and TIM8.
Return values:
The new state of the TIM_IT(SET or RESET). 

 

不完全微分PID控制的效果如图2所示,从图中可以看出,输出波动还是比较大,如对PV值作滤波,效果会好很多。

用STM32F407玩控制—不完全微分PID控制



用STM32F407玩控制—不完全微分PID控制


关键字:STM32F407  不完全微分  PID控制 引用地址:用STM32F407玩控制—不完全微分PID控制

上一篇:用STM32F407玩控制—史密斯预估补偿控制
下一篇:用STM32F407玩控制—常规PID控制

推荐阅读

3各种PID控制这节将介绍常规PID,史密斯补偿控制,模糊控制等,C语言程序及程序中变量均放在单片机中,没有用到扩展内存,由于STC89C52单片机的程序存储器容量为8K,所以,程序限制在8K以内,数据存储器用到了低128字节RAM和高128字节RAM(C语言中用idata声明),也用到了内部扩展256字节RAM(C语言中用xdata声明)。3.1理想PID控制PID算法如下: Gc...
据消息,新西兰克赖斯特彻奇国际机场引进了从日本机器人16日上岗,为游客提供互动服务。同事,克赖斯特彻奇国际机场也是新西兰第一个引入机器人的机场。 据悉,这款机器人名为Pepper,由日本软银机器人公司开发,近年来已经销往多个国家。它身高120厘米,大眼圆脸,可识别人脸部表情,响应胸部触摸屏上的输入指令,并进行对话。它不仅可以给人指路,还...
据外媒报道,当地时间10月19日,LG集团旗下子公司、电子产品零部件制造商LG Innotek宣布,已经成功研制全球功率损耗最低的高效率铁氧体材料,这一成果可让LG Innotek在电视和汽车功率市场上占据主导地位。高效率铁氧体(图片来源:LG Innotek)铁氧体是一种以氧化铁为主要原料的磁性材料,铁氧体粉末通常被硬化成瓦片形状,用作工业用途,如安装在电视...
TIM4是一个8位通用定时器,TIM4工作时,其计数器从0开始向上计数,计数到TIM4_ARR寄存器中设置的值时,计数器从新从0开始计数,同时产生一个计数器溢出事件。程序实例void main(void){ InitLED(); InitTIM4(); asm("ris"); TIM4_CR1 |= 0X01; while(1){}}InitTIM4();为 TIM4 初始化函数,起作用是设置 TIM4 的相关寄存器,使 TIM4 每...

史海拾趣

问答坊 | AI 解惑

关注仪表类的进来交流交流(也回歹匕示申)

今年可能不光是波形发生,可能还要进行特性分析什么的.比如失真度测试仪.要用到FFT,另外还要采集数据.AD,RAM之类的都会涉及吧.先传点,大家有这方面的资料多多共享!…

查看全部问答∨

波形发生器

AD9833是ADI公司生产的一款低功耗,可编程波形发生器,能够产生正弦波、三角波、方波输出。20到20KHZ。可以通过3个串行接口将数据写入AD9833,这3个串口的最高工作频率可以达到40MHz,易于与DSP和各种主流微控制器兼容。AD9833的工作电压范围为2.3V ...…

查看全部问答∨

FPGA的单片机多机串行通信网络

本帖最后由 paulhyde 于 2014-9-15 09:32 编辑 FPGA的单片机多机串行通信网络  …

查看全部问答∨

FPGA实现等效采样

本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 太难啦 我纠结了一个星期了都。不知道怎么解决地址问题和RAM的控制~~~纠结啊!  …

查看全部问答∨

竟然发现了50年前的残骸!

一只半截的固定矿石,旋开堵盖,看到锡箔团,挑出锡箔,发现了矿石。可以DIY活动矿石了。哈哈! 顺便请教,1图下的二极管是不是也相当固定矿石呀? …

查看全部问答∨

求助关于 C51 的问题

我的C51版本是 8.12 现在有点问题,如下的程序 ACC=Data; for(i=8;i;i--) { ACC=1; C:0x1B03    C3       CLR      C C:0x1B04    13       RRC    ...…

查看全部问答∨

mc55 gprs发送at命令的问题

在建立gprs 连接gprs主站 都成功后   就是打开gprs服务   为什么我发at^siso=1出错呢   有什么情况可能导致出错呢 谢谢…

查看全部问答∨

如何开发嵌入式产品”

与日常生活中的大多数事务一样,设计一个嵌入式产品的过程也必须从确定目标开始,对生产的产品进行明确定义。对产品进行定义主要是对产品是什么和能有什么功能进行描述,其次是在我们的整个开发过程中,应该要撰写一些开发文档,大概的框架的如下: ...…

查看全部问答∨

wince usb client driver

我用的pxa270,wince6.0与PC机同步使用usb-serial,还是usb-RNDIS,注册表怎么设呢?还有在硬件设计上,我们没有接正5伏,只接了D+,D-,和地线,D+是接了GPIO的,我要用ms的bsp的话,需要做哪些处理,在什么时候把GpIO拉高,拉高后还需要把GPIO设 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved