发新帖我要提问
12
返回列表
打印

PID算法的输出如何与PWM的占空比相对应

[复制链接]
楼主: jiero39
手机看帖
扫描二维码
随时随地手机跟帖
21
原野之狼| | 2014-12-10 20:13 | 只看该作者 回帖奖励 |倒序浏览
牛人都在忙着挣钱

使用特权

评论回复
22
原野之狼| | 2014-12-10 20:16 | 只看该作者
没人答的话就采用[帮帮答]功能

使用特权

评论回复
23
jiero39|  楼主 | 2014-12-10 20:35 | 只看该作者
cuya 发表于 2014-12-10 01:15
首先理解有误。
PWM控制量的最大值是加载在pwm驱动上的直流电压, 为固定值, 与Kp, Ki 无关。占空比为 1  ...

非常感谢您的回复!  
       在项目中,我的PWM波是给固态继电器的输入端,固态继电器的输出端是220V的交流电。220V的交流电给陶瓷加热棒。PWM波控制固态继电器的通断,固态继电器通时交流电给陶瓷加热棒加热,固态继电器断时,没有交流电输入到加热棒,就不加热。
     所以,对于您说的“ 占空比为 0.5 时, 理论上的输出为直流驱动电压的一半.”等,有
点儿没理解透

使用特权

评论回复
24
jiero39|  楼主 | 2014-12-10 20:37 | 只看该作者
原野之狼 发表于 2014-12-10 20:16
没人答的话就采用[帮帮答]功能

呵呵呵,谢谢版主的提醒:lol

使用特权

评论回复
25
k_ryan| | 2014-12-10 21:55 | 只看该作者
jiero39 发表于 2014-12-10 20:04
非常感谢您的回复,让我启发不少!但是,我还是有两个问题:
     1、16位定时寄存器的范围是0~65536,对 ...

你好!
按照我的理解,回答你两个问题。
1、我上面说的就是这个意思
2、我觉得用增量式和位置式都行的,
   我的理解,增量式其实是从位置式推导的,所以两者都能得到你想要的结果。
   我认为你的理解没错的,不过应该还可以按照实际要求改进一下。

我控制的对象和你不一样,我的阀值的设置值是因为系统有限制,不能取太大的占空比。
所以你的阀值是否需要取舍,要根据你的系统来设定的。

其实我也是第一次做PID,我的理解不一定正确。你可以参考一下。

我以前在这里也问过PID的问题,当时项目做了一半,我调了做其他项目,
现在又重新回来做这个项目。
下面是链接:
https://bbs.21ic.com/forum.php?mod=viewthread&tid=378241&epclose=1

使用特权

评论回复
26
cuya| | 2014-12-11 00:05 | 只看该作者
我的PWM波是给固态继电器的输入端,固态继电器的输出端是220V的交流电。220V的交流电给陶瓷加热棒
这是一个简单粗糙的 pwm, 占空比为1时全开加热,0.5时为一半全能量加热,以此为控制。
你要做的首先是了解你的系统, 比如 pwm 的参数,以及pwm如何实现控制系统等等。从你认为 Kp 可以消除这点可以看出,你对一些基本而且简单的理论概念了解的不够。坦率的说,没有人愿意长篇大论的解释基本概念。


你好,请问“加热之类的控制,用PI 即可”这个理论怎么得出的呢?
如果控制直流电机呢?是不是也用PI就行
加热之类的控制, 有一个滞后以及很大的热时间常数,远大于pwm的周期。微分的作用主要是控制对象变化时可以产生一个控制量(无变化时为0)用以加快相应速度, 但也很容易引入干扰。

由于我用的是积分分离的位置式(个人感觉对于没有**特性的执行机构,位置式和增量式都一样。因为在增量式中
增量式和位置式没有本质区别,只是计算方式的不同。其实积分分离位置式相对应该最容易简单的,特别是用定点计算是,增量式更需要留意溢出问题,当然浮点就不存在这类问题了。安照楼主的系统,完全可以使用浮点运算。


使用特权

评论回复
27
dragonhux| | 2014-12-11 16:01 | 只看该作者
本帖最后由 dragonhux 于 2014-12-11 16:02 编辑

(PID控制量的最大值—0),这个应该可以灵活处理,用最大值没有问题,只是如果只是到最大值才采用最大的加热功率,这样加热的利用率是不是太低了
只要PID的输出不大于你设置的最大值就可以了,最大值可以设置比最大控制量小,其它的当到达最大功率的时候PID会自动进行调整

使用特权

评论回复
28
dragonhux| | 2014-12-11 16:03 | 只看该作者
另外,注意一点,就是一定要做到抗饱和

使用特权

评论回复
29
cauhorse| | 2014-12-11 16:47 | 只看该作者
1.采用定时器或设定比较寄存器的方式控制PWM输出,输出极大值不能超过定时周期;你的上限最大就是定时周期了,为全开;至于全关,可以设成0,可靠起见,可以进一步关闭PWM输出。
2.采用何种算法与是否存在“全速加热”状态没有必然联系。如果一开始ek足够大,也就是设定值远高于反馈值,那么首次比例输出Kp*ek也是极有可能让输出值超过你的“全速加热”上限值的;
实际上,用于电阻炉或是干燥箱的话,楼主就会发现大部分加热设备在刚开启时总会以最大功率输出,因为此时目标值离设定值尚远,为快速加热,功率是完全打开的,直到接近目标温度时,才会进入开关状态;
楼主将KP值设大一些,让装置一开始就能全功输出,那么开始加热过程就会出现“全速加热”状态了。
所以,实际上,这是一个PID参数整定问题,而不是你的算法问题。

使用特权

评论回复
30
yangshoot| | 2014-12-11 20:07 | 只看该作者
用PID算法,关键是采样时间。采样时间太短影响积分和微分

使用特权

评论回复
31
受不了了| | 2014-12-11 21:24 | 只看该作者
去买只余姚的温控仪研究一下

使用特权

评论回复
32
樱枫杰1993| | 2017-8-10 16:31 | 只看该作者
jiero39 发表于 2014-12-10 20:04
非常感谢您的回复,让我启发不少!但是,我还是有两个问题:
     1、16位定时寄存器的范围是0~65536,对 ...

你好,对于你的第一个理解,我觉得是对的,实际上PID输出的控制量属性是你可以自己定义的,你可以把它定义成占空比,你也可以把它直接定义成定时器寄存器的值,区别也就是PID三个参数的变化,但最后效果是一样的。对于你的第二个理解的话,增量式的有点永远都在的,即便是没有**的执行机构,用增量式也依旧保持着它的优点,因为第一次原始的PID输出控制量计算很简单,只要积分一次,之后就再也不用积分了,并且甚至第一次的控制量你可以自己随意的定义一个,反正也就用那么一次,对之后的PID计算不成影响

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则