KmdFoc 上位机
大约 3 分钟KmdFoc使用指南
KmdFoc 上位机
KmdTools上位机
Note
对于KmdTools在此不再进行说明,大致流程前面已经说明了,在此如果使用CAN或USB调试,则UART可以被复用为波形输出功能,可以打印更多的调试信息。
对于 vSailorProject 的支持
vSailorProject 高性能开源调试上位机。
Note
当串口未被用于通信控制时,可以开启串口的波形输出功能,在此可以打印更多的数据波形
在此用户可以通过 {int, HAL_USER_CONFIG_UART_DEBUG_MS} 命令开启UART打印数据波形,同时控制波形反馈频率。然后连接 vSailorProject
即可查看完整的调试波形。
Note
"uart_debug_ms", "", "设置串口开启调试,按设定周期打印数据波形。设置为0则不启用。如果启用,设置值需满足大于15ms,默认0。"
/**
* @description: 串口调试输出
* @param {tHalFocStruct} *pHalFoc
* @return {*}
*/
bool hal_debug_report(tHalFocStruct *pHalFoc)
{
float tData[24];
// 旋转坐标系对应Id
tData[0] = pHalFoc->mFocCore.mFocCurrent.i_d_filt;
// 旋转坐标系对应Iq
tData[1] = pHalFoc->mFocCore.mFocCurrent.i_q_filt;
// 电流闭环电流输入
tData[2] = pHalFoc->mFocCore.mFocControl.target.current_;
// 电流设定值
tData[3] = pHalFoc->mFocCore.mFocControl.ready_set.current_;
// 三相电流
tData[4] = pHalFoc->mFocCore.mFocCurrent.i_a;
tData[5] = pHalFoc->mFocCore.mFocCurrent.i_b;
tData[6] = pHalFoc->mFocCore.mFocCurrent.i_c;
// 转速设定值
tData[7] = pHalFoc->mFocCore.mFocControl.ready_set.velocity;
// 转速闭环输入
tData[8] = pHalFoc->mFocCore.mFocControl.target.velocity;
// 实际转速
tData[9] = pHalFoc->mFocCore.mFocEncoder.vel_estimate_;
// 位置设定值
tData[10] = pHalFoc->mFocCore.mFocControl.ready_set.position;
// 位置闭环输入
tData[11] = pHalFoc->mFocCore.mFocControl.target.position;
// 实际位置
tData[12] = pHalFoc->mFocCore.mFocEncoder.pos_estimate_;
tData[13] = pHalFoc->mFocCore.mFocEncoder.phase_;
// 当前计数值
tData[14] = pHalFoc->mFocCore.mFocEncoder.shadow_count_;
// 实际编码器读数
tData[15] = pHalFoc->mFocCore.mFocEncoder.encoder_cnt;
// 编码器分辨率
tData[16] = pHalFoc->mFocCore.mFocEncoder.enc_cpr;
// 轨迹控制模式输出
tData[17] = pHalFoc->mFocCore.mFocControl.mTraj.trajStep.Y;
tData[18] = pHalFoc->mFocCore.mFocControl.mTraj.trajStep.Yd;
tData[19] = pHalFoc->mFocCore.mFocControl.mTraj.trajStep.Ydd;
return pHalFoc->mFocUser.pCallbackFun->hal_port_fun(&pHalFoc->mFocUser.pCallbackFun->hal_transmit_type, pHalFoc->mFocUser.pUsrConfig->can_id, tData, 20);
}