資源簡介
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?????????????{
????????????????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?
????????????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
評論
共有 條評論