您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 增量PID算法的VS2010软件实现代码(C#语言)
这段代码实现的功能:输入量可以测量获得到,而且输入量是连续变化的,并且变化比较快,现在要求输出量始终跟随输入量的大小。首先网上找到PID算法的原理跟简介,然后套用公式编写下面代码(VS2010软件、C#语言的控制台应用程序)。为了验证PID算法控制输出量的跟随性,鄙人产生50个(-5,5)的随机数作为输入量,运行输出输入量的50个值,输出50个PID算法计算出的50个输出值,并计算输出误差值,最后输出PID算法总共用了//多少ms计算得到结果。下面代码直接复制粘贴到VS软件的应用控制台里运行即可实现。若有问题可联系我cbscb@sina.cnusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.IO;namespacekeshana{class_pid//采用的是增量PID算法类的定义{publicfloatSetSpeed;//定义设定值publicfloatActualSpeed;//定义实际值publicfloaterr;//定义偏差值publicfloaterr_next;//定义上一个偏差值publicfloaterr_last;//定义最上前的偏差值publicfloatKp,Ki,Kd;//定义比例、积分、微分系数///summary///PID算法初始化////summarypublicvoidPID_init(){SetSpeed=0;ActualSpeed=0;err=0;err_last=0;err_next=0;}///summary///增量PID算法实现的方法////summary///paramname=a/param///returns/returns返回值为最终的输出值publicdoublePID_realize(floata)//这里的参数a是设定值,即你要输出量为//多大{Kp=0.4f;//比例系数Ki=0.53f;//积分系数Kd=0.1f;//微分系数SetSpeed=a;err=SetSpeed-ActualSpeed;floatincrementSpeed;incrementSpeed=Kp*(err-err_next+Ki*err+Kd*(err-2*err_next+err_last));//这是增量PID算法的公式ActualSpeed=ActualSpeed+incrementSpeed;err_last=err_next;err_next=err;returnActualSpeed;}}classProgram{staticinti=0,k=0;//循环用的中间变量constintt=50;//产生随机数的个数staticint[]num=newint[t];//用来存储产生的随机数staticvoidMain(string[]args){_pidpid=new_pid();floatspeed;//这个变量用来存储逼近设定值的值//intcount=0;pid.PID_init();Randomr=newRandom();for(i=0;it;i++){num[i]=r.Next(-5,5);Console.Write(num[i]+\t);if((i%10)==0){Console.Write();}}Console.WriteLine(****************************上面是产生的随机数作为输入量*********************);Console.WriteLine();Console.WriteLine(****************************下面是输出值*************************************);DateTimebegintime=DateTime.Now;//用PID算法开始时记下时间do{speed=(float)pid.PID_realize(num[k]);if(System.Math.Abs(pid.err)0.0001)continue;k++;Console.Write(speed+\t);if((k%10)==0){Console.Write();}}while(kt);TimeSpants=begintime.Subtract(DateTime.Now);//计算PID算法总共花了多少时间//File.WriteAllText(@C:\a.txt,speed,System.Text.Encoding.UTF8);Console.WriteLine();Console.WriteLine(**************************PID算法总共花的时间********************************);Console.WriteLine(System.Math.Abs(ts.TotalMilliseconds)+ms);//显示PID算法总共花了多少msConsole.ReadKey();}}}下面是程序运行的结果,可知增量PID实现的结果达到了预期结果
本文标题:增量PID算法的VS2010软件实现代码(C#语言)
链接地址:https://www.777doc.com/doc-4214387 .html