发表于:2006-04-16 15:03:00
楼主
各位帮帮忙,怎么样编程来实现对于研华PCL-833 输出的数据进行数字PID控制处理阿。
多谢多谢!下面是PID的算法,不知怎么编程才能跟硬件送过来的数据连结起来。请多多指教!
#include <windows.h>
#include <math.h>
//Declare the DLL functions prototypes
float GoBackData(float data);
void InitPID(float begin,float kp,float ki,float kd);
//------------速度Pid参数---------------
float Start,ek, ek1, ek2, uk;
float KP,KI,KD;
//////////////////////////
//DllEntryPoint():The entry point of the DLL
/////////////////////////
BOOL WINAPI DLLEntryPoint(HINSTANCE hDLL,DWORD dwReason,LPVOID Reserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
{
//一些初始化代码
break;
}
case DLL_PROCESS_DETACH:
{
//一些用于清理的代码
break;
}
}
return TRUE;
}
//实验初始函数
void InitPID(float begin,float kp,float ki,float kd)
{
Start=ek1=ek2=KP=KI=KD=uk=0.0;
Start=begin;
KP=kp;
KI=ki;
KD=kd;
}
//实验返回函数 该函数名称是固定的
float GoBackData(float data)
{
ek=Start-data;
ek2=ek2+ek;
if(abs(ek) > 1.)
uk =(KP*ek +KD*(ek-ek1) );
else
uk = (KP*ek+KI*ek2+KD*(ek-ek1));
ek1 = ek;
return uk;
}