shi7025159
级别: 略有小成
精华主题: 0
发帖数量: 37 个
工控威望: 201 点
下载积分: 468 分
在线时间: 15(小时)
注册时间: 2022-10-19
最后登录: 2024-12-19
查看shi7025159的 主题 / 回贴
楼主  发表于: 50天前
管路A和管路B要同时从0升压到10Bar,并且在升压过程中管路A和管路B的压差不能超过0.1Bar。升压过程是阶梯式升压,每隔10秒左右上升一个阶梯0.2Bar,在升压过程比如发现A管道压力比B管道的压差超过0.1Bar了就要暂停A管道升压,把B管道压力先拉上来。实现这个过程有没有好的算法思路吗?
shi7025159
级别: 略有小成
精华主题: 0
发帖数量: 37 个
工控威望: 201 点
下载积分: 468 分
在线时间: 15(小时)
注册时间: 2022-10-19
最后登录: 2024-12-19
查看shi7025159的 主题 / 回贴
1楼  发表于: 49天前
引用
引用第3楼gxtmdb82164于2024-10-31 14:31发表的  :
用增量式PID,即只控制输出的变化量,当达到条件或者不满足启动条件的时候输出增量为0,增量命令同时给到A和B,不用管A和B当前的状态,往目标值奔就行了

然后两个管道的压力取最接近目标值的压力作为主命令变量(ABS(误差)),另外一个跟随,当跟随误差过大时直接切掉上面PID的输出,即用两管的压力差作为PID运行的条件,当切掉输出后,因为是增量式的,增量命令为0但是目标值还在,会等到A和B都跟上来了,且满足条件的情况下,继续运行。

如果是气体的压力控制,上面这种做法有个好处就是可以忍受超调,因为大概率在接近目标值附近的时候A和B会来回震荡,而且这个过程是非线性的,不容易找到规律,但是因为不关注具体哪个超调了,只有一套规则,会更容易调试到稳定的状态。


嗯,好的,我试试这种方法,谢谢