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);
}