搜索
bottom↓
楼主: tyw996

基于西门子PID程序的C程序代码(带自整定功能哦)

  [复制链接]

出0入0汤圆

 楼主| 发表于 2018-8-13 13:44:46 | 显示全部楼层
本帖最后由 tyw996 于 2018-8-13 13:52 编辑
工程师030 发表于 2018-8-12 09:39
楼主你好,我的温度输出周期为1.2s,输出调节周期,pid()调用周期也是1.2s。PWM周期1200ms,分120份。
CYCL ...


既然关闭了PULSE_ON,其相关参数就没改动的必要了,除了CYCLE=1.2,其它参数在没弄懂之前还是不要改动,多看看手册吧。
很好奇你的PWM输出能分出120份!?

出0入46汤圆

发表于 2018-8-13 15:45:11 | 显示全部楼层
tyw996 发表于 2018-8-13 13:44
既然关闭了PULSE_ON,其相关参数就没改动的必要了,除了CYCLE=1.2,其它参数在没弄懂之前还是不要改动, ...

问题解决了,多谢楼主,PWM其实是软件控制的,所以分多少份都可以。
现在就是得提高一下采样速度才可以。

出0入0汤圆

发表于 2018-8-13 17:10:21 | 显示全部楼层
下了不顶非好汉!

出0入0汤圆

发表于 2018-8-16 10:06:29 | 显示全部楼层
学习一下,非常好的资料。

出0入0汤圆

发表于 2018-8-16 10:07:34 | 显示全部楼层
好资料,谢谢分享

出0入0汤圆

发表于 2018-8-22 18:32:25 | 显示全部楼层
本帖最后由 sd_share 于 2018-8-23 10:08 编辑

重复,删除。。

出0入0汤圆

发表于 2018-8-22 18:44:01 | 显示全部楼层
这个确实是难得的好资料

出0入4汤圆

发表于 2018-8-22 19:37:06 | 显示全部楼层
不错 顶一个!!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2018-8-22 21:32:46 | 显示全部楼层
正缺这个东西,谢谢楼主!

出0入0汤圆

发表于 2018-8-22 23:50:14 来自手机 | 显示全部楼层
挺好的,再细节一些就更容易理解了,支持分享

出0入0汤圆

发表于 2018-8-23 10:39:01 | 显示全部楼层
本帖最后由 sd_share 于 2018-8-23 10:50 编辑

不好意思,发错

出0入0汤圆

发表于 2018-8-23 10:51:01 | 显示全部楼层
tyw996 发表于 2018-8-13 13:44
既然关闭了PULSE_ON,其相关参数就没改动的必要了,除了CYCLE=1.2,其它参数在没弄懂之前还是不要改动, ...

楼主您好,你的帖子对我帮助很大,可否加好友请教下,万分感谢

出140入115汤圆

发表于 2018-8-23 10:52:23 | 显示全部楼层
感谢楼主,效果非常不错。

出140入115汤圆

发表于 2018-8-23 11:03:27 | 显示全部楼层
系统采用滞后30-40S,自整定非常不理想。
PID参数整定方法采用工业控制中常用的滞后控制参数整定模型(Ziegler-Nichols参数整定方法):


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2018-8-24 08:18:49 来自手机 | 显示全部楼层
这个代码好复杂,能用,没看懂!

出0入0汤圆

发表于 2018-8-24 08:43:03 | 显示全部楼层
多谢谢楼主,学习一下PID

出0入0汤圆

发表于 2018-8-25 22:39:54 | 显示全部楼层
请问楼主,自整定过程中比例(GAIN)出现INF(无限大)一般是由于啥原因?

出0入0汤圆

发表于 2018-8-26 00:11:55 | 显示全部楼层
谢谢分享非常不错

出0入0汤圆

发表于 2018-8-26 23:30:53 | 显示全部楼层
请问楼主,加热对象为水,不开启脉冲
CYCLE = 100ms
TU = 1S
TA = 500S
TUN_DLMN = 20
采用设置SP_INT阶跃的方式
出来的GAIN值为何是INF?

出0入0汤圆

发表于 2018-8-27 18:18:35 | 显示全部楼层
这个我要好好学习一下.谢谢楼主.

出0入0汤圆

发表于 2018-8-27 18:50:47 | 显示全部楼层
我要加楼主,向楼主学习.

出0入0汤圆

发表于 2018-8-27 20:05:07 | 显示全部楼层
从手册TU和TA这两个参数看手册是滞后时间和过程时间常数
实际测出来TU=75S,TA=300S,但是用这两个值整定会出现30500
一直减小TU到0.1s才整定成功
目前配置的TU=0.1S,TA=100S,可以整定出一套参数来
但是用户具体的使用环境也许和我的测试环境不一样
这两个参数是否需要修改
请问TU,TA参数是否需要开放给用户配置
另外楼主您的理解这两个参数表示的是什么意思?

出0入0汤圆

发表于 2018-8-27 20:30:48 | 显示全部楼层
这个很实用,谢谢

出0入0汤圆

 楼主| 发表于 2018-8-28 09:57:36 | 显示全部楼层
本帖最后由 tyw996 于 2018-8-28 10:04 编辑
sd_share 发表于 2018-8-27 20:05
从手册TU和TA这两个参数看手册是滞后时间和过程时间常数
实际测出来TU=75S,TA=300S,但是用这两个值整定会 ...


TU和TA是系统内部计算出的参数,修改无实际意义;整定有时成功有时失败,说明整定条件不当,30500错误代码就说明了这一点。

出0入0汤圆

发表于 2018-8-28 18:39:07 | 显示全部楼层
Mark:带自整的PID控制C码

出0入0汤圆

发表于 2018-9-17 09:42:07 来自手机 | 显示全部楼层
翻一下,不错!

出0入0汤圆

发表于 2018-9-19 13:41:45 | 显示全部楼层
准备使用一下看效果

出0入0汤圆

发表于 2018-9-20 16:39:24 | 显示全部楼层
这个只适用于哪些场合呢,s级的场合可以吗

出0入4汤圆

发表于 2018-9-20 16:52:51 | 显示全部楼层
用了好几年了,帖子一直很火

出0入0汤圆

发表于 2018-9-20 16:54:36 | 显示全部楼层
顶一个!

出10入10汤圆

发表于 2018-9-20 21:13:18 | 显示全部楼层
请教楼主:只能用于温度控制吗?

出0入0汤圆

发表于 2018-9-20 21:15:01 | 显示全部楼层
西门子PID,mark

出0入0汤圆

发表于 2018-9-21 16:55:32 | 显示全部楼层
mark下,谢谢楼主

出10入10汤圆

发表于 2018-9-23 18:38:08 | 显示全部楼层

请教楼主:只能用于温度控制吗?

出0入0汤圆

发表于 2018-9-24 15:18:40 | 显示全部楼层
多谢楼主!标记,西门子PID程序及资料

出0入0汤圆

发表于 2018-9-24 19:42:49 | 显示全部楼层
楼主威武,后续学习下

出0入0汤圆

 楼主| 发表于 2018-9-26 08:22:21 | 显示全部楼层
szxszx 发表于 2018-9-23 18:38
请教楼主:只能用于温度控制吗?

适用于温度、压力等较慢速控制变量

出0入0汤圆

发表于 2018-10-18 21:57:40 | 显示全部楼层
tyw996 发表于 2013-6-1 09:29
单看原代码不好理解,当你看明白资料我想你也就会怎么使用了,至于PID算法,原程序我也看不明白的,只是别 ...

可以分享一下推导公式的链接吗?

出0入0汤圆

发表于 2018-11-14 19:55:03 | 显示全部楼层
  1. if(((rPvDelt < 0.8 * rSeek || ! sbSpChange) && QTUN_RUN && FIL_CYC < 1024 && siTime == 2) &&
  2.            (((siCycle > 6 && PVDT == 0.0 || siStatus == 999) || ((rNoiPvdt > 60.0 && siCycle > 7) && (POI_CYCL < 2 || srPvdt2 > 0.99 * srPvdtMax2))) || (rNoiPvdt > 5.0 && siCycle > 15 &&  POI_CYCL < 2)))
复制代码
这部分代码没看明白,能给详细说一下吗?

出0入8汤圆

发表于 2018-11-14 21:24:24 来自手机 | 显示全部楼层
好东东,关注,回头好好研究一下。

出200入0汤圆

发表于 2018-12-4 23:20:41 来自手机 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2018-12-5 18:11:16 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2018-12-8 15:50:47 | 显示全部楼层
mark,有需要再看看。。

出0入0汤圆

发表于 2018-12-8 16:51:22 | 显示全部楼层
楼主:您好!我现在调试电机,步骤如下:
(1) 用原代码的PID初始化参数(GAIN=2.0等)发现震荡,于是我自己改了初始化参数,已满足可以稳定。
(2)稳定PV到SP=30后,我就TUN_ON=1 并且SP=50,发现STATUS=21120。并且震荡+30比较严重。
这样一来
2xx2x 还未到达拐点(只是已经通过设定值阶跃变化进行了激励)如果控制器是振荡的,则弱化控制器参数,并使用一个较小的可调节变量差值TUN_DLMN 重复尝试。
2x1xx 估计偏差(TU < 3*CYCLE) 减少 CYCLE,然后重复尝试。特殊情况,纯粹的 PT1 处理:不要重复,可能弱化控制器参数。
21xxx 估计偏差 N_PTN < 1 在更好的条件下重复尝试
这三个错误都存在?我下一步如何调试?

接下来我进行了另外一组实验
(1)稳定
  (2) tun_on=1 tun_st=1 居然此时出现了status_h=30005.
这样说来,我的cycle!=PID调用周期?可是这样和第一实验不符合呀?

lz,请教请教啦!


出0入0汤圆

发表于 2018-12-10 00:00:36 | 显示全部楼层
西门子PLC 的PID自整定,MARK

出100入0汤圆

发表于 2018-12-18 08:31:46 | 显示全部楼层
yelang1124 发表于 2014-3-12 16:47
首先感谢楼主的热心解答,在此谢谢!,下面还有几个疑惑,还请楼主在百忙之余帮小弟看下,谢谢

        ...

前辈,能否把图片里的上位机软件分享下,最近也在研究楼主的算法,谢谢啦!

出100入0汤圆

发表于 2018-12-19 14:32:39 | 显示全部楼层
哪位前辈可以把实际调试的工程分享出来吗?移植到单片机程序里,运行起来挺奇怪的。整定环节瞬间从0到7,整定出来的参数无法使用。有谁能分享下这个算法入口的参数设置嘛?请赐教。

出0入17汤圆

发表于 2018-12-19 15:36:15 | 显示全部楼层
我想把这个代码移植到ebox上,楼主能提供点帮助吗?

出0入0汤圆

发表于 2019-5-11 09:24:57 | 显示全部楼层
好资料,支持分享

出0入0汤圆

发表于 2019-5-16 17:49:47 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2019-5-23 19:19:27 | 显示全部楼层
想问一下LZ,PULSE_ON = TRUE;整定结束后发现输出是一直打开的(QPULSE = TRUE ),非脉冲输出。怎样才能切换到自动控制?

出0入0汤圆

发表于 2019-6-27 15:07:56 | 显示全部楼层
你好 我下载的step 7-pid不是pdf格式的,你可以发我邮箱一份吗,谢谢!370860964@qq.com

出0入17汤圆

发表于 2019-6-28 08:56:54 | 显示全部楼层
楼主威武,已收藏~

出5入16汤圆

发表于 2019-6-28 10:48:03 | 显示全部楼层
手下研究一下,谢谢

出0入0汤圆

发表于 2019-9-20 09:43:25 | 显示全部楼层
shangheming 发表于 2019-6-27 15:07
你好 我下载的step 7-pid不是pdf格式的,你可以发我邮箱一份吗,谢谢!

自己改成PDF后缀就可以了!

出0入0汤圆

发表于 2019-10-30 16:55:13 | 显示全部楼层
学习一下,谢谢楼主

出0入0汤圆

发表于 2019-10-31 22:27:24 | 显示全部楼层
看看是怎么实现的

出0入0汤圆

发表于 2019-11-1 21:12:19 | 显示全部楼层
好东西,一直想做一个自整定PID,终于找到学习资料啦

出0入0汤圆

发表于 2019-11-5 19:09:37 | 显示全部楼层

mark ,以后慢慢看

出0入0汤圆

发表于 2019-11-5 19:26:17 | 显示全部楼层


mark ,以后慢慢看

出0入0汤圆

发表于 2019-11-5 20:05:26 | 显示全部楼层
PID用得好,就是人王

出0入0汤圆

发表于 2019-11-6 10:22:44 | 显示全部楼层
先收藏,抽时间研究一下.

出0入0汤圆

发表于 2019-11-6 20:03:46 | 显示全部楼层
很好的资料,正在研究,有个问题请问楼主,SELECT = 0,SELECT = 3,一个是快速周期中断调用,一个是慢速周期中断调用,那么请问怎么算快速?怎么算慢速?

出0入0汤圆

发表于 2019-12-1 21:31:39 | 显示全部楼层
这个代码确实很不错,断断续续的看了2个星期,今天终于移植完成上线试了。在STM32上面跑了起来,第一次用的时候还没整定,控制的效果是等幅振荡,然后开始第一次整定,发现一直处于阶段也就是一直在PHASE=2那里,后来仔细看发现是TUN_DLMN=25这个默认值太小,不足以让我的系统温度上升,接着就改为TUN_DLMN=100,再次进行整定,温度就上去了,很快就结束,一看状态代码STATUS_H=10000,正好是找到了合适的参数。然后用这套参数接着控制,确实非常稳定,设定温度在120°,基本是能稳定在±0.2°

出0入0汤圆

发表于 2019-12-8 10:57:54 | 显示全部楼层
楼主你好,很感谢你这个PID好资料,我已经在加热过程中使用的不错了,包括整定。最近应用在制冷,但是整定时总是返回30002,请问用于制冷需要配置哪里吗?

出0入0汤圆

发表于 2019-12-8 12:00:37 | 显示全部楼层
pid学习了,谢谢

出0入0汤圆

发表于 2020-1-2 10:01:05 | 显示全部楼层
为什么下载的名称和后缀都不对?

出0入0汤圆

发表于 2020-1-3 10:55:56 | 显示全部楼层
ap4115 发表于 2019-12-1 21:31
这个代码确实很不错,断断续续的看了2个星期,今天终于移植完成上线试了。在STM32上面跑了起来,第一次用的 ...

能不能把你的 加热的 部分 分享下,非常感谢! 397607437@qq.com

出0入0汤圆

发表于 2020-1-3 11:28:59 | 显示全部楼层
先看看!!!!!

出0入0汤圆

发表于 2020-1-3 12:35:17 来自手机 | 显示全部楼层
不错 改天测试一下

出0入0汤圆

发表于 2020-1-4 11:46:38 | 显示全部楼层
好资料,可以用来做温度控制器

出0入0汤圆

发表于 2020-1-9 22:31:03 来自手机 | 显示全部楼层
MARK一下,以后用得到

出0入0汤圆

发表于 2020-1-14 16:05:15 | 显示全部楼层
虽然没用,但是感觉好厉害

出0入0汤圆

发表于 2020-1-25 12:56:20 | 显示全部楼层
不错的资料,谢谢分享!

出0入0汤圆

发表于 2020-1-25 21:46:09 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-1-27 06:16:16 来自手机 | 显示全部楼层
谢谢,非常好的资料。

出0入0汤圆

发表于 2020-1-27 08:37:01 | 显示全部楼层
好资料,谢谢分享

出0入0汤圆

发表于 2020-3-22 10:19:38 | 显示全部楼层
xiefei123456 发表于 2020-1-3 10:55
能不能把你的 加热的 部分 分享下,非常感谢!

你好,其实楼主原来的代码基本不用改,就是调整一下TUN_DLM、采样周期,关键是要自己用一个定时器实现Time_zzd的计时就OK了。

出0入0汤圆

发表于 2020-3-22 10:37:31 | 显示全部楼层
MARK一下,顶一个

出0入0汤圆

发表于 2020-3-27 00:38:22 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-3-28 10:33:13 | 显示全部楼层
lans0625 发表于 2013-5-31 16:09
谢谢楼主,我找带自整的PID控制C码好几年了。

这么难找吗?真是稀有技术吧!

出0入0汤圆

发表于 2020-3-29 01:06:43 来自手机 | 显示全部楼层
Mark 西门子 pid整定。

出0入53汤圆

发表于 2020-3-29 03:57:51 来自手机 | 显示全部楼层
感谢分享,有空学习一下

出0入0汤圆

发表于 2020-3-29 06:54:46 | 显示全部楼层
ap4115 发表于 2020-3-22 10:19
你好,其实楼主原来的代码基本不用改,就是调整一下TUN_DLM、采样周期,关键是要自己用一个定时器实现Tim ...

多谢,提供经验,下次也试一下

出0入0汤圆

发表于 2020-3-29 10:22:31 | 显示全部楼层
cnxh 发表于 2020-3-29 06:54
多谢,提供经验,下次也试一下

楼主的资料PID那个函数不用任何修改,自整定的也不用改。只需输入参数就能跑起来,只是如果需要自整定,就需要调整一下采样周期、TUN_DLMN等。自整定需要自己写一个顺序,按照提供的PDF的资料可以有两种方法进入自整定,其中一种就是先把MAN_ON=1进入手动模式,并且赋值MAN = 10(根据自己系统确定),PID函数就会输出固定的信号,你系统就固定运行,一直运行直到系统可以稳定在某一个状态;然后就TUN_SET=1开始自整定,接着需要等待一会,PDF手册说典型是1分钟(好像是为了计算过程噪声),然后把MAN_ON=0变回自动模式,同时改变一下你目标值,这个时候阶跃激励就开,自整定就开始,等着状态码返回就可以了。

出0入0汤圆

发表于 2020-3-29 17:09:40 | 显示全部楼层
ap4115 发表于 2020-3-29 10:22
楼主的资料PID那个函数不用任何修改,自整定的也不用改。只需输入参数就能跑起来,只是如果需要自整定, ...

好热心,谢谢

出0入0汤圆

发表于 2020-6-4 08:53:54 | 显示全部楼层
好东西,下载下来研究一下,谢谢楼主

出0入0汤圆

发表于 2020-7-20 20:06:31 | 显示全部楼层
ap4115 发表于 2020-3-29 10:22
楼主的资料PID那个函数不用任何修改,自整定的也不用改。只需输入参数就能跑起来,只是如果需要自整定, ...

你好坛友,我看到你之前在论坛上热心的回复坛友关于PID自整定的代码问题,我有些问题是在不知道如何实现,我能有偿得到一份你的加热的PID自整定移植代码吗?期待你的回复,谢谢你了,微信Chen15603309217

出0入0汤圆

发表于 2020-9-5 08:42:34 | 显示全部楼层
感谢分享,学习一下。

出0入0汤圆

发表于 2020-9-16 10:34:55 来自手机 | 显示全部楼层
MARK一下,正需要

出0入0汤圆

发表于 2020-12-31 11:12:40 | 显示全部楼层
写的好复杂,谢谢分享!!

出0入0汤圆

发表于 2020-12-31 11:16:01 | 显示全部楼层
谢谢分享,学习用

出0入0汤圆

发表于 2021-1-4 19:48:13 | 显示全部楼层
自整定有的时候整定的非常好 有的时候整定不行!就是不知道整定条件是什么!

出0入0汤圆

发表于 2021-1-29 17:25:54 | 显示全部楼层
PHASE在1跳2时  等待1分钟里 检测NOISE_PV小于0.5  才允许跳转 否则复位, 整定的结果非常完美。设定100度 误差0.2度  。  谢谢分享

出0入0汤圆

发表于 2021-1-29 18:41:06 来自手机 | 显示全部楼层
pid老生常谈了啊

出0入0汤圆

发表于 2021-2-21 12:28:17 | 显示全部楼层
谢谢楼主,学习下pid

出675入8汤圆

发表于 2021-2-21 23:44:13 来自手机 | 显示全部楼层
看看能不能研究一下

出0入0汤圆

发表于 2021-11-6 09:24:19 来自手机 | 显示全部楼层
wzavr 发表于 2015-9-29 22:03
看过西门子的原版程序了, 确实是这样, 但是计算方法有高手能解释下吗?
难道c语言我看糊涂了..... 哭啊..... ...

请问哪里可以搞到西门子plc的程序?

出0入0汤圆

发表于 2021-11-14 08:20:43 | 显示全部楼层
谢谢分享,研究一下

出0入0汤圆

发表于 2022-12-13 23:36:05 | 显示全部楼层
楼主你好,无意中看到你这个帖子,对你提供的PID自整定代码非常感兴趣,研究了一下,有些问题不太理解,想请教下,

CYCLE这个是采样周期,也是PID算法的运算周期,比如CYCLE=1,表示1s计算一次PID结果,也就是1s输出一次LMN值用于PWM控制。
我的问题是,PWM的控制周期是否需要与这个调用周期一致?
我现在是用继电器控制,温度每1s刷新一次,继电器的控制周期要>=20s,所以我设置CYCLE=1s,PWM周期为20s.
但是我又突然想到一个问题,就是CYCLE=1s表示PID每1s输出一个结果来控制PWM,假设输出的值LMN=10,表示PWM的占空比为50%,PWM周期为20s,所以表示继电器要开10s, 关10s,但是PID是1s输出一个结果控制PWM,会不会导致这次PWM的一个周期还没跑完20s,然后下一次PID新的计算结果出来又取代了上一次的PWM值,因为PID是1s输出一次,而PWM周期是20s。

所以基于这种想法,我的问题是PWM控制周期是不是必须与CYCLE一样,比如PWM周期是20s,那么CYCLE也必须20s?
CYCLE=1s,PWM=20s这种是不是行不通?

这里不太理解,希望楼主赐教
这个帖子好多年了,不知道楼主是否还能看到,如果看到,希望可以指教,万分感谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-18 15:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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