请教:STM32 FOC 4.2/ 4.3电机库如何通过按键确认故障,重新启动? 每次启动失败后,都需要“确认故障”,才能重新启动。 库的上位机,点击Fault Ack,可以确认故障, 但是我想使用实体按键,或者产生故障后延时一段时间自行“确认故障”并重新启动电机。 该如何实现,有知道的交流一下。谢谢! 我知道点击“Fault Ack”后执行了这个函数:MCI_FaultAcknowledged(oMCI); 但是不知怎么处理。直接加到按键判断函数里面是编译不过的,提示以下错误: main.c(242): error: #167: argument of type "CMCI *" is incompatible with parameter of type "CMCI" |
是这个,.
if(MCI_GetSTMState(oMCI[0]) == FAULT_OVER) //如果状态==FAULT_OVER
{
delay1ms(1500); // 延迟1500毫秒
MCI_FaultAcknowledged(oMCI[0]); // 清除故障
}
你编译出错语法没用对
MCI_FaultAcknowledged(oMCI); //这是你的代码没有附值
MCI_FaultAcknowledged(oMCI[0]);// [0] 代表IDLE 以一下是所有状态可在MC_type.h 头文件找到
typedef enum
{
ICLWAIT = 12, /*!< 持久状态,系统正在等待ICL失活。不可能运行电机如果ICL是活跃的。
在ICL激活之前,状态是强制ICL等待,当ICL变为非活动状态时移动到空闲*/
IDLE = 0, /*!< 持久状态,跟随状态可以是IDLE启动如果已给出启动电机命令或如果
启动对齐命令已被IDLE对齐鉴于*/
IDLE_ALIGNMENT = 1, /*!< “通过”状态符合执行的代码只有一次后,编码器对齐命令。下一个状态
可以是Calth-CurgEug BooTo-Cop-CAP或根据配置对齐。它也可以是
任何停止,如果停止电机命令已经鉴于。*/
ALIGN_CHARGE_BOOT_CAP = 13,/*!< 门驱动器启动的持久状态电容器将被充电。下一个州将是对齐对齐。
如果停止,它也可以停止。给出了电机指令。 */
ALIGN_OFFSET_CALIB = 14,/*!< 电动机电流偏移的持续状态测量将被校准。下一个状态将是对齐清楚。
它也可以是任何停止,如果停止电机命令已经给出。 */
ALIGN_CLEAR = 15, /*!< 清除对象的“通过”状态为启动设置。下一个状态将是对齐。它也可以是任何停止。
如果已经给出停止电机指令。*/
ALIGNMENT = 2, /*!< 编码器正确的持续状态对准机械角度,跟随状态可以只有停止。 */
IDLE_START = 3, /*!< "通过“状态”来执行要执行的代码在启动电机指令后只有一次。下一个状态
可以是CuGe、BooTo-Cop-Cad或OffStCyCalb。根据配置。它也可以是任何停止。如果已经给出停止电机指令。 */
CHARGE_BOOT_CAP = 16, /*!< 门驱动器启动的持久状态电容器将被充电。下一个州将是偏心距它也可以是任何停止,
如果停止电机命令已经给出。 */
OFFSET_CALIB = 17, /*!< 电动机电流偏移的持续状态测量将被校准。下一个状态将是清楚。它也可以是任何停止,
如果停止电机命令已经给出。*/
CLEAR = 18, /*!< "通过“对象被清除的状态”为启动设置。下一个状态将开始。它也可以是任何停止如果给
出了停止电机指令。 */
START = 4, /*!< 电动机起动的持续状态被处决。正常状态如下第一次验证的速度是检测。
另一种可能的后续状态是如果停止电机命令已执行,将停止 */
START_RUN = 5, /*!< "通过“状态”,只执行代码一次启动和运行状态之间的关系在这里执行。
以下状态通常运行但如果停止电机命令,也可以停止。被给予*/
RUN = 6, /*!< 持续状态与运行电机。以下当停止电机指令时,状态通常是任意停止。已执行 */
ANY_STOP = 7, /*!< "通过“状态”,只执行代码一次在任何状态之间,停止它的意图在这里执行。
以下状态通常停止 */
STOP = 8, /*!< 持久状态。正常跟随状态动态停止条件机器被检测到*/
STOP_IDLE = 9, /*!< "通过“状态”,只执行代码曾经在停止与闲置之间,它注定在这里执行。
以下状态通常是空闲的*/
FAULT_NOW = 10, /*!<持久状态,状态机可以从任何条件直接到这个状态故障处理方法。此方法也
管理只允许进入以下状态的通道是故障转移*/
FAULT_OVER = 11 /*!<应用程序的持久状态当故障条件消失时留下。跟随状态通常是停止空闲,
状态机被移动为一旦用户确认故障情况. */
} State_t;
我也是新手刚玩一个月不到,文化水平不好很多英语不懂都是百度一条一条翻译的 ,,见笑了