搜索
bottom↓
回复: 610
打印 上一主题 下一主题

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

  [复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2013-5-31 15:38:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tyw996 于 2013-6-1 09:54 编辑

共享一个西门子PLC上所使用的软件PID程序(FB58),我已将其改为C语言代码,并已在关键地方附有中文注释,带自整定功能。经测试,自整定后的PID参数非常好用,这就解决了繁琐的参数整定问题了。不过就是占内存大些,基本都是浮点运算,如果使用stm32f3或f4那就更爽了。再上传一份西门子fb58的中文资料供参考。(后续补充说明在8楼。)

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

2
发表于 2013-5-31 15:50:53 来自手机 | 只看该作者
学习一下,非常好的资料。

出0入0汤圆

3
发表于 2013-5-31 16:02:53 | 只看该作者
研究一下   

出0入0汤圆

4
发表于 2013-5-31 16:08:39 | 只看该作者
多谢谢楼主,学习一下PID

出0入0汤圆

5
发表于 2013-5-31 16:09:32 | 只看该作者
谢谢楼主,我找带自整的PID控制C码好几年了。

出0入0汤圆

6
 楼主| 发表于 2013-5-31 16:20:29 | 只看该作者
这个程序是比较繁琐,我研究了一个月时间才搞定。给大家一些提示,这是属于位置式PID,程序本身即可以模拟输出,又可以PWM控制输出功能(用开关变量控制),只要将程序放在定时器中断中或单独一个线程中(ucos或其它,我用的是RTT)直接调用就可以了。所谓step 7指的是参数自整定是用7步搞定的,这个在资料中有说明。

出0入0汤圆

7
发表于 2013-5-31 16:23:43 | 只看该作者
我控温的算法也是用浮点的(芯片是stm32F05x),省事啊!

出0入0汤圆

8
 楼主| 发表于 2013-5-31 16:27:45 | 只看该作者
本帖最后由 tyw996 于 2013-6-1 10:20 编辑

有一问题需要补充下:TIME_TCK()函数需要自已添加,他的功能大意是在自整定的1阶段时需要外部定时器计时,这个定时器要跟程序循环周期参数做比较,差值超过5%整定就会失败的。TIME_TCK()函数只要在外面用1ms的定时器就可以了。另外在C原程序中将//tTime = TIME_TCK();去掉注释,我没记错的话应该是两个地方。例如:
void TIM6_DAC_IRQHandler(void)//1ms中断程序
{
  TIM_ClearFlag(TIM6, TIM_FLAG_Update);
  if(Time_zzd++>=2147483647)
    Time_zzd=0;
}
在PID程序中添加以下函数:
static s32 TIME_TCK(void)
{
  return (Time_zzd);
}

出0入0汤圆

9
发表于 2013-5-31 16:29:21 | 只看该作者
不错。。。。。。

出0入0汤圆

10
发表于 2013-5-31 16:44:05 来自手机 | 只看该作者
学习学习

出0入0汤圆

11
发表于 2013-5-31 17:38:08 | 只看该作者
MARK一下,以后用得到

出0入0汤圆

12
发表于 2013-5-31 17:51:17 | 只看该作者
有点复杂呢!

出0入0汤圆

13
发表于 2013-5-31 18:27:42 | 只看该作者
有时间的时候看一下,多谢lz!

出75入4汤圆

14
发表于 2013-5-31 18:28:22 | 只看该作者
谢谢lz共享好资料,谢谢。

出0入0汤圆

15
发表于 2013-5-31 18:33:55 | 只看该作者
非常好的资料 楼主真强人

出110入0汤圆

16
发表于 2013-5-31 18:46:42 | 只看该作者
如此强悍?先研究一下

出0入0汤圆

17
 楼主| 发表于 2013-5-31 18:47:43 | 只看该作者
我大略研究过,这个FB58的PID程序是经过优化的,即积分使用的是抗积分饱,微分属于不完全微分功能。整定后的参数有两组PI和PID,用户可以随时调用或切换。所以这个PID程序我认为已经可以满足大多数场合的需要了,当然也不只是控制温度变量,其它压力,流量等慢速响应变量都可以应用的。

出0入0汤圆

18
发表于 2013-5-31 18:54:57 | 只看该作者
mark ,以后慢慢看

出0入0汤圆

19
发表于 2013-5-31 19:06:19 | 只看该作者
mark ,以后看

出0入0汤圆

20
发表于 2013-5-31 19:07:37 来自手机 | 只看该作者
这是个好资料

出0入0汤圆

21
发表于 2013-5-31 19:09:37 | 只看该作者
先顶后看,好资料

出110入0汤圆

22
发表于 2013-5-31 19:15:10 | 只看该作者
tyw996 发表于 2013-5-31 18:47
我大略研究过,这个FB58的PID程序是经过优化的,即积分使用的是抗积分饱,微分属于不完全微分功能。整定后 ...

正在看源代码,能否大致说一下程序的思路?

出0入0汤圆

23
发表于 2013-5-31 20:11:30 来自手机 | 只看该作者
pid,马克,好资料!

出200入0汤圆

24
发表于 2013-5-31 20:29:09 来自手机 | 只看该作者
学习,好资料

出0入0汤圆

25
发表于 2013-5-31 20:34:53 | 只看该作者
下载了,还要记录下,看一下后续的更新。

出0入0汤圆

26
发表于 2013-5-31 21:10:28 | 只看该作者
先标记再看。

出0入0汤圆

27
发表于 2013-5-31 23:38:22 | 只看该作者
mark.............

出0入0汤圆

28
发表于 2013-5-31 23:57:06 来自手机 | 只看该作者
手机标记一下,明天电脑上研究。多谢lz分享

出0入0汤圆

29
发表于 2013-6-1 00:21:54 | 只看该作者
控制效果有超调么

出0入0汤圆

30
发表于 2013-6-1 01:31:31 | 只看该作者
怎么看不了啊

出0入0汤圆

31
发表于 2013-6-1 08:03:26 | 只看该作者
怎么下载不了了呢

出0入0汤圆

32
发表于 2013-6-1 08:09:49 | 只看该作者
下载不了,请楼主重开个帖吧,谢谢了

出0入85汤圆

33
发表于 2013-6-1 08:59:33 | 只看该作者
应用在一个大滞后环节的负载上咋样?另外问下这个PID如果是改变控温点,原来设定温度的那套整定参数在设定温度改变多大范围内无需重新整定?

出0入0汤圆

34
发表于 2013-6-1 09:02:32 | 只看该作者
研究下   

出0入0汤圆

35
发表于 2013-6-1 09:16:02 | 只看该作者
好东东,关注

出0入0汤圆

36
 楼主| 发表于 2013-6-1 09:16:52 | 只看该作者
下载不了,请楼主重开个帖吧,谢谢了

重新上传了,大家看看能不能下载。

出0入0汤圆

37
 楼主| 发表于 2013-6-1 09:18:46 | 只看该作者
应用在一个大滞后环节的负载上咋样?另外问下这个PID如果是改变控温点,原来设定温度的那套整定参数在设定温度改变多大范围内无需重新整定?

你担心的问题都能在资料上找到答案,上面都有说明的,可以先看资料。

出0入0汤圆

38
发表于 2013-6-1 09:21:19 | 只看该作者
兄弟太给力了,不过你已经实测过了吗? 目前是测温度PID调整,温度0.5的精度有吗?

出0入0汤圆

39
 楼主| 发表于 2013-6-1 09:29:36 | 只看该作者
tyw996 发表于 2013-5-31 18:47
我大略研究过,这个FB58的PID程序是经过优化的,即积分使用的是抗积分饱,微分属于不完全微分功能。整定后 ...
正在看源代码,能否大致说一下程序的思路?

单看原代码不好理解,当你看明白资料我想你也就会怎么使用了,至于PID算法,原程序我也看不明白的,只是别人在PLC论坛上通过公式验证了这是个递推算法。当然了,程序公开出来了嘛,大家也可以继续研究,探讨下它到底是什么积分和微分。

出0入0汤圆

40
 楼主| 发表于 2013-6-1 09:39:21 | 只看该作者
本帖最后由 tyw996 于 2013-6-1 09:42 编辑
兄弟太给力了,不过你已经实测过了吗? 目前是测温度PID调整,温度0.5的精度有吗?

我测试的控温精度能达到0.1度(结果出来后,我自己都感到惊叹),当然这只是在我这个项目中的测试结果。以后也看大家测试效果了。这跟你使用的控温环境及控制策略等有很大关系。

出0入0汤圆

41
发表于 2013-6-1 10:05:49 | 只看该作者
搞不清楚为何自整定失败, 楼主能否描述一下,自整定成功的必备条件?

出0入0汤圆

42
 楼主| 发表于 2013-6-1 10:13:37 | 只看该作者
本帖最后由 tyw996 于 2013-6-1 10:14 编辑
ddqq 发表于 2013-6-1 10:05
搞不清楚为何自整定失败, 楼主能否描述一下,自整定成功的必备条件?


这个不太好说,还是先吃透资料吧,上面有告诉你整定失败的大致原因。提示下:看看STATUS_H和STATUS_D变量回的数据是多少,对照资料说明可查下原因。

出0入0汤圆

43
发表于 2013-6-1 12:11:24 | 只看该作者
最近正在接触这方面!太太谢谢楼主了!

出0入0汤圆

44
发表于 2013-6-1 12:13:56 | 只看该作者
mark!!!!!!!!!!!!

出0入0汤圆

45
发表于 2013-6-1 12:53:21 来自手机 | 只看该作者
这是好东西啊

出0入0汤圆

46
发表于 2013-6-1 13:01:45 | 只看该作者
好东西,先留着

出0入0汤圆

47
发表于 2013-6-1 13:45:09 来自手机 | 只看该作者
好东西呀,谢谢楼主的分享

出0入0汤圆

48
发表于 2013-6-1 15:26:48 | 只看该作者
温度的量程多大?几位的A/D能达到0.1度的精度呀

出0入0汤圆

49
发表于 2013-6-2 12:00:46 来自手机 | 只看该作者
先学习下,回头慢慢研究

出0入0汤圆

50
发表于 2013-6-2 14:16:27 | 只看该作者
先顶,后学习。

出0入0汤圆

51
发表于 2013-6-2 15:52:01 | 只看该作者
谢谢楼主分享这么好的资料楼,学习了。

出0入0汤圆

52
发表于 2013-6-2 18:21:11 | 只看该作者
正在学习,云里雾里,参考程序很需要!~

出0入0汤圆

53
发表于 2013-6-2 18:34:24 | 只看该作者
下来研究一下,】

出0入198汤圆

54
发表于 2013-6-2 18:36:39 | 只看该作者
果断研究下~~期待大家的测试结果~

出0入198汤圆

55
发表于 2013-6-2 19:26:31 | 只看该作者
文档需要PLC基础才能看懂,要是有个流程图就好了~

出0入0汤圆

56
发表于 2013-6-2 19:44:12 | 只看该作者
增量式的怎么办?

出0入0汤圆

57
发表于 2013-6-2 21:51:16 | 只看该作者
不错,但只适用于温度控制!

出0入0汤圆

58
发表于 2013-6-3 09:09:23 | 只看该作者
不知道楼主是否已经试验成功么??

出0入0汤圆

59
 楼主| 发表于 2013-6-3 12:48:34 | 只看该作者
wns245249509 发表于 2013-6-3 09:09
不知道楼主是否已经试验成功么??

我试验是可以的。当然好不好用,等大家把使用的情况反馈回来就知道了。

出0入0汤圆

60
 楼主| 发表于 2013-6-3 12:52:44 | 只看该作者
guohua 发表于 2013-6-2 21:51
不错,但只适用于温度控制!

还不能这么早下结论,起码资料上已有说明。

出0入0汤圆

61
发表于 2013-6-3 13:18:41 | 只看该作者
自整定PID

出0入0汤圆

62
发表于 2013-6-3 13:30:04 | 只看该作者
好东西,学习中

出0入0汤圆

63
发表于 2013-6-3 13:37:36 | 只看该作者
果断收藏

出0入0汤圆

64
发表于 2013-6-3 14:05:25 | 只看该作者
非常好的资料 楼主真强人

出110入0汤圆

65
发表于 2013-6-7 10:04:14 | 只看该作者
1400行程序,准备开始看

出0入0汤圆

66
发表于 2013-6-9 12:14:05 来自手机 | 只看该作者
mark PID 感谢楼主分享

出0入0汤圆

67
发表于 2013-6-9 12:58:04 | 只看该作者
学习了,测试要求温度控制的场合越来越来多,需要掌握!

出0入0汤圆

68
发表于 2013-6-12 15:17:40 来自手机 | 只看该作者
标记,明天研究研究,顶楼主

出0入0汤圆

69
发表于 2013-6-12 18:06:01 | 只看该作者
本帖最后由 cf5257 于 2013-6-12 18:13 编辑

没搞过PID,感谢分享。

出0入0汤圆

70
发表于 2013-6-12 18:12:06 | 只看该作者
建议楼主能程序整理一下,加个.h文件,把接口明确一下。

出0入0汤圆

71
发表于 2013-6-13 09:39:52 | 只看该作者
好东西!做个记号!

出0入4汤圆

72
发表于 2013-6-13 09:45:51 | 只看该作者

出0入0汤圆

73
 楼主| 发表于 2013-6-13 13:12:50 | 只看该作者
本帖最后由 tyw996 于 2013-6-13 13:17 编辑
cf5257 发表于 2013-6-12 18:12
建议楼主能程序整理一下,加个.h文件,把接口明确一下。


原程序之所以将所有变量定义成全局变量,就是这个意思。也就是说所有大写的变量都是接口,所以定义到.h文件也就设多大意义了。这个只要根据自已的应用去引用相应的外部变量就行了。比如QPULSE 就是对应外部输出脉冲引脚的接口,只要一条赋值语句就行了。

出0入0汤圆

74
发表于 2013-6-13 15:16:54 | 只看该作者
mark

出0入0汤圆

75
发表于 2013-6-16 23:01:53 | 只看该作者
STEP 7-PID温度控制.PDF    不能下载啊。

出0入0汤圆

76
发表于 2013-6-17 01:37:41 | 只看该作者
学习一下,谢谢了!

出0入0汤圆

77
发表于 2013-6-17 08:58:46 | 只看该作者
谢谢分享

出0入0汤圆

78
发表于 2013-6-17 10:53:49 | 只看该作者
谢谢分享。PID一直没研究透,继续努力。

出0入0汤圆

79
发表于 2013-6-17 11:08:19 | 只看该作者
"......通过公式验证了这是个递推算法.....".   效果应该有保证,好资料。

出0入0汤圆

80
发表于 2013-6-17 13:58:53 | 只看该作者
mark 再看

出0入0汤圆

81
发表于 2013-6-17 18:07:03 | 只看该作者
PID控制

出0入0汤圆

82
发表于 2013-6-17 20:03:37 | 只看该作者
先赞一个

出0入0汤圆

83
发表于 2013-6-18 14:38:49 来自手机 | 只看该作者
好资料,多谢LZ

出0入0汤圆

84
发表于 2013-6-19 10:02:45 | 只看该作者
红啊,不懂帮顶

出0入0汤圆

85
发表于 2013-6-19 14:13:14 | 只看该作者
路过学习一下, 帮顶!

出0入0汤圆

86
发表于 2013-6-19 16:06:12 | 只看该作者
程序很多地方都能找到,但很少说到具体是如何调整输出

出0入0汤圆

87
发表于 2013-6-19 17:01:04 | 只看该作者
这个要顶

出0入0汤圆

88
发表于 2013-6-19 17:34:09 | 只看该作者
这个不错 收藏

出0入0汤圆

89
发表于 2013-6-20 15:48:19 | 只看该作者
太刁了,得仔细研究研究

出0入0汤圆

90
发表于 2013-6-20 17:53:02 | 只看该作者
新手上路,多多指教 ,谢谢楼主

出0入0汤圆

91
发表于 2013-6-21 11:05:14 | 只看该作者
学习学习

出0入0汤圆

92
发表于 2013-8-16 14:47:05 | 只看该作者
本帖最后由 blueice1108 于 2013-8-16 16:50 编辑

楼主
能说下拐点计算和检测到拐点后怎么计算出参数吗
看了满久 看不明白
也就是PDF p27 图PID_TUNER的部分
或给点相关资料
谢谢

出0入8汤圆

93
发表于 2013-8-16 15:12:12 | 只看该作者
好东东,关注

出0入0汤圆

94
发表于 2013-8-16 16:07:05 | 只看该作者
持续关注中!希望楼主能讲讲自己对程序的理解!

出0入0汤圆

95
发表于 2013-8-16 16:33:11 来自手机 | 只看该作者
回去再看看

出0入0汤圆

96
发表于 2013-8-16 17:31:49 | 只看该作者
谢谢楼主分享!

出0入0汤圆

97
发表于 2013-8-18 22:34:54 | 只看该作者
楼主你好!能不能简单介绍下这个怎么用呢,或者弄个简单的例程,比如目标值、输出值这些变量怎么用。谢谢!!

出0入0汤圆

98
发表于 2013-8-18 22:52:39 | 只看该作者
顶 支持分享                                                                                      

出0入0汤圆

99
发表于 2013-9-23 20:32:50 | 只看该作者
好东西好像挺复杂,研究一下,

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-16 09:04

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

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