|
@@ -144,7 +144,7 @@ typedef struct { |
|
|
PLSR_WaitCondition_t wait_condition; // 等待条件 |
|
|
PLSR_WaitCondition_t wait_condition; // 等待条件 |
|
|
} PLSR_SectionConfig_t; |
|
|
} PLSR_SectionConfig_t; |
|
|
|
|
|
|
|
|
// PLSR路径控制结构体 |
|
|
|
|
|
|
|
|
// PLSR路径控制结构体 - 添加三部分状态管理 |
|
|
typedef struct { |
|
|
typedef struct { |
|
|
PLSR_RouteState_t route_state; // 路径状态 |
|
|
PLSR_RouteState_t route_state; // 路径状态 |
|
|
uint8_t current_section_num; // 当前段号 |
|
|
uint8_t current_section_num; // 当前段号 |
|
@@ -161,10 +161,26 @@ typedef struct { |
|
|
PLSR_AccelConfig_t accel_config; // 加减速配置 |
|
|
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 freq_step; // 频率步长 |
|
|
uint32_t wait_start_tick; // 等待开始时间 |
|
|
uint32_t wait_start_tick; // 等待开始时间 |
|
|
uint32_t act_start_tick; // ACT开始时间 |
|
|
uint32_t act_start_tick; // ACT开始时间 |
|
@@ -174,7 +190,7 @@ typedef struct { |
|
|
uint16_t start_section; //<起始段数 |
|
|
uint16_t start_section; //<起始段数 |
|
|
uint32_t default_freq; //<脉冲默认速度 |
|
|
uint32_t default_freq; //<脉冲默认速度 |
|
|
|
|
|
|
|
|
// 新增:默认加减速参数 |
|
|
|
|
|
|
|
|
// 默认加减速参数 |
|
|
uint32_t default_accel_time_ms; // 默认加速时间(ms) |
|
|
uint32_t default_accel_time_ms; // 默认加速时间(ms) |
|
|
uint32_t default_decel_time_ms; // 默认减速时间(ms) |
|
|
uint32_t default_decel_time_ms; // 默认减速时间(ms) |
|
|
uint32_t accel_rate; // 加速度(Hz/ms) = default_freq / default_accel_time_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_SectionConfig_t section[PLSR_MAX_SECTIONS]; // 段配置数组 |
|
|
} PLSR_RouteConfig_t; |
|
|
} 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_STEP_FREQ_US 1000 // 默认TIM6更新频率1000微秒(1ms) |
|
|
#define PLSR_DEFAULT_ACCEL_TIME_MS 100 // 默认加速时间100ms |
|
|
#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 PLSR_Section_StartNewSection(PLSR_RouteConfig_t* route); //<启动新段,段更新后调用 |
|
|
void Calculate_PluseNum(PLSR_RouteConfig_t *route); //<计算段脉冲数,根据加减速率和目标频率计算每段的加速、匀速、减速脉冲数 |
|
|
void Calculate_PluseNum(PLSR_RouteConfig_t *route); //<计算段脉冲数,根据加减速率和目标频率计算每段的加速、匀速、减速脉冲数 |
|
|
void Calculate_PluseNum_Simplified(PLSR_RouteConfig_t *route); //<简化的脉冲数计算,用于快速计算每段的脉冲数,不考虑加减速 |
|
|
void Calculate_PluseNum_Simplified(PLSR_RouteConfig_t *route); //<简化的脉冲数计算,用于快速计算每段的脉冲数,不考虑加减速 |
|
|
|
|
|
void PLSR_SetupThreePartExecution(PLSR_RouteConfig_t* route); //<设置三部分执行状态和目标频率 |
|
|
|
|
|
|
|
|
// ==================== PLSR加减速算法函数 ==================== |
|
|
// ==================== PLSR加减速算法函数 ==================== |
|
|
void PLSR_Accel_Process(PLSR_RouteConfig_t* route); //<加减速执行函数(新的直线加减速) |
|
|
void PLSR_Accel_Process(PLSR_RouteConfig_t* route); //<加减速执行函数(新的直线加减速) |
|
|