• 大小: 24KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: C#
  • 标签: C#  PID控制  

资源简介

C#开发的关于增量PID的控制小程序,是控制台应用程序,适合初学者增强对PID的了解及其开发。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Increment_PID
{
    class PIDClass
    {
        #region 定义
        public float SetSpeed; //定义设定值
        public float ActualSpeed; //定义实际值
        public float err; //定义偏差值
        public float err_next; //定义上一个偏差值 
        public float err_last;  //定义最上前的偏差值
        public float Kp Ki Kd; //定义比例、积分、微分系数 
        #endregion

        public void PID_init()
        {
            SetSpeed = 0;
            ActualSpeed = 0;
            err = 0;
            err_last = 0;
            err_next = 0;
        }

        public double PID_realize(float a)
        {
            Kp = 0.4f;
            Ki = 0.53f;
            Kd = 0.1f;
            SetSpeed = a;
            err = SetSpeed - ActualSpeed;
            float incrementSpeed;
            incrementSpeed = Kp * (err - err_next + Ki * err + Kd * (err - 2 * err_next + err_last));
            ActualSpeed = ActualSpeed + incrementSpeed;
            err_last = err_next;
            err_next = err;
            return ActualSpeed;
        }
    }
    class Program
    {
        





        static int i = 0 k = 0;//循环用的中间变量
        const int t = 50;//产生随机数的个数
        static int[] num = new int[t];//用来存储产生的随机数或
        
        static void Main(string[] args)
        {
            float speed;//存储逼近设定值的值
            PIDClass pid = new PIDClass();
            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(“****************************下面是输出值**********************************“);

            DateTime begintime = 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 < t);

            TimeSpan ts = begintime.Subtract(DateTime.Now);
            Console.WriteLine();
            Console.WriteLine(“*************PID算法总共花费的时间**********************“);
            Console.WriteLine(System.Math.Abs(ts.TotalMilliseconds) + “ms“);
            Console.ReadKey();
        }
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6656  2015-07-24 16:29  增量PID\Increment PID\bin\Debug\Increment PID.exe

     文件      15872  2015-07-24 16:29  增量PID\Increment PID\bin\Debug\Increment PID.pdb

     文件      11600  2015-07-24 16:30  增量PID\Increment PID\bin\Debug\Increment PID.vshost.exe

     文件       2447  2015-07-24 15:41  增量PID\Increment PID\Increment PID.csproj

     文件       5885  2015-07-24 16:29  增量PID\Increment PID\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件        336  2015-07-24 16:30  增量PID\Increment PID\obj\x86\Debug\Increment PID.csproj.FileListAbsolute.txt

     文件       6656  2015-07-24 16:29  增量PID\Increment PID\obj\x86\Debug\Increment PID.exe

     文件      15872  2015-07-24 16:29  增量PID\Increment PID\obj\x86\Debug\Increment PID.pdb

     文件       3073  2015-07-24 16:29  增量PID\Increment PID\Program.cs

     文件       1376  2015-07-24 15:41  增量PID\Increment PID\Properties\AssemblyInfo.cs

     文件        881  2015-07-24 15:41  增量PID\Increment PID.sln

    ..A..H.     16384  2015-07-24 20:25  增量PID\Increment PID.suo

     目录          0  2015-07-24 15:41  增量PID\Increment PID\obj\x86\Debug\TempPE

     目录          0  2015-07-26 10:30  增量PID\Increment PID\obj\x86\Debug

     目录          0  2015-07-26 10:30  增量PID\Increment PID\bin\Debug

     目录          0  2015-07-24 15:41  增量PID\Increment PID\bin\Release

     目录          0  2015-07-26 10:30  增量PID\Increment PID\obj\x86

     目录          0  2015-07-26 10:30  增量PID\Increment PID\bin

     目录          0  2015-07-26 10:30  增量PID\Increment PID\obj

     目录          0  2015-07-26 10:30  增量PID\Increment PID\Properties

     目录          0  2015-07-26 10:30  增量PID\Increment PID

     目录          0  2015-07-26 10:30  增量PID

----------- ---------  ---------- -----  ----

                87038                    22


评论

共有 条评论