为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

增量PID算法的VS2010软件实现代码(C#语言)

2019-04-20 7页 doc 20KB 96阅读

用户头像

is_005190

暂无简介

举报
增量PID算法的VS2010软件实现代码(C#语言)这段代码实现的功能:输入量可以测量获得到,而且输入量是连续变化的,并且变化比较快, 现在要求输出量始终跟随输入量的大小。首先网上找到PID算法的原理跟简介,然后套用公式编写下面代码(VS2010软件、C#语言的控制台应用程序)。 为了验证PID算法控制输出量的跟随性,鄙人产生50个(-5,5)的随机数作为输入量,运行输出输入量的50个值,输出50个PID算法计算出的50个输出值,并计算输出误差值,最后输出PID算法总共用了//多少ms计算得到结果。 下面代码直接复制粘贴到VS软件的应用控制台里运行即可实现。若有问题可联系我c...
增量PID算法的VS2010软件实现代码(C#语言)
这段代码实现的功能:输入量可以测量获得到,而且输入量是连续变化的,并且变化比较快, 现在要求输出量始终跟随输入量的大小。首先网上找到PID算法的原理跟简介,然后套用公式编写下面代码(VS2010软件、C#语言的控制台应用程序)。 为了验证PID算法控制输出量的跟随性,鄙人产生50个(-5,5)的随机数作为输入量,运行输出输入量的50个值,输出50个PID算法计算出的50个输出值,并计算输出误差值,最后输出PID算法总共用了//多少ms计算得到结果。 下面代码直接复制粘贴到VS软件的应用控制台里运行即可实现。若有问题可联系我cbscb@sina.cn using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; using System.IO; namespacekeshana { class _pid //采用的是增量PID算法类的定义 { public float SetSpeed; //定义设定值 public float ActualSpeed; //定义实际值 public float err; //定义偏差值 public float err_next; //定义上一个偏差值 public float err_last;  //定义最上前的偏差值 public float Kp, Ki, Kd; //定义比例、积分、微分系数 /// /// PID算法初始化 /// public void PID_init() {    SetSpeed=0;  ActualSpeed=0;  err=0;    err_last=0;    err_next=0; } /// /// 增量PID算法实现的方法 /// /// /// 返回值为最终的输出值 public double PID_realize(float a) //这里的参数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; } } class Program { static inti=0,k=0;//循环用的中间变量 constint t = 50;//产生随机数的个数 static int[] num=new int[t];//用来存储产生的随机数 static void Main(string[] args) { _pidpid=new _pid();            float speed; //这个变量用来存储逼近设定值的值 // int count=0; pid.PID_init(); Random r = new Random(); for ( i = 0; i< t; 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 (k
/
本文档为【增量PID算法的VS2010软件实现代码(C#语言)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索