tyw996
发表于 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份!?
工程师030
发表于 2018-8-13 15:45:11
tyw996 发表于 2018-8-13 13:44
既然关闭了PULSE_ON,其相关参数就没改动的必要了,除了CYCLE=1.2,其它参数在没弄懂之前还是不要改动, ...
问题解决了,多谢楼主,PWM其实是软件控制的,所以分多少份都可以。
现在就是得提高一下采样速度才可以。
jackem
发表于 2018-8-13 17:10:21
下了不顶非好汉!
HANGKONG15
发表于 2018-8-16 10:06:29
学习一下,非常好的资料。
kingcrum
发表于 2018-8-16 10:07:34
好资料,谢谢分享
sd_share
发表于 2018-8-22 18:32:25
本帖最后由 sd_share 于 2018-8-23 10:08 编辑
重复,删除。。
maomao0
发表于 2018-8-22 18:44:01
这个确实是难得的好资料
carefree1986
发表于 2018-8-22 19:37:06
不错 顶一个!!!!!!!!!!!!!!!!!!!
weidadejang
发表于 2018-8-22 21:32:46
正缺这个东西,谢谢楼主!
sedulity11
发表于 2018-8-22 23:50:14
挺好的,再细节一些就更容易理解了,支持分享
sd_share
发表于 2018-8-23 10:39:01
本帖最后由 sd_share 于 2018-8-23 10:50 编辑
不好意思,发错
sd_share
发表于 2018-8-23 10:51:01
tyw996 发表于 2018-8-13 13:44
既然关闭了PULSE_ON,其相关参数就没改动的必要了,除了CYCLE=1.2,其它参数在没弄懂之前还是不要改动, ...
楼主您好,你的帖子对我帮助很大,可否加好友请教下,万分感谢
yanyanyan168
发表于 2018-8-23 10:52:23
感谢楼主,效果非常不错。
yanyanyan168
发表于 2018-8-23 11:03:27
系统采用滞后30-40S,自整定非常不理想。
PID参数整定方法采用工业控制中常用的滞后控制参数整定模型(Ziegler-Nichols参数整定方法):
林州
发表于 2018-8-24 08:18:49
这个代码好复杂,能用,没看懂!
yangxizhong
发表于 2018-8-24 08:43:03
多谢谢楼主,学习一下PID
sd_share
发表于 2018-8-25 22:39:54
请问楼主,自整定过程中比例(GAIN)出现INF(无限大)一般是由于啥原因?
whuer
发表于 2018-8-26 00:11:55
谢谢分享非常不错
sd_share
发表于 2018-8-26 23:30:53
请问楼主,加热对象为水,不开启脉冲
CYCLE = 100ms
TU = 1S
TA = 500S
TUN_DLMN = 20
采用设置SP_INT阶跃的方式
出来的GAIN值为何是INF?
zhangfeibao
发表于 2018-8-27 18:18:35
这个我要好好学习一下.谢谢楼主.
zhangfeibao
发表于 2018-8-27 18:50:47
我要加楼主,向楼主学习.
sd_share
发表于 2018-8-27 20:05:07
从手册TU和TA这两个参数看手册是滞后时间和过程时间常数
实际测出来TU=75S,TA=300S,但是用这两个值整定会出现30500
一直减小TU到0.1s才整定成功
目前配置的TU=0.1S,TA=100S,可以整定出一套参数来
但是用户具体的使用环境也许和我的测试环境不一样
这两个参数是否需要修改
请问TU,TA参数是否需要开放给用户配置
另外楼主您的理解这两个参数表示的是什么意思?
yinian
发表于 2018-8-27 20:30:48
这个很实用,谢谢
tyw996
发表于 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错误代码就说明了这一点。
dela2000
发表于 2018-8-28 18:39:07
Mark:带自整的PID控制C码
ouravr2012
发表于 2018-9-17 09:42:07
翻一下,不错!
micyoco
发表于 2018-9-19 13:41:45
准备使用一下看效果
star_tale
发表于 2018-9-20 16:39:24
这个只适用于哪些场合呢,s级的场合可以吗
yanggexiaosa
发表于 2018-9-20 16:52:51
用了好几年了,帖子一直很火
wangzex
发表于 2018-9-20 16:54:36
顶一个!
szxszx
发表于 2018-9-20 21:13:18
请教楼主:只能用于温度控制吗?
shpan_111
发表于 2018-9-20 21:15:01
西门子PID,mark
aisledianzi
发表于 2018-9-21 16:55:32
mark下,谢谢楼主
szxszx
发表于 2018-9-23 18:38:08
请教楼主:只能用于温度控制吗?
dzlt2012
发表于 2018-9-24 15:18:40
多谢楼主!标记,西门子PID程序及资料
danfeidie
发表于 2018-9-24 19:42:49
楼主威武,后续学习下
tyw996
发表于 2018-9-26 08:22:21
szxszx 发表于 2018-9-23 18:38
请教楼主:只能用于温度控制吗?
适用于温度、压力等较慢速控制变量
游在云间
发表于 2018-10-18 21:57:40
tyw996 发表于 2013-6-1 09:29
单看原代码不好理解,当你看明白资料我想你也就会怎么使用了,至于PID算法,原程序我也看不明白的,只是别 ...
可以分享一下推导公式的链接吗?
游在云间
发表于 2018-11-14 19:55:03
if(((rPvDelt < 0.8 * rSeek || ! sbSpChange) && QTUN_RUN && FIL_CYC < 1024 && siTime == 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)))
这部分代码没看明白,能给详细说一下吗?
qqtfh
发表于 2018-11-14 21:24:24
好东东,关注,回头好好研究一下。
wahaha
发表于 2018-12-4 23:20:41
标记一下
TKZXJ
发表于 2018-12-5 18:11:16
谢谢楼主分享!
limaotaizi
发表于 2018-12-8 15:50:47
mark,有需要再看看。。
hyf88
发表于 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,请教请教啦!
zhunyan1
发表于 2018-12-10 00:00:36
西门子PLC 的PID自整定,MARK
pingqifa
发表于 2018-12-18 08:31:46
yelang1124 发表于 2014-3-12 16:47
首先感谢楼主的热心解答,在此谢谢!,下面还有几个疑惑,还请楼主在百忙之余帮小弟看下,谢谢
...
前辈,能否把图片里的上位机软件分享下,最近也在研究楼主的算法,谢谢啦!
pingqifa
发表于 2018-12-19 14:32:39
哪位前辈可以把实际调试的工程分享出来吗?移植到单片机程序里,运行起来挺奇怪的。整定环节瞬间从0到7,整定出来的参数无法使用。有谁能分享下这个算法入口的参数设置嘛?请赐教。
shentqlf
发表于 2018-12-19 15:36:15
我想把这个代码移植到ebox上,楼主能提供点帮助吗?
hellokv1688
发表于 2019-5-11 09:24:57
好资料,支持分享
qmsolo2004
发表于 2019-5-16 17:49:47
谢谢楼主分享!
chengsong
发表于 2019-5-23 19:19:27
想问一下LZ,PULSE_ON = TRUE;整定结束后发现输出是一直打开的(QPULSE = TRUE ),非脉冲输出。怎样才能切换到自动控制?
shangheming
发表于 2019-6-27 15:07:56
你好 我下载的step 7-pid不是pdf格式的,你可以发我邮箱一份吗,谢谢!370860964@qq.com
llysc
发表于 2019-6-28 08:56:54
楼主威武,已收藏~
abigpad
发表于 2019-6-28 10:48:03
手下研究一下,谢谢
tjx0512
发表于 2019-9-20 09:43:25
shangheming 发表于 2019-6-27 15:07
你好 我下载的step 7-pid不是pdf格式的,你可以发我邮箱一份吗,谢谢!
自己改成PDF后缀就可以了!
zrkdzsj521
发表于 2019-10-30 16:55:13
学习一下,谢谢楼主
huangkai29
发表于 2019-10-31 22:27:24
看看是怎么实现的
ap4115
发表于 2019-11-1 21:12:19
好东西,一直想做一个自整定PID,终于找到学习资料啦
纸箱人
发表于 2019-11-5 19:09:37
mark ,以后慢慢看{:victory:}
farmerzhangdl
发表于 2019-11-5 19:26:17
mark ,以后慢慢看
taojie
发表于 2019-11-5 20:05:26
PID用得好,就是人王
motata2006
发表于 2019-11-6 10:22:44
先收藏,抽时间研究一下.
ap4115
发表于 2019-11-6 20:03:46
很好的资料,正在研究,有个问题请问楼主,SELECT = 0,SELECT = 3,一个是快速周期中断调用,一个是慢速周期中断调用,那么请问怎么算快速?怎么算慢速?
ap4115
发表于 2019-12-1 21:31:39
这个代码确实很不错,断断续续的看了2个星期,今天终于移植完成上线试了。在STM32上面跑了起来,第一次用的时候还没整定,控制的效果是等幅振荡,然后开始第一次整定,发现一直处于阶段也就是一直在PHASE=2那里,后来仔细看发现是TUN_DLMN=25这个默认值太小,不足以让我的系统温度上升,接着就改为TUN_DLMN=100,再次进行整定,温度就上去了,很快就结束,一看状态代码STATUS_H=10000,正好是找到了合适的参数。然后用这套参数接着控制,确实非常稳定,设定温度在120°,基本是能稳定在±0.2°
ap4115
发表于 2019-12-8 10:57:54
楼主你好,很感谢你这个PID好资料,我已经在加热过程中使用的不错了,包括整定。最近应用在制冷,但是整定时总是返回30002,请问用于制冷需要配置哪里吗?
iqxt88
发表于 2019-12-8 12:00:37
pid学习了,谢谢
shangheming
发表于 2020-1-2 10:01:05
为什么下载的名称和后缀都不对?
xiefei123456
发表于 2020-1-3 10:55:56
ap4115 发表于 2019-12-1 21:31
这个代码确实很不错,断断续续的看了2个星期,今天终于移植完成上线试了。在STM32上面跑了起来,第一次用的 ...
能不能把你的 加热的 部分 分享下,非常感谢! 397607437@qq.com
city_rip99
发表于 2020-1-3 11:28:59
先看看!!!!!
xfdr
发表于 2020-1-3 12:35:17
不错 改天测试一下
wlm3000
发表于 2020-1-4 11:46:38
好资料,可以用来做温度控制器
ljgchina
发表于 2020-1-9 22:31:03
MARK一下,以后用得到
QL攻城狮
发表于 2020-1-14 16:05:15
虽然没用,但是感觉好厉害
zibouv
发表于 2020-1-25 12:56:20
不错的资料,谢谢分享!
jun
发表于 2020-1-25 21:46:09
谢谢分享
Mr_Duan
发表于 2020-1-27 06:16:16
谢谢,非常好的资料。
wjwjwjwj98
发表于 2020-1-27 08:37:01
好资料,谢谢分享
ap4115
发表于 2020-3-22 10:19:38
xiefei123456 发表于 2020-1-3 10:55
能不能把你的 加热的 部分 分享下,非常感谢!
你好,其实楼主原来的代码基本不用改,就是调整一下TUN_DLM、采样周期,关键是要自己用一个定时器实现Time_zzd的计时就OK了。
jaky80000
发表于 2020-3-22 10:37:31
MARK一下,顶一个
kupier
发表于 2020-3-27 00:38:22
感谢楼主分享
魏博
发表于 2020-3-28 10:33:13
lans0625 发表于 2013-5-31 16:09
谢谢楼主,我找带自整的PID控制C码好几年了。
这么难找吗?真是稀有技术吧!
GoingDown
发表于 2020-3-29 01:06:43
Mark 西门子 pid整定。
zhcj66
发表于 2020-3-29 03:57:51
感谢分享,有空学习一下
cnxh
发表于 2020-3-29 06:54:46
ap4115 发表于 2020-3-22 10:19
你好,其实楼主原来的代码基本不用改,就是调整一下TUN_DLM、采样周期,关键是要自己用一个定时器实现Tim ...
多谢,提供经验,下次也试一下
ap4115
发表于 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变回自动模式,同时改变一下你目标值,这个时候阶跃激励就开,自整定就开始,等着状态码返回就可以了。
cnxh
发表于 2020-3-29 17:09:40
ap4115 发表于 2020-3-29 10:22
楼主的资料PID那个函数不用任何修改,自整定的也不用改。只需输入参数就能跑起来,只是如果需要自整定, ...
好热心,谢谢
ljh407055315
发表于 2020-6-4 08:53:54
好东西,下载下来研究一下,谢谢楼主
QVQ
发表于 2020-7-20 20:06:31
ap4115 发表于 2020-3-29 10:22
楼主的资料PID那个函数不用任何修改,自整定的也不用改。只需输入参数就能跑起来,只是如果需要自整定, ...
你好坛友,我看到你之前在论坛上热心的回复坛友关于PID自整定的代码问题,我有些问题是在不知道如何实现,我能有偿得到一份你的加热的PID自整定移植代码吗?期待你的回复,谢谢你了,微信Chen15603309217
wxwj97
发表于 2020-9-5 08:42:34
感谢分享,学习一下。
dam
发表于 2020-9-16 10:34:55
MARK一下,正需要
wangyy@dianzi
发表于 2020-12-31 11:12:40
写的好复杂,谢谢分享!!
hello2020
发表于 2020-12-31 11:16:01
谢谢分享,学习用
krdzw
发表于 2021-1-4 19:48:13
自整定有的时候整定的非常好 有的时候整定不行!就是不知道整定条件是什么!
liujian6f
发表于 2021-1-29 17:25:54
PHASE在1跳2时等待1分钟里 检测NOISE_PV小于0.5才允许跳转 否则复位, 整定的结果非常完美。设定100度 误差0.2度。谢谢分享
lnso
发表于 2021-1-29 18:41:06
pid老生常谈了啊
longerfjw
发表于 2021-2-21 12:28:17
谢谢楼主,学习下pid
xml2028
发表于 2021-2-21 23:44:13
看看能不能研究一下
advarx21ic
发表于 2021-11-6 09:24:19
wzavr 发表于 2015-9-29 22:03
看过西门子的原版程序了, 确实是这样, 但是计算方法有高手能解释下吗?
难道c语言我看糊涂了..... 哭啊..... ...
请问哪里可以搞到西门子plc的程序?
hfei1980
发表于 2021-11-14 08:20:43
谢谢分享,研究一下
Tommyrjs
发表于 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这种是不是行不通?
这里不太理解,希望楼主赐教
这个帖子好多年了,不知道楼主是否还能看到,如果看到,希望可以指教,万分感谢!