From dd37a5345cfde0f404a75a2031aa448e8a195cb5 Mon Sep 17 00:00:00 2001 From: hanyongwei <2043702190@qq.com> Date: Wed, 2 Sep 2026 15:14:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E6=97=A7=E6=9F=A5=E8=A1=A8?= =?UTF-8?q?=E6=AE=8B=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hanyongwei <2043702190@qq.com> --- plsr/accel_curve/plsr_accel_curve.c | 26 ++------------------------ plsr/accel_curve/plsr_accel_curve.h | 8 +------- plsr/run_control/plsr_run_control.c | 7 ++----- 3 files changed, 5 insertions(+), 36 deletions(-) diff --git a/plsr/accel_curve/plsr_accel_curve.c b/plsr/accel_curve/plsr_accel_curve.c index cf02788..453199f 100644 --- a/plsr/accel_curve/plsr_accel_curve.c +++ b/plsr/accel_curve/plsr_accel_curve.c @@ -9,7 +9,7 @@ PlsrAccelPlan_t g_plsr_accel_plan; /* 当前段三相规划结果 */ /* PlsrAccelRuntime_t g_plsr_accel_runtime; /* 当前相 ISR 逐拍状态 */ /* 当前相运行态全局一份 */ /* - * 形状表(Q24,1.0 = 1<<24):ISR 按 t/T 查表再线性插值,不再预建 4096 点频率表。 + * 形状表(Q24,1.0 = 1<<24):ISR 按 t/T 查表再线性插值。 * 257 点 → 256 段;末点固定 PLSR_Q24_ONE。 */ #define PLSR_Q24_ONE (1UL << 24) /* Q24 单位 1.0 */ @@ -501,15 +501,6 @@ uint32_t PlsrAccelCurveFreqAtPulse(const PlsrAccelPlan_t *plan, return PlsrAccelCurveClampFreqHz(freq_hz); } -/** - * 兼容旧调用:S/正弦不再预建 4096 点频率表。 - * ISR 内时间累计 + 257 点 Q24 形状表插值取频。 - */ -void PlsrAccelPrebuildFreqTables(const PlsrAccelPlan_t *plan) -{ - (void)plan; /* 保留 API,PlanSeg 仍可调用;无事可做 */ -} - /** @brief 进入加速相 */ void PlsrAccelBeginAccel(PlsrAccelRuntime_t *runtime, const PlsrAccelPlan_t *plan) @@ -525,10 +516,6 @@ void PlsrAccelBeginAccel(PlsrAccelRuntime_t *runtime, plan->accel_rate_hz_per_s, /* 加速斜率 */ plan->decel_rate_hz_per_s, /* 减速斜率 */ plan->curve_mode); /* 曲线模式 */ - /* S/正弦:ISR 走时间累计+形状表,不绑预建频表 */ - runtime->freq_table_id = 0U; - runtime->table_length = 0U; - runtime->table_stride = 1U; } /** @brief 进入减速相 */ @@ -546,9 +533,6 @@ void PlsrAccelBeginDecel(PlsrAccelRuntime_t *runtime, plan->accel_rate_hz_per_s, /* 斜率 */ plan->decel_rate_hz_per_s, /* 斜率 */ plan->curve_mode); /* 模式 */ - runtime->freq_table_id = 0U; - runtime->table_length = 0U; - runtime->table_stride = 1U; } /** @brief 进入匀速相 */ @@ -568,9 +552,6 @@ void PlsrAccelBeginConstSpeed(PlsrAccelRuntime_t *runtime, runtime->freq_rising = 1U; /* 方向随便填,反正不爬 */ runtime->curve_mode = plan->curve_mode; /* 模式照抄 */ runtime->is_active = 0U; /* 匀速:ISR 不改频 */ - runtime->freq_table_id = 0U; /* 不用频率表 */ - runtime->table_length = 0U; /* 表长0 */ - runtime->table_stride = 1U; /* 步长无关 */ runtime->elapsed_time_us = 0U; /* 时间清零 */ runtime->jerk_time_us = 0U; /* 加加速度阶段时间清零 */ runtime->const_accel_time_us = 0U; /* 恒加速时间清零 */ @@ -579,7 +560,7 @@ void PlsrAccelBeginConstSpeed(PlsrAccelRuntime_t *runtime, /** * @brief ISR 里走:本相再往前一拍,返回下一拍该写成多大频率 - * 直线:现场 v^2 逼近;S/正弦:时间累计 + 257 点 Q24 形状表线性插值(不查 4096 预建频表)。 + * 直线:现场 v^2 逼近;S/正弦:时间累计 + 257 点 Q24 形状表线性插值。 */ uint32_t PlsrAccelNextFreq(PlsrAccelRuntime_t *runtime) { @@ -1540,9 +1521,6 @@ static void PlsrAccelRuntimeBeginRamp(PlsrAccelRuntime_t *runtime, /* 有脉冲且起止不同才激活 */ runtime->is_active = ((total_pulses > 0U) && (start_freq_hz != end_freq_hz)) ? 1U : 0U; /* 有拍且起止不同才算活跃 */ - runtime->freq_table_id = 0U; /* 不用预建频表 */ - runtime->table_length = 0U; /* 表长清 */ - runtime->table_stride = 1U; /* 保留字段 */ PlsrAccelRuntimeCalcTimes(runtime); /* 按模式预填时间参数 */ } diff --git a/plsr/accel_curve/plsr_accel_curve.h b/plsr/accel_curve/plsr_accel_curve.h index 8ce5d1e..73d7d09 100644 --- a/plsr/accel_curve/plsr_accel_curve.h +++ b/plsr/accel_curve/plsr_accel_curve.h @@ -62,7 +62,7 @@ uint32_t PlsrAccelCurveFreqAtPulse(const PlsrAccelPlan_t *plan, /** * 单相逐脉冲运行态(ISR 热路径,每来一个 UPDATE 调 Step 一次) * 直线:每次按目标平方值逐步逼近下一频率 - * S/正弦:时间累计 + 257 点 Q24 形状表线性插值(不再查预建频率表) + * S/正弦:时间累计 + 257 点 Q24 形状表线性插值 */ typedef struct { uint32_t cur_freq_hz; /* 当前输出频率 */ @@ -75,11 +75,8 @@ typedef struct { uint32_t jerk_time_us; /* S 曲线单个 jerk 阶段时间 */ uint32_t const_accel_time_us; /* S 曲线恒加速阶段时间 */ uint32_t ramp_time_us; /* 整个斜坡时间 */ - uint32_t table_stride; /* 保留字段(不再用于预建频表) */ - uint32_t table_length; /* 保留字段(不再用于预建频表) */ uint8_t freq_rising; /* 1=频率升高,0=降低 */ uint8_t is_active; /* 1=当前相仍在运行 */ - uint8_t freq_table_id; /* 保留:恒为 0(不用预建频表) */ PlsrAccelMode_e curve_mode; /* 直线 / S / 正弦 */ } PlsrAccelRuntime_t; @@ -87,9 +84,6 @@ typedef struct { extern PlsrAccelPlan_t g_plsr_accel_plan; /* 本段三相规划结果 */ extern PlsrAccelRuntime_t g_plsr_accel_runtime; /* 当前相 ISR 逐拍状态 */ -/** 兼容旧调用:S/正弦不再预建频率表(空操作) */ -void PlsrAccelPrebuildFreqTables(const PlsrAccelPlan_t *plan); - /** 进入加速相:起→峰;S/正弦在 ISR 内形状表取频 */ void PlsrAccelBeginAccel(PlsrAccelRuntime_t *runtime, const PlsrAccelPlan_t *plan); diff --git a/plsr/run_control/plsr_run_control.c b/plsr/run_control/plsr_run_control.c index 04736ae..5eb9610 100644 --- a/plsr/run_control/plsr_run_control.c +++ b/plsr/run_control/plsr_run_control.c @@ -1637,7 +1637,7 @@ static uint8_t PlsrRunControlResolveSegPlanEndpoints(uint16_t seg_idx, uint32_t /** * @brief 规划本段并锁 PSC / 进初始相 * - * 包装 accel_curve Plan + Prebuild,并据结果选 PH_APPROACH/CONST/DECEL。 + * 包装 accel_curve Plan,并据结果选 PH_APPROACH/CONST/DECEL。 * 0x02:规划峰值达不到段表 f_tgt 时置故障(三角波),仍按压低后的峰运行。 */ static void PlsrRunControlPlanSeg(uint32_t total, uint32_t f_from, @@ -1671,13 +1671,10 @@ static void PlsrRunControlPlanSeg(uint32_t total, uint32_t f_from, g_plsr_accel_runtime.total_pulses = 0U; /* 开跑前清当前相步进计数 */ - /* S/正弦:在任务上下文预建频率表,ISR 只查表 */ - PlsrAccelPrebuildFreqTables(&g_plsr_accel_plan); /* 兼容空操作:S/正弦 ISR 内形状表取频 */ - /* 运行层使用规划后的实际起始频率 */ f_start = g_plsr_accel_plan.start_freq_hz; /* 规划后的实际入口 */ - /* 脉冲域:ISR 用 PlsrAccelNextFreq(直线现场算 / S·正弦查预建表)*/ + /* 脉冲域:ISR 用 PlsrAccelNextFreq(直线现场算 / S·正弦形状表插值)*/ /* 本段频率范围锁 PSC,升降只改 ARR;跨度过大则 LockPscRange 自动不锁 */ /* 本段可能出现的最低/最高频率,取 入口、目标、出口 三者的 min/max */ f_min = g_plsr_accel_plan.target_freq_hz; /* 先用目标频当上下限种子 */