2024山东省济南市SIEMENS西门子(授权)中国华东地区一级总代理商

供应商
广东湘恒智能科技有限公司
认证
变频器
西门子代理商
触摸屏
西门子一级代理
伺服电机
西门子一级总代理
联系电话
18126392341
手机号
15267534595
联系人
梁涛
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)(注册地址)
更新时间
2024-06-02 09:10

详细介绍

pid算法程序




积分,微分,滤波,死区,限制等功能都做成fb块,每个fb块都可以单独实现相应功能。pidfb块通过调用以上这些fb块实现pid算法。

积分算法-梯形法程序



积分算法fb

一般来说,在程序fb块中规定输出变量只负责输出,不参与计算,所以设置静态变量staty用于中间计算,在程序的后在赋值给输出参数y。

在积分fb块中还加入了set设置与hold保留功能,可以在手自动无扰切换和抗饱和时使用。

程序的结构

·如果启用set 设置,staty值等于积分设定值;

·如果启用hold积分保持, staty等于上次扫描值;否则按照梯形公式计算积分值。statxn-1是上一个扫描周期采集的输入信号,与本次扫描周期的输入信号相加,再乘以扫描周期并除以2;

·基于pid公式,将计算结果除以积分时间;

·然后把计算的数据加上上一个扫描周期计算积分数据,从而实现累加;·随后保存本此扫描的输入值以及积分值;

·在程序的后赋值输出变量y。

微分算法程序



微分算法fb

微分算法相对来说比较简单。

根据公式使用本次扫描输入值减去上次扫描的输入值,除以扫描周期再乘以微分时间就可以了,然后保存本次扫描的输入值。

如果在pid计算中不使用微分环节直接把微分时间设置为0就可以实现。

底通滤波算法



其实有了积分算法与微分算法,即可以组合成基本的pid控制功能块了。

但是为了消除反馈值波动对微分环节的影响还是需要加上低通滤波环节。

我们先来看一看低通滤波的程序,根据公式,本次扫描的输入值减去上一次扫描的输出值,然后乘以扫描周期再除以平滑时间,后加上上一次扫描的输出值就可以了。




加入低通滤波算法对pid控制块有什么影响呢?我们来看一个对比实验。

实验是给反馈值加一个干扰量,然后在其它条件都一样的情况下,分别观察没有低通滤波与带有低通滤波pid控制效果。

·左边的程序代码不带低通滤波,偏差值等于设定值减去反馈值。

·右边的程序代码带有低通滤波,偏差值等于设定值减去滤波后的反馈值。

对比一下两种算法的trace曲线。

其中红色线是pid块的输出值,绿线是pid块的微分值,蓝色线是pid块实际值。可以看到,在反馈值突变的瞬间,

·左边不带低通滤波的微分值达到了-170多,从而导致输出值到达低限0.

·而右边带有低通滤波的微分值多也就达到-17,输出值也只有30,没有超过低限。因为无法人为避免反馈值的突变,所以为pid系统添加低通滤波是很有必要的。


死区控制


除了滤波,还要添加死区控制。

上一节课说到死区控制有两种方法,第一种方法比较简单。

编程实现控制逻辑︰

如果输入值x大于负边界,并且小于正边界,输出值等于0,否则输出等于输入。

第二种方法比较复杂一点,

如果输入×大于负边界,并且小于正边界,输出等于0。否则,

当×大于正边界时输出丫等于x-边界juedui值,当x小于负边界时,y等于x加边界juedui值。

同理进行比对实验,在其它条件都一样的情况下为系统加一个反馈值干扰量,观察这两种方法的效果。因为方法1和方法2都已经做成了fb块,所以调用不同的功能块就可以分别实现两种方法

仍然使用trace功能来对比两种方法。

图中红色线是偏差值,蓝色线是pid微分值,绿色线是pid输出。

可以很明显的看到在死区边界,方法1由于偏差值的突变,引起微分值的突变,从而导致pid输出值震荡。但是方法﹖偏差值就没有明显的突变,不会引起微分值的异常。


积分抗饱和


具体的算法程序是:

当偏差为正,并且超过输出上限的情况下,或者偏差为负,并且超过下限的情况h冻结积分操作。

否则,积分操作正常执行。

同理进行比对实验,在其它条件都一样的情况下为系统加一个反馈值干扰量,观察积分抗饱和的作用。

trace图中红线是设定值与反馈值的偏差值,蓝线是pid的积分值,绿线是pid输出值。

可以看到如果取消积分抗饱和,输出达到高限时,积分值继续增长,只有偏差值为负后才开始减小,而带有抗饱和在输出到达高限时,积分值不变。

直接的结果就是:

在其它条件都相同的情况下,注释掉抗饱和pid输出值在25秒之后才趋于稳定,而带有抗饱和在20秒滞后就基本稳定了。


输出限制程序


接下来我们在看看输出限制的程序:

程序只是单纯的逻辑判断,没有数学计算,

如果输入×大于上极限y=上极限,并且置位上极限到达标志。否则如果×小于下极限y=下极限,兵器置位下极限标志。否则y=x。


无忧切换


后来看一看无扰切换的程序。

先看自动到手动的无扰切换,当pid处于自动模式时,把输出值给到手动值。注意程序中这个move指令是有条件的,只有自动时才执行。

手动到自动的无扰切换比较麻烦一些,需要在pid控制块中增加代码。具体原理我们上一节已经讲过,这里只讲如何编程实现。

当手动模式激活即manualon为true时:

输出中间静态变量statvalue等于手动输入值;

计算偏差积分值临时变量tempintvalue ;

使用积分块的设置功能,将tempintvalue设置成积分值。

下面,通过实验说明无扰切换的效果。实验的环境是这样的:

设定值设备50,pid块为手动模式,这时的手动值时20,输出值也是20.在这些条件下,把pid模式切到自动,观察系统的反应。

trace图中:

红线时pid输出,棕色线是pid积分值,粉色线是设定值反馈值偏差,蓝色线是手自动模从图中可以看到当pid模式切换到自动的瞬间︰

左侧,注释掉无扰切换的pid输出有一个跳变,而带有无扰切换的pid输出则很平滑。

原因在于pid在上一次自动模式切换到手动时,保留了一个48上白的n刀iafaninanasas

如果没有无扰切换,当pid再次切换到自动时,积分值从这个48开始计算,这会对pid输出造成影响。

如果带有无扰切换,在手模式时,这个保留的积分值会被计算的积分值替换。再次切换到自动时不会影响pid的输出。


代理商,变频器,PLC,伺服电机,一级代理

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话