求助:数字PID算法处理PCL-833计速器卡的数据 点击:555 | 回复:0



走在路上

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 24回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2005年11月29日
发表于: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;
}


热门招聘
相关主题

官方公众号

智造工程师