查看: 3570|回复: 2
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
沙发
发表于 2015-5-27 13:16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
共享一个西门子PLC上所使用的软件PID程序(FB58),我已将其改为C语言代码,并已在关键地方附有中文注释,带自整定功能。经测试,自整定后的PID参数非常好用,这就解决了繁琐的参数整定问题了。不过就是占内存大些,基本都是浮点运算,如果使用stm32f3或f4那就更爽了。再上传一份西门子fb58的中文资料供参考。(后续补充说明在8楼。)

















转载
回复

使用道具 举报

板凳
 楼主| 发表于 2015-5-27 13:17:41 | 只看该作者
有一问题需要补充下: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);
}
转载
回复 支持 反对

使用道具 举报

地板
发表于 2017-12-16 16:20:36 | 只看该作者
好东西,学习学习!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

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