找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1289|回复: 12
收起左侧

请教PID调用周期与PWM周期的关系

[复制链接]
ID:997026 发表于 2023-7-4 11:40 | 显示全部楼层 |阅读模式
大家好,

一直在思考一个问题,就是执行PID算法时,PID的调用周期与输出PWM的控制周期到底是什么关系?

通常比较好理解的是,PID调用周期与PWM控制周期是相等的,比如,假设PID算法调用周期是10s, 也就是10s执行一次PID算法,然后得出一个控制值,也就是每10s计算一次PID得出一个值用于控制PWM输出,假设此处控制端是继电器开关控制,那么得出的值主要用于控制继电器在一个PWM周期内开多少秒,关多少秒。
所以此时PWM的周期应该也是10s,比如计算得出的值是7,那么表示在一个PWM周期内开7s,关3s, 这个比较好理解,我也是这么用的。

但是我偶然看到很多算法里面提到,PID调用周期可以与PWM控制周期不想等,就是比如我的PID调用周期是1s,也就是1s计算一次PID得出一个继电器开的值,PWM周期还是10s,这个每隔1s计算出的PID值怎么用来控制10s的PWM呢?有点想不通,有没有哪位大神可以指教呢?

谢谢
回复

使用道具 举报

ID:883242 发表于 2023-7-4 13:11 | 显示全部楼层
PID周期远大于PWM周期。
回复

使用道具 举报

ID:94031 发表于 2023-7-4 13:56 | 显示全部楼层
如果PWM周期比PID周期长,可以在完成老PWM后再执行新PWM设置。
回复

使用道具 举报

ID:401564 发表于 2023-7-4 23:37 | 显示全部楼层
1,你可能还并不了解PID,就算了解了也并不一定真正的了解了
PID实际的运算只有+-*/,并没有微积分
2,PID更多的是实际的调试,你随便上网找一下,PID来去就那么几行代码,但并没有多少人说PID太简单了,就是因它的调试太难了,或者是说量太大了
3,PID要是像你这样,以10秒为一个周期的话,搞不好积分项几天都反应不过来,系统不是在振荡就是在去振荡的路上
4,PID的周期是远大于PWM周期的,你可以在论坛找一个PID控制的代码参考一下
5,如果PID周期是10S为单位,还不如设定一个上限和下限来得实在
6,目前为止,我没有见过继电器用PID控制的,也许是我见识少吧
回复

使用道具 举报

ID:997026 发表于 2023-7-5 12:37 | 显示全部楼层
Y_G_G 发表于 2023-7-4 23:37
1,你可能还并不了解PID,就算了解了也并不一定真正的了解了
PID实际的运算只有+-*/,并没有微积分
2,PID更 ...

实际上我已经做了产品,PID参数已经调试完成,并且已经出货,客户在用了,目前并没有什么问题,PID调用周期和PWM周期都是25s,运行的很好,我们调了几个月,现在这套参数非常稳定,没有任何问题。

我不知道你为何说出10s周期积分几天都反应不过来?难道应用场景不一样?
我的应用是必须最低10s周期的,是不能10s以下,甚至ms级的。
我提出的这个问题,也是我在做产品中衍生的问题,并不是心血来潮突发奇想。

而且可以狠负责的告诉你,继电器PID很多,你可能没见过,我做的产品就是继电器PID,可控硅PID都有。继电器PID需要选用电气寿命比较高的继电器,而且我的继电器是接交流不是直流,而且是接在交流接触器上,交流接触器线圈电流只有几百毫安,所以继电器的电气寿命可达百万,做得好配合稍微好点的继电器,电气寿命可达千万次,就和过零触发继电器原理一样,你理解的继电器可能是那种直接接在直流开关上,电流达到安培以上,我们不是这种,我们的应用电流非常小,类似于继电器在零点附近开关,大大延长电气寿命,用个几年一点问题没有。

另外,我说的PWM只是一个形象说法,便于理解问题,并不是你们理解的PWM,我这里的PWM指的是继电器开关时间,就是一个周期内开多少秒,关多少秒。因为我这个PID只是控制开关,并不控制功率。不必纠结PWM深层原理,只需理解开关时间这个概念即可。所以针对我问得问题,理解起来可能更清晰一些。

我感觉咱们说的不是一个东西,可能PID的应用场景不一样,你可能没做过我这种PID产品,很多人都说不清PID周期和PWM周期的关系,都是笼统的话,我没见过有一个人把这个问题说清楚,但我已经量产的产品中,我的PID调用周期就是和PWM一致的,如果不一致,会出现问题,我自己也没搞清清这个问题,所以我才来这里问这个问题。

我的PID算法也不是你们常用的那种网上比较简单的,我的PID算法非常复杂,复杂到我自己都看不懂原理,我只会用它而已,所以还需要遇到我这种类似问题的人一起交流下

回复

使用道具 举报

ID:94031 发表于 2023-7-5 13:41 | 显示全部楼层
hxdby 发表于 2023-7-5 12:37
实际上我已经做了产品,PID参数已经调试完成,并且已经出货,客户在用了,目前并没有什么问题,PID调用周 ...

你控制什么参数,是温度吗?
回复

使用道具 举报

ID:401564 发表于 2023-7-5 13:43 | 显示全部楼层
hxdby 发表于 2023-7-5 12:37
实际上我已经做了产品,PID参数已经调试完成,并且已经出货,客户在用了,目前并没有什么问题,PID调用周 ...

你那产品不就是锅炉嘛
有没有PID都一个样,很多这种产品直接就是开关控制
你的PID算法也只是你不会而已
温度控制也就是加个上限和下限
你把你的代码发上来,就能找到问题
只发PID部分的,这样就不会泄露商业机密了
回复

使用道具 举报

ID:451718 发表于 2023-7-5 20:31 | 显示全部楼层
不是任何地方PID都适用的,举两个列子,用1千瓦的功率的发热器,把100克水保持在60摄氏度,你该如何用继电器来控制加热? 然而,如果你只用10瓦的功率的发热器来加热100克水保持在60摄氏度,当然只用继电器就可以搞定了。
回复

使用道具 举报

ID:883242 发表于 2023-7-6 18:17 | 显示全部楼层
Y_G_G 发表于 2023-7-5 13:43
你那产品不就是锅炉嘛
有没有PID都一个样,很多这种产品直接就是开关控制
你的PID算法也只是你不会而已
...

国产继电器寿命撑死10万次,日本产的能做到20~30万次,金属疲劳是不可克服的,簧片酥了。能说出1000万次寿命的,说什么我都不信。
回复

使用道具 举报

ID:401564 发表于 2023-7-6 18:51 | 显示全部楼层
Hephaestus 发表于 2023-7-6 18:17
国产继电器寿命撑死10万次,日本产的能做到20~30万次,金属疲劳是不可克服的,簧片酥了。能说出1000万次 ...

宏发的还算诚实
安全使用说是有1万次
回复

使用道具 举报

ID:883242 发表于 2023-7-6 19:58 | 显示全部楼层
Y_G_G 发表于 2023-7-6 18:51
宏发的还算诚实
安全使用说是有1万次

我用的都是远小于触点电压电流,所以只测到簧片金属疲劳,如果按额定电压电流,应该是触点先消耗完毕。
回复

使用道具 举报

ID:1114950 发表于 2024-4-1 10:00 | 显示全部楼层
我使用的是可控硅PID控制锅炉,PID计算周期是1s,PWM周期也是1,但目前就遇到这样一个问题,锅炉到达期望温度,用去一些水,锅炉温度下降一两度,这时锅炉就需要很长时间靠i值累积把温度增加上来,如果加大i值系统又容易过冲,想请教下楼主的看法,还有关于我的PID计算和pwm周期,如果加大是否效果会好些,目前还是有3-4度的过冲
回复

使用道具 举报

ID:883242 发表于 2024-4-2 18:42 | 显示全部楼层
MDKW1 发表于 2024-4-1 10:00
我使用的是可控硅PID控制锅炉,PID计算周期是1s,PWM周期也是1,但目前就遇到这样一个问题,锅炉到达期望温 ...

跟周期无关,P、I、D三个参数是怎么来的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表