资源简介
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
相关资源
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
评论
共有 条评论