MPIFilterGainPIDCoeff

Definition

 
typedef		enum {
    MPIFilterGainPIDCoeffGAIN_PROPORTIONAL, /* Kp */
    MPIFilterGainPIDCoeffGAIN_INTEGRAL,     /* Ki */
    MPIFilterGainPIDCoeffGAIN_DERIVATIVE,   /* Kd */

    MPIFilterGainPIDCoeffFEEDFORWARD_POSITION,     /* Kpff */
    MPIFilterGainPIDCoeffFEEDFORWARD_VELOCITY,     /* Kvff */
    MPIFilterGainPIDCoeffFEEDFORWARD_ACCELERATION, /* Kaff */
    MPIFilterGainPIDCoeffFEEDFORWARD_FRICTION,     /* Kfff */

    MPIFilterGainPIDCoeffINTEGRATIONMAX_MOVING, /* MovingIMax */
    MPIFilterGainPIDCoeffINTEGRATIONMAX_REST,   /* RestIMax */

    MPIFilterGainPIDCoeffDRATE,             /* DRate */

    MPIFilterGainPIDCoeffOUTPUT_LIMIT,      /* OutputLimit */
    MPIFilterGainPIDCoeffOUTPUT_LIMITHIGH,  /* OutputLimitHigh */
    MPIFilterGainPIDCoeffOUTPUT_LIMITLOW,   /* OutputLimitLow */
    MPIFilterGainPIDCoeffOUTPUT_OFFSET,     /* OutputOffset */

    MPIFilterGainPIDCoeffNOISE_POSITIONFFT, /* Ka0 */
    MPIFilterGainPIDCoeffNOISE_FILTERFFT,   /* Ka1 */
    MPIFilterGainPIDCoeffNOISE_VELOCITYFFT, /* Ka2 */
} MPIFilterGainPIDCoeff;

Description

MPIFilterGainPIDCoeff is a structure of enums that defines the filter coefficients for the PID filter algorithm.

Sample Code

/* Sets reasonable tuning parameters for a Trust TA9000 test stand */
void setPIDs(MPIFilter filter)
{
MPIFilterGain gain;
int32_t returnValue;
returnValue = mpiFilterGainGet(filter, 0, &gain); msgCHECK(returnValue); gain.coeff[MPIFilterGainPIDCoeffGAIN_PROPORTIONAL].f = (float)100; gain.coeff[MPIFilterGainPIDCoeffGAIN_INTEGRAL].f = (float)0.2; gain.coeff[MPIFilterGainPIDCoeffGAIN_DERIVATIVE].f = (float)1000;
gain.coeff[MPIFilterGainPIDCoeffFEEDFORWARD_POSITION].f = (float)0;
gain.coeff[MPIFilterGainPIDCoeffFEEDFORWARD_VELOCITY].f = (float)45;
gain.coeff[MPIFilterGainPIDCoeffFEEDFORWARD_ACCELERATION].f = (float)101000;
gain.coeff[MPIFilterGainPIDCoeffFEEDFORWARD_FRICTION].f = (float)450;
gain.coeff[MPIFilterGainPIDCoeffINTEGRATIONMAX_MOVING].f = (float)15000;
gain.coeff[MPIFilterGainPIDCoeffINTEGRATIONMAX_REST].f = (float)15000;
gain.coeff[MPIFilterGainPIDCoeffDRATE].f = (float)0;
gain.coeff[MPIFilterGainPIDCoeffOUTPUT_LIMIT].f = (float)32767;
gain.coeff[MPIFilterGainPIDCoeffOUTPUT_LIMITHIGH].f = (float)32767;
gain.coeff[MPIFilterGainPIDCoeffOUTPUT_LIMITLOW].f = (float)-32767;
gain.coeff[MPIFilterGainPIDCoeffOUTPUT_OFFSET].f = (float)0;
gain.coeff[MPIFilterGainPIDCoeffNOISE_POSITIONFFT].f = (float)0;
gain.coeff[MPIFilterGainPIDCoeffNOISE_FILTERFFT].f = (float)0;
gain.coeff[MPIFilterGainPIDCoeffNOISE_VELOCITYFFT].f = (float)0; returnValue = mpiFilterGainSet(filter, 0, &gain);
msgCHECK(returnValue);
}

See Also

MPIFilterGainPID