|
实验3:基于MC SDK5.0 PI组件接口函数做在线参数修改。 1、实验内容:
2、程序修改; 在生成的源码上修改,内容如下: main.c内容修改: 程序的顶部增加mc_extended_api.h头文件。 /* USER CODE BEGIN Includes */ #include "mc_extended_api.h" /* USER CODE END Includes */ /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ MCT_Handle_t *pMctHdl; //定义的变量 static int16_t Speed_Kp,Speed_Ki; /* USER CODE END PV */ int main(void) { /* USER CODE BEGIN 1 */ /* 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 */ pMctHdl = GetMCT(M1); Speed_Kp= PID_GetKP(pMctHdl->pPIDSpeed); Speed_Ki= PID_GetKI(pMctHdl->pPIDSpeed); PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } 3、程序执行的结果: 3.1、原始PID数据 PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*1); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*1);
3.2、2倍PID数据 PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);
3.3、0.5倍PID数据 PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*0.5); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*0.5);
|
微信公众号
手机版
F302的板子