Explorar el Código

修改加减速逻辑bug,减速匀速减速情况异常修改.

master
JIU JIALIN hace 1 mes
padre
commit
a568d84ec5
Se han modificado 4 ficheros con 762 adiciones y 1489 borrados
  1. +31
    -6
      PLSR/PLSR/Core/Inc/tim.h
  2. +425
    -441
      PLSR/PLSR/Core/Src/tim.c
  3. +306
    -1042
      PLSR/PLSR/EWARM/test.1.dep
  4. BIN
      PLSR/PLSR/EWARM/test.1/Exe/test.1.sim

+ 31
- 6
PLSR/PLSR/Core/Inc/tim.h Ver fichero

@@ -144,7 +144,7 @@ typedef struct {
PLSR_WaitCondition_t wait_condition; // 等待条件
} PLSR_SectionConfig_t;

// PLSR路径控制结构体
// PLSR路径控制结构体 - 添加三部分状态管理
typedef struct {
PLSR_RouteState_t route_state; // 路径状态
uint8_t current_section_num; // 当前段号
@@ -161,10 +161,26 @@ typedef struct {
PLSR_AccelConfig_t accel_config; // 加减速配置
// 运行状态参数
PLSR_RunState_t run_state; // 运行状态
uint32_t accel_pulse_count; // 加速脉冲数
uint32_t decel_pulse_count; // 减速脉冲数
uint32_t const_pulse_count; // 匀速脉冲计数
PLSR_RunState_t run_state; // 当前运行状态
// 三部分脉冲计数(重新定义用途)
uint32_t accel_pulse_count; // 第一部分脉冲数(可能是加速、减速或匀速)
uint32_t const_pulse_count; // 第二部分脉冲数(匀速)
uint32_t decel_pulse_count; // 第三部分脉冲数(减速到0)
// 新增:三部分状态标识
PLSR_RunState_t part1_state; // 第一部分状态(ACCEL/DECEL/CONST)
PLSR_RunState_t part2_state; // 第二部分状态(通常是CONST)
PLSR_RunState_t part3_state; // 第三部分状态(通常是DECEL)
// 新增:三部分目标频率
uint32_t part1_target_freq; // 第一部分目标频率
uint32_t part2_target_freq; // 第二部分目标频率(匀速频率)
uint32_t part3_target_freq; // 第三部分目标频率(通常是0)
// 新增:当前执行部分
uint8_t current_part; // 当前执行部分:1-第一部分,2-第二部分,3-第三部分
uint32_t freq_step; // 频率步长
uint32_t wait_start_tick; // 等待开始时间
uint32_t act_start_tick; // ACT开始时间
@@ -174,7 +190,7 @@ typedef struct {
uint16_t start_section; //<起始段数
uint32_t default_freq; //<脉冲默认速度
// 新增:默认加减速参数
// 默认加减速参数
uint32_t default_accel_time_ms; // 默认加速时间(ms)
uint32_t default_decel_time_ms; // 默认减速时间(ms)
uint32_t accel_rate; // 加速度(Hz/ms) = default_freq / default_accel_time_ms
@@ -183,6 +199,14 @@ typedef struct {
PLSR_SectionConfig_t section[PLSR_MAX_SECTIONS]; // 段配置数组
} PLSR_RouteConfig_t;

// 三部分执行状态枚举
typedef enum {
PLSR_PART_1 = 1, // 执行第一部分
PLSR_PART_2 = 2, // 执行第二部分
PLSR_PART_3 = 3, // 执行第三部分
PLSR_PART_COMPLETE = 4 // 三部分全部完成
} PLSR_PartState_t;

// 默认参数定义
#define PLSR_DEFAULT_STEP_FREQ_US 1000 // 默认TIM6更新频率1000微秒(1ms)
#define PLSR_DEFAULT_ACCEL_TIME_MS 100 // 默认加速时间100ms
@@ -212,6 +236,7 @@ uint8_t PLSR_Section_CheckWaitCondition(PLSR_RouteConfig_t* route); //<检查等
void PLSR_Section_StartNewSection(PLSR_RouteConfig_t* route); //<启动新段,段更新后调用
void Calculate_PluseNum(PLSR_RouteConfig_t *route); //<计算段脉冲数,根据加减速率和目标频率计算每段的加速、匀速、减速脉冲数
void Calculate_PluseNum_Simplified(PLSR_RouteConfig_t *route); //<简化的脉冲数计算,用于快速计算每段的脉冲数,不考虑加减速
void PLSR_SetupThreePartExecution(PLSR_RouteConfig_t* route); //<设置三部分执行状态和目标频率

// ==================== PLSR加减速算法函数 ====================
void PLSR_Accel_Process(PLSR_RouteConfig_t* route); //<加减速执行函数(新的直线加减速)


+ 425
- 441
PLSR/PLSR/Core/Src/tim.c
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 306
- 1042
PLSR/PLSR/EWARM/test.1.dep
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


BIN
PLSR/PLSR/EWARM/test.1/Exe/test.1.sim Ver fichero


Cargando…
Cancelar
Guardar