搜索
bottom↓
楼主: tyw996

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

  [复制链接]

出0入0汤圆

发表于 2013-9-23 22:42:51 来自手机 | 显示全部楼层
好资料。

出0入0汤圆

发表于 2013-9-24 02:27:54 来自手机 | 显示全部楼层
好资料。mark

出0入0汤圆

发表于 2013-9-24 07:25:45 来自手机 | 显示全部楼层
多谢楼主,有空研究一下

出0入0汤圆

发表于 2013-9-24 08:08:20 | 显示全部楼层
非常好,谢谢楼主

出0入0汤圆

发表于 2013-9-24 08:30:40 | 显示全部楼层
PID 整定,记号。

出0入0汤圆

发表于 2013-9-24 08:34:18 | 显示全部楼层
学习来了~~~~~~~~~~~~~~~~~~~~

出0入0汤圆

发表于 2013-9-24 08:55:19 | 显示全部楼层
好资料。PID的用处非常大。

出0入20汤圆

发表于 2013-9-24 09:01:47 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2013-9-24 13:00:00 | 显示全部楼层
谢谢,收藏后研究;

出0入0汤圆

发表于 2013-9-24 13:04:43 | 显示全部楼层
这是我见过的最长代码的PID,太猛了吧,变量定义行数快超过语句长度了,能不能优化下

出0入0汤圆

发表于 2013-9-26 09:44:18 | 显示全部楼层
好东西,收藏先,谢谢分享.

出0入0汤圆

发表于 2013-9-26 10:08:53 | 显示全部楼层
好高级的赶脚,

出0入0汤圆

发表于 2013-9-26 10:09:11 | 显示全部楼层
顶 支持一下

出0入0汤圆

发表于 2013-9-26 10:53:33 | 显示全部楼层
学习,谢谢楼主分享。。
头像被屏蔽

出0入0汤圆

发表于 2013-9-26 11:26:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-10-19 20:53:55 | 显示全部楼层
特意求邀请码来下载资料,好好研究研究

出0入0汤圆

发表于 2013-10-20 15:06:25 来自手机 | 显示全部楼层
不错,用得上。
来自:amoBBS 阿莫电子论坛 Windows Phone 7 客户端

出0入0汤圆

发表于 2013-10-21 09:41:22 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2013-10-21 12:25:39 | 显示全部楼层
PID自整定程序,这个确实要标记一下

出0入0汤圆

发表于 2013-10-21 13:17:49 | 显示全部楼层

学习一下,非常好的资料。

出0入0汤圆

发表于 2013-10-21 13:36:49 | 显示全部楼层
mark 基于西门子PID程序的C程序代码

出0入0汤圆

发表于 2013-10-21 13:39:03 | 显示全部楼层
这个不花点时间研究看不懂

出0入0汤圆

发表于 2013-10-24 20:29:04 | 显示全部楼层
重磅资料,几年了,见到有提供 自整定 源代码的,楼主是第一个.

出0入0汤圆

发表于 2013-10-28 17:01:48 | 显示全部楼层
。。。。。。。。。。。。。。。。。。。。。。。。

出0入0汤圆

发表于 2013-11-5 14:21:37 | 显示全部楼层
记号,收藏

出0入0汤圆

发表于 2013-11-5 14:39:20 | 显示全部楼层
好久没看到PID这个词了,但又觉得知道他,就是想不起什么意思.google了一下,恍然大悟 原来是比例积分微分,,,这个东西有点好

出0入0汤圆

发表于 2013-11-5 14:56:41 | 显示全部楼层
好东西,帮顶

出0入0汤圆

发表于 2013-11-5 18:22:01 | 显示全部楼层
正需要pid,感谢楼主

出0入0汤圆

发表于 2013-11-5 22:26:21 | 显示全部楼层
学生中,谢谢楼主

出0入0汤圆

发表于 2013-11-5 22:34:42 | 显示全部楼层
这个比较牛办

出0入0汤圆

发表于 2013-11-6 13:05:29 | 显示全部楼层
学习下,好东西呀

出0入0汤圆

发表于 2013-11-6 14:22:09 | 显示全部楼层

谢谢lz共享好资料,谢谢。

出0入0汤圆

发表于 2013-11-6 15:25:02 | 显示全部楼层
好东西!学些一下

出0入0汤圆

发表于 2013-11-6 15:59:01 来自手机 | 显示全部楼层
mark 了回去再看

出0入0汤圆

发表于 2013-11-6 16:23:06 | 显示全部楼层
应该不错的,留名~

出0入0汤圆

发表于 2013-11-6 21:46:02 | 显示全部楼层
太好的资料,学习了

出0入0汤圆

发表于 2013-12-5 11:49:11 | 显示全部楼层
MARK 西门子PID自整定

出0入0汤圆

发表于 2013-12-6 15:31:16 | 显示全部楼层

出0入0汤圆

发表于 2013-12-11 10:44:33 | 显示全部楼层
多年不遇的好东西。谢谢

出0入0汤圆

发表于 2013-12-13 09:34:58 | 显示全部楼层
楼主,能不能提供一个移植说明,或者移植过的项目,只看两个函数感觉没办法入门,不知是否有时间。谢谢

出0入0汤圆

发表于 2013-12-13 10:10:20 来自手机 | 显示全部楼层
谢谢分享 mark

出0入0汤圆

发表于 2013-12-13 10:10:52 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-12-13 10:11:22 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-12-13 10:13:51 | 显示全部楼层
学习,谢谢!!!

出0入8汤圆

发表于 2013-12-13 10:39:40 | 显示全部楼层
pid好东西     收藏

出0入0汤圆

发表于 2013-12-16 10:20:31 | 显示全部楼层
tyw996 发表于 2013-5-31 18:47
我大略研究过,这个FB58的PID程序是经过优化的,即积分使用的是抗积分饱,微分属于不完全微分功能。整定后 ...

楼主,能不能提供一下入门点的资料,介绍如何移植的。谢谢

出0入0汤圆

发表于 2013-12-18 09:14:40 | 显示全部楼层
pid不好实现啊

出0入0汤圆

 楼主| 发表于 2013-12-18 16:30:46 | 显示全部楼层
philix 发表于 2013-12-16 10:20
楼主,能不能提供一下入门点的资料,介绍如何移植的。谢谢

我这边工作太忙了,真是没时间弄个移植程序,其实你要把那个说明文档看他一、两遍,就行用起来了,PID控制没什么麻烦的,可能自整定那块要麻烦些,得做个界面控制自整定参数。

出0入0汤圆

发表于 2013-12-19 08:21:30 来自手机 | 显示全部楼层
能不能给出一个pwm输出波形图啊

出330入0汤圆

发表于 2013-12-19 08:30:08 来自手机 | 显示全部楼层
PID在工控中应用广泛

出0入0汤圆

发表于 2013-12-19 08:35:16 | 显示全部楼层
确实复杂,有时间了慢慢研究吧……

出0入0汤圆

发表于 2013-12-19 08:41:54 | 显示全部楼层
tyw996 发表于 2013-12-18 16:30
我这边工作太忙了,真是没时间弄个移植程序,其实你要把那个说明文档看他一、两遍,就行用起来了,PID控 ...

有看过一阵子
但实在是太复杂了
只能等楼主的例子

出0入0汤圆

发表于 2013-12-19 08:52:56 | 显示全部楼层
来看看!

出0入0汤圆

发表于 2013-12-19 08:56:47 | 显示全部楼层
多谢,好资料,收藏备用

出0入0汤圆

发表于 2013-12-19 11:10:08 | 显示全部楼层

MARK 西门子PID自整定

出0入0汤圆

发表于 2013-12-19 11:47:03 来自手机 | 显示全部楼层
学习了,很好啊

出0入0汤圆

发表于 2013-12-23 21:23:48 | 显示全部楼层
感谢楼主共享,下了研究下!

出0入0汤圆

发表于 2013-12-24 20:34:58 来自手机 | 显示全部楼层
收藏一下

出0入0汤圆

发表于 2013-12-25 00:20:48 | 显示全部楼层
好资料。mark

出0入0汤圆

发表于 2013-12-25 09:10:04 | 显示全部楼层
学习一下,非常好的资料。

出0入0汤圆

发表于 2013-12-26 19:48:40 | 显示全部楼层
请问楼主,这程序你怎么搞到的?西门子的内部文件吧,怎么能流出来?

出0入0汤圆

 楼主| 发表于 2013-12-26 22:00:40 | 显示全部楼层
helloRMB 发表于 2013-12-26 19:48
请问楼主,这程序你怎么搞到的?西门子的内部文件吧,怎么能流出来? ...

西门子公开的PLC程序,百度下就能搜到。

出0入0汤圆

发表于 2013-12-26 23:21:02 | 显示全部楼层
西门子会把PLC的PID算法的核心代码公布出来吗?还有这个算法和宇电那个温控表的比较怎么样啊?

出0入0汤圆

发表于 2013-12-27 07:52:34 | 显示全部楼层
这个要顶,学习了。

出0入0汤圆

发表于 2013-12-27 09:00:05 | 显示全部楼层
带自整定的PID,第一次看源代码,鸡动··············

出0入0汤圆

发表于 2013-12-27 09:33:54 | 显示全部楼层
pid参数太不好弄了

出0入0汤圆

发表于 2013-12-27 15:41:05 | 显示全部楼层
研究一下 刚好最近在调PID

出0入0汤圆

发表于 2013-12-27 16:11:44 | 显示全部楼层
学习,好资料!

出0入0汤圆

发表于 2014-2-13 16:12:19 | 显示全部楼层
自整定PID,太太谢谢楼主了!

出0入0汤圆

发表于 2014-2-13 16:24:22 | 显示全部楼层
我硬是没看懂,太复杂了,云里雾里啊

出0入42汤圆

发表于 2014-2-13 16:31:11 | 显示全部楼层
很不错,标记备用。

出0入0汤圆

发表于 2014-2-13 20:14:39 | 显示全部楼层
mark 马克

出0入0汤圆

发表于 2014-2-13 21:08:20 | 显示全部楼层
mark一下,pid自整定。

出0入0汤圆

发表于 2014-2-14 01:09:14 | 显示全部楼层
下来看看哈

出0入17汤圆

发表于 2014-2-14 08:57:23 | 显示全部楼层

学习一下,非常好的资料。留着备用。。

出0入0汤圆

发表于 2014-2-14 10:25:42 | 显示全部楼层
学习,谢谢!!!

出0入0汤圆

发表于 2014-2-14 12:09:37 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2014-3-6 15:47:03 | 显示全部楼层
非常感谢啊

出0入0汤圆

发表于 2014-3-6 17:03:35 | 显示全部楼层
tyw996 发表于 2013-12-18 16:30
我这边工作太忙了,真是没时间弄个移植程序,其实你要把那个说明文档看他一、两遍,就行用起来了,PID控 ...

请问楼主, 这套自整定算法,整定的时候需要人工干预吗?     我看你的意思必须人工选择一个合适的整定开始条件,通过上位机调整好参数,然后放入单片机吗?  可不可以让单片机在运行过程中不断的自己整定参数,自己更新参数?

我的理解是这样的:
我看有两种整定方式,
第一种是在一个稳定的工作点,打开TUN_ON 来启动整定。  我看程序TUN_ON需要在FB58模块外打开,然而又需要一个稳定的工作点,还得让单片机在运行中去寻找一个稳定的工作点才能开启TUN_ON,这确实麻烦
另一种是改变设定值来调整,这种我看没什么条件吧,应该在任何时间点都可以进行PID的自整定,这样的话,可以让单片机每隔一段时间就自动整定一次,然后运行新的PID参数,实现无人工干预的自整定吧?

出0入0汤圆

发表于 2014-3-7 00:10:04 | 显示全部楼层

自整定PID PLC 温控 mark

出0入0汤圆

发表于 2014-3-7 07:19:41 | 显示全部楼层
有时间学习一下 挺好的

出0入0汤圆

发表于 2014-3-7 07:24:31 | 显示全部楼层
很好,我现在在用最原始的PID算法,参数自整定非常不错

出0入0汤圆

发表于 2014-3-7 09:43:05 | 显示全部楼层
MARK一下,备用!

出0入0汤圆

发表于 2014-3-7 10:28:26 | 显示全部楼层
这个要记号的

出0入0汤圆

 楼主| 发表于 2014-3-7 22:16:18 | 显示全部楼层
yelang1124 发表于 2014-3-6 17:03
请问楼主, 这套自整定算法,整定的时候需要人工干预吗?     我看你的意思必须人工选择一个合适的整定开 ...

       我的理解是两种整定方式都需要一个比较稳定的工作点,只是起动方式不同而已。根据我的测试,这个前提条件很主要,否则整定失败或者参数不理想。还有这个自整定的参数并不一定是最佳参数(但我觉得已经能满足一般情况下的应用了),如果有一定的参数整定经验,在这基础上再手动微调效果更佳。
    无论是人工干预也好,或者你所说的自己更新参数也好都是需要满足这个条件的;如果要实现自动更新参数功能那是属于应用程序范畴部分了,PID程序本身并不能预判在自整定前是否满足前提条件,这个需要你或者应用程序去判断。

出0入0汤圆

发表于 2014-3-7 22:30:32 | 显示全部楼层
学习一下,非常好

出0入0汤圆

发表于 2014-3-9 15:21:27 | 显示全部楼层
MARK!回头研究下!

出870入263汤圆

发表于 2014-3-9 20:53:53 | 显示全部楼层
以后的智能家电上,PID会有很多应用。最近电烤箱卖得很火,电子控制面板比机械旋钮面板贵很多,有眼光的可以研究一下这方面。

出0入0汤圆

发表于 2014-3-9 21:04:42 | 显示全部楼层
楼主能不能发一个整定的例子啊,有几个变量不明白啊,例如bLMNnew,或者srPulsPv = rPVin - sPvOld + srPulsPv ;siPulsFil = siPulsFil + 1 ;还有一些前面也没标注,看着有点费劲啊。

出0入0汤圆

发表于 2014-3-12 16:47:21 | 显示全部楼层
tyw996 发表于 2014-3-7 22:16
我的理解是两种整定方式都需要一个比较稳定的工作点,只是起动方式不同而已。根据我的测试,这个 ...

首先感谢楼主的热心解答,在此谢谢!,下面还有几个疑惑,还请楼主在百忙之余帮小弟看下,谢谢

        请问楼主里面的CYCLE就是PID模块的控制周期吧?我设置成1s,就是需要1s钟计算一次PID的输出值。
        那么过程量的采样,即采样周期一般是不是要跟CYCLE一致啊?我是在每次PID运算前,更新的过程量,不知这样对不对。我想过程量的更新跟PID的计算不同步不及时,PID的结果也是无意义的把

        我的控制周期,采样周期都是1s,从100度那个稳定工作点,TUN_DLMN=5,加上5%占空比的阶跃输出,通过改变设定值110度的方式整定
        每次整定的结果---------------------状态STATUS_H = 20100
手册中提到:
2x1xx  估计偏差(TU < 3*CYCLE)  ------------------纠正方法是:   减少CYCLE,然后重复尝试。 特殊情况, 纯粹的PT1 处理:不要重复,可能弱化控制器参数。
        我将CYCLE减小到 0.5s,采样周期也是0.5s,并且保证在PID运算前更新过程量,发现得到一次STATUS_H = 10000,但是接着再次重复同样的整定方式,还是STATUS_H = 20100

        为什么老是20100呢? 其实用20100整定出来的参数是能用的,效果也很不错,0.1度很轻松的。但是就是不明白为什么不是10000
        这句话一直没能理解    “特殊情况, 纯粹的PT1 处理:不要重复,可能弱化控制器参数” ,,  何谓PT1啊

        下面是我的整定波形,TUN_DLMN 已经调到最小了,因为我想细化温度段,每个温度段10度整定一次参数。这样单片机查表自动更新参数。前两次CYCLE=1S,后三次CYCLE=0.5s。只有第一次0.5s 得到10000的状态

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-3-12 22:09:52 | 显示全部楼层
本帖最后由 tyw996 于 2014-3-12 22:35 编辑

1、我理解的CYCLE和过程量的更新跟你的理解是一样的,完全正确。
2、这个“PT1”(猜测是Process Type的缩写即过程类型)我理解就是资料的3-2页中说明的过程类型I(典型温度过程),因为(TU < 3*CYCLE)就说明这个滞后时间很小了(CYCLE=1就小于3秒了,应该是够快了),所以这种情况应该是属于过程类型I的殊特情况,再加上你测试的效果就说明应该是没问题的。
   另外赞一下这位兄弟,研究得已经很透彻了,其实这里面很多细节问题由于时间仓促我也没有过多的仔细研究,毕竟个人能力有限,这还得象楼上的这位兄弟那样需要大家共同来补充。这样咱们才能把这个程序应用得更好。这个上位机软件做的也不错哦,labview做的吗?从图上看整定后的参数很不错了。

出0入0汤圆

发表于 2014-3-12 23:24:33 来自手机 | 显示全部楼层
四轴能不能用啊

出0入0汤圆

发表于 2014-3-13 08:44:39 | 显示全部楼层
tyw996 发表于 2014-3-12 22:09
1、我理解的CYCLE和过程量的更新跟你的理解是一样的,完全正确。
2、这个“PT1”(猜测是Process Type的缩 ...

哈哈,谢谢楼主的指点迷津,其实上图只是自整定的过程,用整定出来的参数跑比这个还要好,哈哈,响应那叫一个快,稳定0.1度以内。这个是用VC6.0做的,只不过我用了一个iocomp公司的iplot曲线显示控件。
        您说的很对,现在STATUS_D输出的状态就是 过程类型1,就是这个意思,太谢谢您了!哈哈,从整定的响应度上也可看出来,增加5%响应曲线就很陡。
        我开始还纳闷了,20100出来的参数就这么好,10000该有多好啊,哈哈,
        我现在要做的是20-400的宽范围,并且目标值是一个不确定的,动态变化的温控系统,还得继续努力啊,我想不同的温度段PID参数应该不一样,这应该就是系统本身非线性度照成的吧,只是猜测,楼主这方面经验丰富的话,可以指点一二,谢谢

出0入0汤圆

发表于 2014-3-13 08:55:45 | 显示全部楼层
研究一下

出0入0汤圆

 楼主| 发表于 2014-3-13 21:22:23 | 显示全部楼层
本帖最后由 tyw996 于 2014-3-13 21:27 编辑
yelang1124 发表于 2014-3-13 08:44
哈哈,谢谢楼主的指点迷津,其实上图只是自整定的过程,用整定出来的参数跑比这个还要好,哈哈,响应那叫 ...


一个不稳定的控制系统要用一个PID参数能稳得住也不太可能,设置多段PID参数是个办法,或者可以考虑模糊PID控制;如果控制系统比较稳定的话,也没必要这么麻烦,要是单就改变设定温度时为防止过冲太大的话,其实PFAC_SP参数就是起到控制作用的,不用人为动参数,程序自动控制了。个人所见,不一定对。

出0入0汤圆

发表于 2014-3-15 10:49:07 | 显示全部楼层
好东西!赞

出0入0汤圆

发表于 2014-3-15 22:49:45 | 显示全部楼层
刚好用的上,谢谢楼主了

出0入0汤圆

发表于 2014-3-15 23:23:22 | 显示全部楼层
过来看看

出0入0汤圆

发表于 2014-3-16 12:25:12 | 显示全部楼层
好东西!!

出0入0汤圆

发表于 2014-3-23 16:00:15 | 显示全部楼层
楼主麻烦问下:
我参数整定的时候,老是出错30005。如果我设置PULSE_ON为false,即不用脉冲发生器,就可以通过。所以应该CYCLE_P的问题。但是,不清楚CYCLE_P对应的是什么的调用? 我自己的理解,CYCLE对应pid函数的调用周期,CYCLE_P对应又是什么呢?
不知道楼主,在温度控制的时候,有没有利用脉冲发生器呢?

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

本版积分规则

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

GMT+8, 2024-4-25 15:56

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

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