在线时间10 小时
UID2083568
ST金币44
蝴蝶豆0
注册时间2016-9-14
该用户从未签到
初级会员
- 最后登录
- 2022-12-14
|
想用ST MC电机库进行BLDC开发,实际要求电机可以快速切换正反转,但实际实验过程中却无法实现,两方向切换过程中必须要延时一些时间,否则反向无法正常启动。感觉就像是要“缓一下”才行,但这缓
的时间也太长了,我测试时则需500ms或以上(如下程序红色语句所示),想请教下这是什么原因。
开发套件为NUCLEO-IHM01,电机库版本为5.3,测试代码如下:
int main(void)
{
/* USER CODE BEGIN 1 */
int16_t Motor1Speed,Motor1SpeedAverage;
int16_t Motor1Dir;
uint16_t Motor1State,Motor1Faults;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_DAC_Init();
MX_TIM1_Init();
MX_USART2_UART_Init();
MX_MotorControl_Init();
/* Initialize interrupts */
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
MC_ProgramSpeedRampMotor1(100/6,600);
MC_StartMotor1();
HAL_Delay(2000);
Motor1Speed = MC_GetMecSpeedReferenceMotor1();
Motor1SpeedAverage = MC_GetMecSpeedAverageMotor1();
Motor1Dir = MC_GetImposedDirectionMotor1();
Motor1State = MC_GetSTMStateMotor1();
Motor1Faults = MC_GetOccurredFaultsMotor1();
if((Motor1State==10)||(Motor1State==11))
{
MC_AcknowledgeFaultMotor1();
}
MC_StopMotor1();
HAL_Delay(500);
MC_ProgramSpeedRampMotor1(-100/6,600);
MC_StartMotor1();
HAL_Delay(2000);
Motor1Speed = MC_GetMecSpeedReferenceMotor1();
Motor1SpeedAverage = MC_GetMecSpeedAverageMotor1();
Motor1Dir = MC_GetImposedDirectionMotor1();
Motor1State = MC_GetSTMStateMotor1();
Motor1Faults = MC_GetOccurredFaultsMotor1();
if((Motor1State==10)||(Motor1State==11))
{
MC_AcknowledgeFaultMotor1();
}
MC_StopMotor1();
HAL_Delay(500);
}
/* USER CODE END 3 */
}
|
|