资源简介
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
相关资源
- MODBUS TCP C# 源码 -- 测试过信捷PLC
- c# 动态编译代码 执行脚本代码 关键字
- C# 新手:在窗体上显示图片和文字
- 常用的7种 C# 遗传算法源码集
- C#设置和获取输入法一例 一个简单的
- c# icon 图标 特效 WINDOWS任务栏 动态生
- c# MJPEG STREAM SERVER AND CLIENT
- 基于控制台实现的贪吃蛇
- 学生成绩管理系统 c#+Access
- C#淘宝秒杀源码
- C#WEB上传控件多附件上传
- 深圳明华URF-R330读卡器 M1卡读写程序(
- C#透明窗体画图电子尺
- C#HttpWebRequest大文件断点续传类
- C# Socket编程入门
- 实现科学计算的计算器c#
- Asp.NetC#创建Excel,动态给下拉框赋值
- 自己编写的一个asp.net的文件管理系统
- C# FTP操作帮助类 FTPHelper.cs
- C#利用VFW实现摄像头程序
- Wince6.0+C#串口调试助手源码
- C# 基本图形示波器窗口设计源码
- C# 串口调试助手源码(自动搜索PC可用
- C#实现MVC设计模式源码
- C#多线程大文件
- C# 学生成绩管理系统+实验报告
- C#l连接SQL Sever数据库的简单
- c#坦克大战c#坦克大战c#坦克大战c#坦克
- C#串口读取数字温湿度传感器数据
- ArcGIS Engine+C#开发教程含代码
评论
共有 条评论