技术论坛

采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的

作者 主题
侠客

经验值: 872
发帖数: 203
精华帖: 2
主题:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 2012-05-31 15:40:55
自己遇到PLC内部PID算法无输出,与众多网友一样,调试无果,最后将自己写的PID增量式算法下载进程序。控制的是比例阀,对出口压力进行控制,运行非常稳定。此算法可以用于欧姆龙,三菱等多种PLC已经用于项目试验,获得很好的效果
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=993316&b_id=50&s_id=0&num=29

qhb
侠圣

经验值: 4094
发帖数: 239
精华帖: 1
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 1楼 2012-06-02 09:48:16
发上来让大家学习学习
 
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 2楼 2012-06-02 17:55:00
要得,周一有时间我传上来,其实百度文库里面都是关于这方面的知识,而且算法都是一样的,有PID位置式,和PID增量式,但一般都采用增量式,算法方程星期一贴上来
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
至圣

经验值: 18406
发帖数: 6291
精华帖: 137
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 3楼 2012-06-03 11:51:31
quote:以下是引用简简单单过着在2012-05-31 15:40:55的发言:
自己遇到PLC内部PID算法无输出,与众多网友一样,调试无果,最后将自己写的PID增量式算法下载进程序。控制的是比例阀,对出口压力进行控制,运行非常稳定。此算法可以用于欧姆龙,三菱等多种PLC已经用于项目试验,获得很好的效果

1200自带的PID不会不能用吧?你遇到的是什么现象?无输出是什么意思?
追求完美
以下网友喜欢您的帖子:

  
侠圣

经验值: 3461
发帖数: 1845
精华帖: 6
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 4楼 2012-06-03 13:08:33
1200自带的PID可以使用的,没问题,试验用过。
但是没有用在项目上过,不知道效果到底如何。

期待看看楼上上传的程序哦
Better and More !
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 5楼 2012-06-04 08:45:50
自带PID能够用,但是感觉特容易出错,经常无输出,奉劝大家别用自带的,到时候搞的心力憔悴不说,关键是无果。
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
版主

经验值: 76199
发帖数: 19143
精华帖: 378
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 6楼 2012-06-04 11:39:05
绝大多数的人还是会使用系统集成PID的功能块的,究竟有没有问题,还是大多数人说了算,楼主的一家之言不能说明什么.
话再说回来,你劝大家不要用集成PID,那用谁的?你的吗?
Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
qhb
侠圣

经验值: 4094
发帖数: 239
精华帖: 1
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 7楼 2012-06-04 14:13:44
我用过自带的PID控制,我碰到的无输出是因为输入传感器问题引起PID控制器出错。把传感器搞好后需要把运行模式设为1,然后再设为3就可以解决
 
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 8楼 2012-06-04 17:28:25
我也是那样用的,但是出现了问题,然后我看网上很多人也出现了同样的问题
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 9楼 2012-06-04 17:29:54
quote:以下是引用Automann在2012-06-03 11:51:31的发言:
quote:以下是引用简简单单过着在2012-05-31 15:40:55的发言:
自己遇到PLC内部PID算法无输出,与众多网友一样,调试无果,最后将自己写的PID增量式算法下载进程序。控制的是比例阀,对出口压力进行控制,运行非常稳定。此算法可以用于欧姆龙,三菱等多种PLC已经用于项目试验,获得很好的效果

1200自带的PID不会不能用吧?你遇到的是什么现象?无输出是什么意思?

应该是能够用的,反正我用不好,打电话也问了西门子公司,时好时坏的。
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 10楼 2012-06-04 17:31:01
quote:以下是引用Zane在2012-06-04 11:39:05的发言:
绝大多数的人还是会使用系统集成PID的功能块的,究竟有没有问题,还是大多数人说了算,楼主的一家之言不能说明什么.
话再说回来,你劝大家不要用集成PID,那用谁的?你的吗?

可能是我自己原因没调好吧。
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 11楼 2012-06-05 08:04:29
quote:以下是引用qhb在2012-06-04 14:13:44的发言:
我用过自带的PID控制,我碰到的无输出是因为输入传感器问题引起PID控制器出错。把传感器搞好后需要把运行模式设为1,然后再设为3就可以解决

siemens已经给出了解决方法 。参见:
《当 PLC 控制器断电再上电或者出现非法值时,如何防止 S7-1200 PID 紧凑型控制器出现未激活状态?》
https://support.automation.siemens.com/CN/llisapi.dll/46163827?func=ll&objId=46163827&objAction=csView&nodeid0=34612486&lang=zh&siteid=cseus&aktprim=0&extranet=standard&viewreg=CN&load=content&csQuery0=pid&subtype=130000
 
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 12楼 2012-06-07 11:58:09
不好意思哟,我上传不了图片我写成文字的方式,你们按照这个方式编写就可以了
偏差2=偏差1
偏差1=偏差2
偏差=设定值-测量值
比例项=比例系数x(偏差-偏差1)
积分项=比例系数x采样周期x偏差/积分时间
微分=比例系数X微分时间x(偏差-2x偏差1+偏差2)/采样时间
增量=比例项+积分项+微分项
输出=前次输出+增量
这个里面就是套用PID增量式的公式计算的,已经用于工程中,很稳定
欧姆龙的可以用C语言编写,西门子1200的用梯形图编写稍微有点繁琐
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
游民

经验值: 140
发帖数: 24
精华帖: 0
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 14楼 2012-06-07 23:40:40
楼主, 偏差2=偏差1, 偏差1=偏差2 没看懂, 能说的更清楚些吗
 
以下网友喜欢您的帖子:

  
qhb
侠圣

经验值: 4094
发帖数: 239
精华帖: 1
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 15楼 2012-06-08 07:49:46
最好把程序发上来,大家共同学习
 
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 203
精华帖: 2
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 楼主 16楼 2012-06-08 08:31:41
前面两句应改为:
偏差2=偏差1
偏差1=偏差
倒是输入快了,不好意思哈
专业自动化系统、焊接机械手、设计、制造 成都迈睿科技有限公司
以下网友喜欢您的帖子:

  
游民

经验值: 140
发帖数: 24
精华帖: 0
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 17楼 2012-06-08 21:59:07
请问楼主, 比例系数和积分和微分系数大致的范围是多少,采样时间一般多少合适, 偏差值需要量化到0~1之间吗
 
以下网友喜欢您的帖子:

  
游民

经验值: 149
发帖数: 16
精华帖: 0
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 18楼 2012-06-08 23:06:56
IF Mode = true THEN
e:=(Pv-Sv);
ELSE
e:=(Sv-Pv);

END_IF;
IF ABS(e)e:=0;
ELSIF ABS(e)>MAXE THEN
B:=0.0;
ELSE b:=1.0;
END_IF;
IF AM=TRUE THEN
KP_V:=Kp*(e-e1);
KI_V:=B*Ki*e;
KD_V:=Kd*(e-2*e1+e2);
FF_LAST:=FF-FF_LAST1;
OutLast:=KP_V+KI_V+KD_V+FF_LAST+OutLast;
MV:=OUTLAST;
ELSE
OutLast:=MV;
SV:=PV;
END_IF;


IF OutLast>LimitHigh THEN
OutLast:=LimitHigh;
ELSIF OutLastOutLast:=LimitLow;
END_IF;
e2:=e1;
e1:=e;
FF_LAST:=FF;
FF_LAST1:=FF_LAST;
Out:=OutLast;
 
以下网友喜欢您的帖子:

  
游民

经验值: 149
发帖数: 16
精华帖: 0
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 19楼 2012-06-08 23:08:09
Sv:REAL;//设定值
Pv:REAL;//采样值
Kp:REAL:=1.0;//比例系数
Ki:REAL:=0.01;//积分系数
Kd:REAL:=0.0;//微分系数
LimitHigh:REAL:=100.0;//输出最大值
LimitLow:REAL:=0;//输出最小值
AM:BOOL;//手自动
MV:REAL;//手动值
SQ:REAL;//死区
Mode:BOOL;//正反作用选择
FF:REAL;//前馈信号
MAXE:REAL:=50;//积分分离阙值
 
以下网友喜欢您的帖子:

  
游民

经验值: 140
发帖数: 24
精华帖: 0
回复:采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的


只看楼主 20楼 2012-06-09 13:14:59
楼主, 首先感谢你的贡献, 使大家能够分享你的成果.
我有个问题,请你指教
程序里的 FF:REAL;//前馈信号 前馈信号是什么,怎么得来的
 
以下网友喜欢您的帖子:

  
收起
采用增量式算法编写S7-1200PID程序,成功解决调试自带内部PID烦恼,大家都来看看哟,我会将我的程序上图的
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。