因仑“3+1”工程特种兵精英论坛

标题: 基于西门子PID程序的C程序代码(带自整定功能哦) [打印本页]

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

















转载

作者: 张衍波    时间: 2015-5-27 13:17
有一问题需要补充下: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);
}
转载
作者: xxxddd    时间: 2017-12-16 16:20
好东西,学习学习!




欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4