ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[应用相关] 基于ST官方电机开发套件:FOC5.3库-正反转加减速代码及调...

[复制链接]
楼主: mmuuss586
 楼主 | 2019-1-8 21:50 | 显示全部楼层
点击OK跳到工程硬件配置窗口界面,如下图所示,可更改相关默认参数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 21:51 | 显示全部楼层
所有参数设置完成后或不设置,点击生成按钮生成相应的工程文件(向下箭头)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 21:51 | 显示全部楼层
点击OK按钮后如下图所示,可修改工程名和选型路径等


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 21:52 | 显示全部楼层
点击保存按钮后如下图所示,可生成相关的软件工程(MDK或IAR

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 21:53 | 显示全部楼层
生成完后如下图所示,会显示Completed


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 21:54 | 显示全部楼层
找到刚才生成的文件夹下的工程文件,打开MDK工程,如下图所示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:00 | 显示全部楼层
优化等级设置成最高(设的太低,FOC库会运行报错,导致电机转不起来),并编译下工程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:01 | 显示全部楼层
在mc_api.c中有一系列函数来实现对电机的控制,主要调用mc_api.c里的一些函数


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:02 | 显示全部楼层
mc_api.c中常用函数

MC_StartMotor1
MC_StopMotor1
MC_ProgramSpeedRampMotor1
MC_ProgramTorqueRampMotor1
MC_GetMecSpeedReferenceMotor1
MC_GetMecSpeedAverageMotor1
MC_GetSTMStateMotor1
MC_GetOccurredFaultsMotor1
MC_AcknowledgeFaultMotor1
MC_GetImposedDirectionMotor1


 楼主 | 2019-1-8 22:03 | 显示全部楼层
MC_StartMotor1();  //电机启动
如果Motor1为IDLE状态,该命令立即执行启动电机,返回值true,反之返回命令丢弃返回false。
bool MC_StartMotor1(void)
{
        return MCI_StartMotor( pMCI[M1] );
}

MC_StopMotor1();  //电机停止
如果Motor1为RUN或START状态,该命令立即执行停止电机,反之被丢弃。
bool MC_StopMotor1(void)
{
        return MCI_StopMotor( pMCI[M1] );
}
 楼主 | 2019-1-8 22:04 | 显示全部楼层
MC_ProgramSpeedRampMotor1(3000/6,2000); //设置为速度模式,设置速度指令
调用此函数后hDurationms设置时间内当前速度变化到hFinalSpeed设置的目标速度
void MC_ProgramSpeedRampMotor1( int16_t hFinalSpeed, uint16_t hDurationms )
{
        MCI_ExecSpeedRamp( pMCI[M1], hFinalSpeed, hDurationms );
}

MC_ProgramTorqueRampMotor1(2000,2000);         //设置为转矩模式,设置转矩指令
调用此函数后hDurationms设置时间内当前转矩变化到hFinalTorque设置的目标转矩
void MC_ProgramTorqueRampMotor1( int16_t hFinalTorque, uint16_t hDurationms )
{
        MCI_ExecTorqueRamp( pMCI[M1], hFinalTorque, hDurationms );
}
 楼主 | 2019-1-8 22:04 | 显示全部楼层
Motor1Speed=MC_GetMecSpeedReferenceMotor1();    //获取Motor1当前指令的机械转速,数字量1代表0.1HZ
int16_t MC_GetMecSpeedReferenceMotor1(void)
{
        return MCI_GetMecSpeedRef01Hz( pMCI[M1] );
}

Motor1SpeedAverage=MC_GetMecSpeedAverageMotor1();        //获取Motor1当前指令的平均机械转速,数字量1代表0.1HZ
int16_t MC_GetMecSpeedAverageMotor1(void)
{
        return MCI_GetAvrgMecSpeed01Hz( pMCI[M1] );
}
 楼主 | 2019-1-8 22:05 | 显示全部楼层
Motor1State=MC_GetSTMStateMotor1(); //获取Motor1状态机的电机状态
State_t  MC_GetSTMStateMotor1(void)
{
        return MCI_GetSTMState( pMCI[M1] );
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:05 | 显示全部楼层
Motor1Faults=MC_GetOccurredFaultsMotor1();//获取Motor1发生过的故障代码       
uint16_t MC_GetOccurredFaultsMotor1(void)
{
        return MCI_GetOccurredFaults( pMCI[M1] );
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:06 | 显示全部楼层
MC_AcknowledgeFaultMotor1();//清除电机故障错误
调用此函数前,如果电机发生故障。电机停留在FAULT_OVER状态,并保留故障代码。调用后,状态机清除故障代码记录,并恢复到IDLE状态。
bool MC_AcknowledgeFaultMotor1( void )
{
        return MCI_FaultAcknowledged( pMCI[M1] );
}

Motor1Dir=MC_GetImposedDirectionMotor1();        //返回最后一个指令设置的电机方向,如果最终的速度或转矩指令为负数返回-1,否则返回1
int16_t MC_GetImposedDirectionMotor1(void)
{
        return MCI_GetImposedMotorDirection( pMCI[M1] );
}
 楼主 | 2019-1-8 22:06 | 显示全部楼层
main函数while循环代码示例:

1、电机以3000rpm运行,加速时间为2S;
2、程序启动电机运行,运行速度为3000rpm,在10S后停止转动;
3、电机停止前,读取电机相关参数(方向、速度、故障等);
4、电机故障处理;
5、停止1S后电机重新运行,速度依然是3000rpm,不过速度为-3000rpm;
6、以上过程重复操作。
 楼主 | 2019-1-8 22:07 | 显示全部楼层
参考代码截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:08 | 显示全部楼层
打开MotorControl Workbench观察相关参数和电机运行曲线
点Monitor按钮观察电机相关参数

点开后如下图所示



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:10 | 显示全部楼层
点击connect按钮先进行连接,如连接不上按下板子上黑色复位按钮或更换串口端口号先进行测试。

连接后如下图所示(可以看到SDK 5.3版本)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2019-1-8 22:11 | 显示全部楼层
点Basic界面,可以看到板子的一些参数,也可以对板子进行启动、停止、清除故障等操作


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表