TI中文支持网
TI专业的中文技术问题搜集分享网站

关于速度跟踪的疑问 static inline void TRAJ_run(TRAJ_Handle handle)

if(CTRL_doSpeedCtrl(handle))
{
_iq refValue = TRAJ_getIntValue(obj->trajHandle_spd);
_iq fbackValue = EST_getFm_pu(obj->estHandle);
_iq outMax = TRAJ_getIntValue(obj->trajHandle_spdMax);
_iq outMin = -outMax;

// reset the speed count
CTRL_resetCounter_speed(handle);

PID_setMinMax(obj->pidHandle_spd,outMin,outMax);
PID_run_spd(obj->pidHandle_spd,refValue,fbackValue,CTRL_getSpd_out_addr(handle));

}

疑问1:   速度环 没有做跟踪运算。 但是调试的时候 看到 跟踪值 在向目标接近。

疑问2:   跟踪函数 static inline void TRAJ_run(TRAJ_Handle handle)  的最大最小值 为0, 就是说 TRAJ_run(TRAJ_Handle handle) 计算值为0

                 那么速度怎跟踪的?在程序中始终没有找到 设定的速度值 赋给 跟踪函数的 目标值  的 语句。 最大最小值 初始化为0,后面没有设定。

               整个例程中也没有找到 TRAJ_run(TRAJ_Handle handle) 调用的地方。 那么速度跟踪怎么实现的了?

static inline void TRAJ_run(TRAJ_Handle handle)
{
_iq targetValue = TRAJ_getTargetValue(handle);
_iq intValue = TRAJ_getIntValue(handle);
_iq error = targetValue – intValue;
_iq maxDelta =_IQabs(TRAJ_getMaxDelta(handle));
_iq minValue = TRAJ_getMinValue(handle);
_iq maxValue = TRAJ_getMaxValue(handle);

// increment the value
intValue += _IQsat(error,maxDelta,-maxDelta);

// bound the value
intValue = _IQsat(intValue,maxValue,minValue);

// store the value
TRAJ_setIntValue(handle,intValue);

return;
} // end of TRAJ_run() function

赞(0)
未经允许不得转载:TI中文支持网 » 关于速度跟踪的疑问 static inline void TRAJ_run(TRAJ_Handle handle)
分享到: 更多 (0)