📄 晓奇=标准的pid处理例程.mht
字号:
From: <由 Microsoft Internet Explorer 5 保存>
Subject: =?gb2312?B?z/7G5j0+serXvLXEUElEtKbA7cD9s8w=?=
Date: Thu, 30 Dec 2004 19:53:54 +0800
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_NextPart_000_0000_01C4EEA9.4AADBBC0";
type="text/html"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
This is a multi-part message in MIME format.
------=_NextPart_000_0000_01C4EEA9.4AADBBC0
Content-Type: text/html;
charset="gb2312"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.xiao-qi.com/mcu/PID.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=3D(0022)http://www.xiao-qi.com/ =
--><HTML><HEAD><TITLE>=CF=FE=C6=E6=3D>=B1=EA=D7=BC=B5=C4PID=B4=A6=C0=ED=C0=
=FD=B3=CC</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
<STYLE type=3Dtext/css>A {
FONT-SIZE: 9pt; COLOR: #000000; LINE-HEIGHT: 22pt; FONT-FAMILY: =
"=CB=CE=CC=E5", "Arial", "=B7=C2=CB=CE_GB2312"; TEXT-DECORATION: none
}
A:hover {
FONT-SIZE: 9pt; COLOR: #3300cc; LINE-HEIGHT: 22pt; FONT-FAMILY: =
"=CB=CE=CC=E5", "Arial", "=B7=C2=CB=CE_GB2312"; TEXT-DECORATION: =
underline
}
.9pix {
FONT: 9pt "=CB=CE=CC=E5"
}
.ddd {
TEXT-DECORATION: blink
}
.1PIX {
FONT-SIZE: 68%; FONT-FAMILY: "Symbol"
}
.vss {
TEXT-INDENT: 22pt; WHITE-SPACE: normal; TEXT-ALIGN: left
}
.l17 {
LINE-HEIGHT: 170%
}
.l10 {
LINE-HEIGHT: 100%
}
</STYLE>
<META content=3D"MSHTML 6.00.2800.1479" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff leftMargin=3D0=20
background=3Dhttp://www.xiao-qi.com/pageimage.files/001.gif =
topMargin=3D12=20
marginheight=3D"0" marginwidth=3D"0">
<TABLE borderColor=3D#0000ff cellSpacing=3D1 cellPadding=3D0 width=3D752 =
align=3Dcenter=20
bgColor=3D#000000 border=3D0>
<TBODY>
<TR>
<TD background=3Dhttp://www.xiao-qi.com/pageimage.files/007.gif>
<TABLE cellSpacing=3D0 width=3D750 align=3Dcenter border=3D0>
<TBODY>
<TR>
<TD vAlign=3Dbottom align=3Dmiddle width=3D700 =
height=3D12><SPAN=20
class=3D9pix></SPAN></FONT></A></TD></TR>
<TR>
<TD vAlign=3Dcenter align=3Dmiddle width=3D750=20
background=3Dhttp://www.xiao-qi.com/pageimage.files/006.gif=20
height=3D22><FONT color=3D#333333><SPAN =
class=3D9pix>=B1=EA=D7=BC=B5=C4PID=B4=A6=C0=ED=C0=FD=B3=CC=20
=
=D5=AA=B1=E0[xiaoqi]©</SPAN></FONT></TD></TR></TBODY></TABLE>
<TABLE height=3D20 cellSpacing=3D0 cellPadding=3D0 width=3D750 =
align=3Dcenter=20
border=3D0 name=3D"C">
<TBODY>
<TR>
<TD vAlign=3Dbottom align=3Dmiddle width=3D750 =
rowSpan=3D3><FONT=20
color=3D#000000><SPAN class=3D9pix>--- =
=B9=A4=D2=B5=BF=D8=D6=C6=D6=D0=B3=A3=D3=C3=CB=E3=B7=A8=20
---</SPAN></FONT></TD></TR></TBODY></TABLE>
<TABLE height=3D28 cellSpacing=3D1 cellPadding=3D0 width=3D750 =
align=3Dcenter=20
border=3D0 name=3D"C">
<TBODY>
<TR>
<TD>
<TABLE borderColor=3D#dddddd cellSpacing=3D0 width=3D700 =
align=3Dcenter=20
border=3D1>
<TBODY>
<TR>
<TD class=3D9pix vAlign=3Dbottom bgColor=3D#f5f5f5 =
rowSpan=3D3><PRE><SPAN class=3Dl17>
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
=
=D5=E2=CA=C7=B4=D3=CD=F8=C9=CF=D5=D2=C0=B4=B5=C4=D2=BB=B8=F6=B1=C8=BD=CF=B5=
=E4=D0=CD=B5=C4PID=B4=A6=C0=ED=B3=CC=D0=F2=A3=AC=D4=DA=CA=B9=D3=C3=B5=A5=C6=
=AC=BB=FA=D7=F7=CE=AA=BF=D8=D6=C6cpu=CA=B1=A3=AC=C7=EB=C9=D4=D7=F7=BC=F2=BB=
=AF=A3=AC=BE=DF=CC=E5=B5=C4PID
=B2=CE=CA=FD=B1=D8=D0=EB=D3=C9=BE=DF=CC=E5=B6=D4=CF=F3=CD=A8=B9=FD=CA=B5=D1=
=E9=C8=B7=B6=A8=A1=A3=D3=C9=D3=DA=B5=A5=C6=AC=BB=FA=B5=C4=B4=A6=C0=ED=CB=D9=
=B6=C8=BA=CDram=D7=CA=D4=B4=B5=C4=CF=DE=D6=C6=A3=AC=D2=BB=B0=E3=B2=BB=B2=C9=
=D3=C3=B8=A1=B5=E3=CA=FD=D4=CB=CB=E3=A3=AC
=B6=F8=BD=AB=CB=F9=D3=D0=B2=CE=CA=FD=C8=AB=B2=BF=D3=C3=D5=FB=CA=FD=A3=AC=D4=
=CB=CB=E3=B5=BD=D7=EE=BA=F3=D4=D9=B3=FD=D2=D4=D2=BB=B8=F62=B5=C4N=B4=CE=B7=
=BD=CA=FD=BE=DD=A3=A8=CF=E0=B5=B1=D3=DA=D2=C6=CE=BB=A3=A9=A3=AC=D7=F7=C0=E0=
=CB=C6=B6=A8=B5=E3=CA=FD=D4=CB=CB=E3=A3=AC=BF=C9
=B4=F3=B4=F3=CC=E1=B8=DF=D4=CB=CB=E3=CB=D9=B6=C8=A3=AC=B8=F9=BE=DD=BF=D8=D6=
=C6=BE=AB=B6=C8=B5=C4=B2=BB=CD=AC=D2=AA=C7=F3=A3=AC=B5=B1=BE=AB=B6=C8=D2=AA=
=C7=F3=BA=DC=B8=DF=CA=B1=A3=AC=D7=A2=D2=E2=B1=A3=C1=F4=D2=C6=CE=BB=D2=FD=C6=
=F0=B5=C4=A1=B0=D3=E0=CA=FD=A1=B1=A3=AC=D7=F6=BA=C3=D3=E0
=CA=FD=B2=B9=B3=A5=A1=A3=D5=E2=B8=F6=B3=CC=D0=F2=D6=BB=CA=C7=D2=BB=B0=E3=B3=
=A3=D3=C3pid=CB=E3=B7=A8=B5=C4=BB=F9=B1=BE=BC=DC=B9=B9=A3=AC=C3=BB=D3=D0=B0=
=FC=BA=AC=CA=E4=C8=EB=CA=E4=B3=F6=B4=A6=C0=ED=B2=BF=B7=D6=A1=A3
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D*/
#include <string.h>
#include <stdio.h>
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
PID Function
=20
The PID (=B1=C8=C0=FD=A1=A2=BB=FD=B7=D6=A1=A2=CE=A2=B7=D6) function =
is used in mainly
control applications. PIDCalc performs one iteration of the PID
algorithm.
While the PID function works, main is just a dummy program showing
a typical usage.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D*/
typedef struct PID {
double SetPoint; // =C9=E8=B6=A8=C4=BF=B1=EA Desired =
Value
double Proportion; // =B1=C8=C0=FD=B3=A3=CA=FD =
Proportional Const
double Integral; // =BB=FD=B7=D6=B3=A3=CA=FD =
Integral Const
double Derivative; // =CE=A2=B7=D6=B3=A3=CA=FD =
Derivative Const
double LastError; // Error[-1]
double PrevError; // Error[-2]
double SumError; // Sums of Errors
} PID;
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
PID=BC=C6=CB=E3=B2=BF=B7=D6
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D*/
double PIDCalc( PID *pp, double NextPoint )
{
double dError,
Error;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -