工具/软件:Code Composer Studio
您好!
我已读取并测试了 proj_lab10e。 它可以正常工作、但我需要做的是使用电动自行车电机进行实时实验、我不想损坏任何东西。
我要做的是、当踩下制动器时、电机将会变为自由意志、并且自身减速(不是减速)
如果在松开制动器后速度设置为0以外的任何值、则制动电机必须返回到所需速度。 该部件将通过飞行启动实验室来完成、但我不认为在项目中等待制动器释放的正确方法、因此在该控制器运行飞行启动以获得所需的速度后、该控制器应运行飞行启动。
我想我应该放置一个 while 环路、以便制动传感器等待其释放。
现在、项目通过将 Flag_runState 更改为0来运行、从而使电机减速、但项目会将 Flag_runState 设置为1本身的超短时间。
到目前为止、我在 flyingStart.h 函数 FS_run 中执行的操作
静态内联 void FS_run (CTRL_Handle handle、FS_handle fsHandle)
{
CTRL_Obj * Ctrl =(CTRL_Obj *)句柄;
FS_Obj * FS=(FS_Obj *) fsHandle;
if (fs->flag_enableFs == true)
{
CTRL_setId_ref_pu (handle、_IQ (0.0));
CTRL_setIq_ref_pu (handle、_IQ (0.0));
fs->speed_ref_pu = CTRL_getSpd_ref_pu (handle);
fs->speed_est_pu = EST_getFm_pu (ctrl->estHandle);
fs->speed_est_avg =_IQmpy (fs->speed_est_avg、_IQ (0.8))+_IQmpy (fs->speed_est_pu、_IQ (0.20));
if (fs->cnt_checktime >= fs->max_checktime)
{
if (_IQabs (fs->speed_est_avg)< fs->speed_fs_min)
{
fs->speed_set_pu =_IQ (0.0);
}
其他
{
fs->speed_set_pu = fs->speed_est_avg;
}
fs->flag_enableF = false;
fs->flag_enableSpeedCtrl = true;
TRAJ_setIntValue (Ctrl->trajHandle_SPD、FS->SPED_SET_PU);
PID_setUi (ctrl->pidHandle_SPD、_IQ (0.0));
CTRL_setSpd_out_pu (handle、_IQ (0.0));
}
其他
fs->cnt_checktime++;
}
其他
{
fs->flag_enableSpeedCtrl = true;
}
返回;
}// FS_run()函数结束
如果我更改此行
if (fs->cnt_checktime >= fs->max_checktime)
更改为
while (brakeSensor);//brakeSensor 为1等待释放、然后运行回所需速度并快速启动。
然后、我将检查估算速度和预先确定的最小速度。
if (_IQabs (fs->speed_est_avg)< fs->speed_fs_min)
{
fs->speed_set_pu =_IQ (0.0);
}
其他
{
fs->speed_set_pu = fs->speed_est_avg;
}
fs->flag_enableF = false;
fs->flag_enableSpeedCtrl = true;
TRAJ_setIntValue (Ctrl->trajHandle_SPD、FS->SPED_SET_PU);
PID_setUi (ctrl->pidHandle_SPD、_IQ (0.0));
CTRL_setSpd_out_pu (handle、_IQ (0.0));
我的方向是正确的、还是我的想法完全错误?