Explorar el Código

修改部分过长的变量命名

dev3
hanyongwei hace 2 semanas
padre
commit
27140c2ddb
Se han modificado 9 ficheros con 2575 adiciones y 2436 borrados
  1. +1300
    -1210
      plsr/accel_curve/plsr_accel_curve.c
  2. +31
    -31
      plsr/accel_curve/plsr_accel_curve.h
  3. +6
    -6
      plsr/command/plsr_command.c
  4. +10
    -10
      plsr/param/plsr_param.c
  5. +3
    -3
      plsr/param/plsr_param.h
  6. +1
    -1
      plsr/plsr.h
  7. +13
    -13
      plsr/pulse_driver/plsr_pulse_driver.c
  8. +1
    -1
      plsr/pulse_driver/plsr_pulse_driver.h
  9. +1210
    -1161
      plsr/run_control/plsr_run_control.c

+ 1300
- 1210
plsr/accel_curve/plsr_accel_curve.c
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 31
- 31
plsr/accel_curve/plsr_accel_curve.h Ver fichero

@@ -17,29 +17,29 @@
*/
typedef struct {
uint32_t accel_pulses; /* 入口到目标频率需要的脉冲数 */
uint32_t constant_pulses; /* 保持目标频率的脉冲数 */
uint32_t const_pulses; /* 保持目标频率的脉冲数 */
uint32_t decel_pulses; /* 目标到出口频率需要的脉冲数 */
uint32_t start_frequency_hz; /* 本段实际入口频率 */
uint32_t target_frequency_hz; /* 实际目标频率,短段可能被降低 */
uint32_t end_frequency_hz; /* 本段出口频率 */
uint32_t start_freq_hz; /* 本段实际入口频率 */
uint32_t target_freq_hz; /* 实际目标频率,短段可能被降低 */
uint32_t end_freq_hz; /* 本段出口频率 */
uint32_t accel_rate_hz_per_s; /* 升高频率时使用的变化率 */
uint32_t decel_rate_hz_per_s; /* 降低频率时使用的变化率 */
PlsrAccelMode_e curve_mode; /* 直线 / S / 正弦 */
} PlsrAccelPlan_t;

/** 配置起速 → 规划入口:起速>目标用起速;否则目标与起跳比较取其一 */
uint32_t PlsrAccelCurveResolveStartHz(uint32_t configured_frequency_hz,
uint32_t target_frequency_hz,
uint32_t PlsrAccelCurveResolveStartHz(uint32_t configured_freq_hz,
uint32_t target_freq_hz,
uint32_t default_speed_hz,
uint32_t acceleration_time_ms,
uint32_t deceleration_time_ms);
uint32_t accel_time_ms,
uint32_t decel_time_ms);

/** 配置止速 → 规划出口:止速>目标用止速;否则目标与起跳比较取其一(不默认到 0) */
uint32_t PlsrAccelCurveResolveEndHz(uint32_t configured_frequency_hz,
uint32_t target_frequency_hz,
uint32_t PlsrAccelCurveResolveEndHz(uint32_t configured_freq_hz,
uint32_t target_freq_hz,
uint32_t default_speed_hz,
uint32_t acceleration_time_ms,
uint32_t deceleration_time_ms);
uint32_t accel_time_ms,
uint32_t decel_time_ms);

/**
* 规划一整段脉冲域三相预算与实际峰值
@@ -47,17 +47,17 @@ uint32_t PlsrAccelCurveResolveEndHz(uint32_t configured_frequency_hz,
*/
void PlsrAccelCurvePlan(PlsrAccelPlan_t *plan,
uint32_t total_pulses,
uint32_t start_frequency_hz,
uint32_t target_frequency_hz,
uint32_t end_frequency_hz,
uint32_t start_freq_hz,
uint32_t target_freq_hz,
uint32_t end_freq_hz,
uint32_t default_speed_hz,
uint32_t acceleration_time_ms,
uint32_t deceleration_time_ms,
uint32_t accel_time_ms,
uint32_t decel_time_ms,
PlsrAccelMode_e curve_mode);

/** 按已完成脉冲数取频(任务/预览;ISR 热路径用 PlsrAccelNextFrequency) */
/** 按已完成脉冲数取频(任务/预览;ISR 热路径用 PlsrAccelNextFreq) */
uint32_t PlsrAccelCurveFreqAtPulse(const PlsrAccelPlan_t *plan,
uint32_t completed_segment_pulses);
uint32_t completed_seg_pulses);

/**
* 单相逐脉冲运行态(ISR 热路径,每来一个 UPDATE 调 Step 一次)
@@ -65,21 +65,21 @@ uint32_t PlsrAccelCurveFreqAtPulse(const PlsrAccelPlan_t *plan,
* S/正弦:查预计算频率表(开相 BeginAcc/BeginDec 时填好)
*/
typedef struct {
uint32_t current_frequency_hz; /* 当前输出频率 */
uint32_t start_frequency_hz; /* 当前相起点频率 */
uint32_t end_frequency_hz; /* 当前相终点频率 */
uint32_t acceleration_hz_per_s; /* 当前相使用的变化率 */
uint32_t cur_freq_hz; /* 当前输出频率 */
uint32_t start_freq_hz; /* 当前相起点频率 */
uint32_t end_freq_hz; /* 当前相终点频率 */
uint32_t accel_hz_per_s; /* 当前相使用的变化率 */
uint32_t completed_pulses; /* 当前相已经步进的脉冲数 */
uint32_t total_pulses; /* 当前相计划步进的脉冲数 */
uint32_t elapsed_time_us; /* 时间曲线已经经过的时间 */
uint32_t jerk_time_us; /* S 曲线单个 jerk 阶段时间 */
uint32_t constant_accel_time_us; /* S 曲线恒加速阶段时间 */
uint32_t const_accel_time_us; /* S 曲线恒加速阶段时间 */
uint32_t ramp_time_us; /* 整个斜坡时间 */
uint32_t table_stride; /* 每几个脉冲读取一个表项 */
uint32_t table_length; /* 表中有效项数 */
uint8_t frequency_rising; /* 1=频率升高,0=降低 */
uint8_t freq_rising; /* 1=频率升高,0=降低 */
uint8_t is_active; /* 1=当前相仍在运行 */
uint8_t frequency_table_id; /* 0=不用表,1=加速表,2=减速表 */
uint8_t freq_table_id; /* 0=不用表,1=加速表,2=减速表 */
PlsrAccelMode_e curve_mode;
} PlsrAccelRuntime_t;

@@ -88,16 +88,16 @@ extern PlsrAccelPlan_t g_plsr_accel_plan;
extern PlsrAccelRuntime_t g_plsr_accel_runtime;

/** PlanSeg 后调用:预建 S/正弦加减速频率表(勿在 ISR) */
void PlsrAccelPrebuildFrequencyTables(const PlsrAccelPlan_t *plan);
void PlsrAccelPrebuildFreqTables(const PlsrAccelPlan_t *plan);

void PlsrAccelBeginAcceleration(PlsrAccelRuntime_t *runtime,
void PlsrAccelBeginAccel(PlsrAccelRuntime_t *runtime,
const PlsrAccelPlan_t *plan);
void PlsrAccelBeginDeceleration(PlsrAccelRuntime_t *runtime,
void PlsrAccelBeginDecel(PlsrAccelRuntime_t *runtime,
const PlsrAccelPlan_t *plan);
void PlsrAccelBeginConstantSpeed(PlsrAccelRuntime_t *runtime,
void PlsrAccelBeginConstSpeed(PlsrAccelRuntime_t *runtime,
const PlsrAccelPlan_t *plan);

/** 本相前进 1 脉冲,返回下一拍命令频率 */
uint32_t PlsrAccelNextFrequency(PlsrAccelRuntime_t *runtime);
uint32_t PlsrAccelNextFreq(PlsrAccelRuntime_t *runtime);

#endif

+ 6
- 6
plsr/command/plsr_command.c Ver fichero

@@ -57,9 +57,9 @@ static void PlsrCommandPublishMonitor(void)

if (g_plsr_busy != 0U)
{
PlsrCommandWriteDWord(PLSR_MON_FREQ_L, g_plsr_output_frequency_hz);
PlsrCommandWriteDWord(PLSR_MON_FREQ_L, g_plsr_output_freq_hz);
WriteHoldReg(PLSR_MON_RUN_STATUS, 1U);
WriteHoldReg(PLSR_MON_CUR_SEG, (uint16_t)(g_plsr_current_segment_index + 1U));
WriteHoldReg(PLSR_MON_CUR_SEG, (uint16_t)(g_plsr_cur_seg_idx + 1U));
}
else
{
@@ -118,7 +118,7 @@ void PlsrCommandInit(void)
*/
void PlsrCommandOnSegFreqHoldWrite(uint16_t start_addr, uint16_t quantity)
{
uint16_t current_seg;//当前运行段
uint16_t cur_seg;//当前运行段
uint16_t seg;//当前改频段
uint16_t offset;//偏移量
uint32_t freqency;
@@ -147,8 +147,8 @@ void PlsrCommandOnSegFreqHoldWrite(uint16_t start_addr, uint16_t quantity)
return;
}

current_seg = (uint16_t)(g_plsr_current_segment_index + 1U);
if ((current_seg < 1U) || ((uint16_t)(current_seg - 1U) != seg))
cur_seg = (uint16_t)(g_plsr_cur_seg_idx + 1U);
if ((cur_seg < 1U) || ((uint16_t)(cur_seg - 1U) != seg))
{
return;
}
@@ -162,7 +162,7 @@ void PlsrCommandOnSegFreqHoldWrite(uint16_t start_addr, uint16_t quantity)
return;
}

g_plsr_segments[seg].freq_hz = (int32_t)freqency;
g_plsr_segs[seg].freq_hz = (int32_t)freqency;
/* 运行中改频只把该段频率写入 BKP */
PlsrPersistSaveSegFreqToBkp(seg, freqency);



+ 10
- 10
plsr/param/plsr_param.c Ver fichero

@@ -3,7 +3,7 @@
* @brief 参数块管理实现:运行映像 + 分帧导入/导出 + ParamBlockTask
*
* @details 模块职责
* 维护公共参数 g_plsr_config 和段参数 g_plsr_segments[],实现寄存器与
* 维护公共参数 g_plsr_config 和段参数 g_plsr_segs[],实现寄存器与
* 运行参数之间的双向转换,以及「5+N 分帧」收齐后的异步导入
*
* 与其它模块关系
@@ -18,7 +18,7 @@
#include "ucos_ii.h"

PlsrCfg_t g_plsr_config;
PlsrSeg_t g_plsr_segments[PLSR_SEG_MAX];
PlsrSeg_t g_plsr_segs[PLSR_SEG_MAX];

static OS_EVENT *s_param_sem; /* 分帧收齐后唤醒 ParamBlockTask */
static volatile uint16_t s_expect_frames; /* 本批期望总帧数 = 5 + 段数 */
@@ -249,27 +249,27 @@ uint8_t PlsrParamBlockApplyFromHold(void)
for (i = 0U; i < n; i++)
{
base = (uint16_t)(PLSR_REG_SEG1_BASE + i * PLSR_SEG_STRIDE);
g_plsr_segments[i].freq_hz =
g_plsr_segs[i].freq_hz =
(int32_t)PlsrParamReadDWord((uint16_t)(base + PLSR_SEG_OFF_FREQ_L));
if (PlsrParamIsSegFreqValid(g_plsr_segments[i].freq_hz) == 0U)
if (PlsrParamIsSegFreqValid(g_plsr_segs[i].freq_hz) == 0U)
{
fault = PLSR_ERR_FREQ_ILLEGAL;
}

g_plsr_segments[i].pulse_cnt =
g_plsr_segs[i].pulse_cnt =
(int32_t)PlsrParamReadDWord((uint16_t)(base + PLSR_SEG_OFF_PULSE_L));
if (PlsrParamIsPulseCntValid(g_plsr_segments[i].pulse_cnt) == 0U)
if (PlsrParamIsPulseCntValid(g_plsr_segs[i].pulse_cnt) == 0U)
{
fault = PLSR_ERR_PULSE_RANGE;
}

g_plsr_segments[i].wait_type =
g_plsr_segs[i].wait_type =
(PlsrWaitType_e)ReadHoldReg((uint16_t)(base + PLSR_SEG_OFF_WAIT));
g_plsr_segments[i].wait_ms =
g_plsr_segs[i].wait_ms =
ReadHoldReg((uint16_t)(base + PLSR_SEG_OFF_WAIT_MS));
g_plsr_segments[i].act_ms =
g_plsr_segs[i].act_ms =
ReadHoldReg((uint16_t)(base + PLSR_SEG_OFF_ACT_MS));
g_plsr_segments[i].jump_seg =
g_plsr_segs[i].jump_seg =
ReadHoldReg((uint16_t)(base + PLSR_SEG_OFF_JUMP));
}
}


+ 3
- 3
plsr/param/plsr_param.h Ver fichero

@@ -4,7 +4,7 @@
*
* @details 模块职责
* 1. 定义公共参数区 0x1000~0x1013、段表区 0x1100+i*0x10 的地址与字段语义;
* 2. 维护 g_plsr_config / g_plsr_segments[];
* 2. 维护 g_plsr_config / g_plsr_segs[];
* 3. 支持上位机「5 公共帧 + N 段帧」分帧 FC10 写入:收齐后 ApplyFromHold;
* 4. 上电由 PersistLoad 填 hold;ExportToHold 仅保留作调试接口。
*
@@ -168,7 +168,7 @@ typedef struct {

/* ---------- 运行参数 ---------- */
extern PlsrCfg_t g_plsr_config;
extern PlsrSeg_t g_plsr_segments[PLSR_SEG_MAX];
extern PlsrSeg_t g_plsr_segs[PLSR_SEG_MAX];

/** @return 有效段数,钳制到 [0, PLSR_SEG_MAX] */
uint16_t PlsrParamGetSegCount(void);
@@ -202,7 +202,7 @@ void PlsrParamBlockTask(void *pArg);
void PlsrParamBlockOnHoldWrite(uint16_t start_addr, uint16_t quantity);

/**
* @brief 保持寄存器 → g_plsr_config / g_plsr_segments,边拷贝边校验
* @brief 保持寄存器 → g_plsr_config / g_plsr_segs,边拷贝边校验
* @return 1=全部通过;0=存在门禁故障
*/
uint8_t PlsrParamBlockApplyFromHold(void);


+ 1
- 1
plsr/plsr.h Ver fichero

@@ -26,7 +26,7 @@

/* run_control 拥有的共享运行状态;段下标从 0 开始。 */
extern volatile uint8_t g_plsr_busy;
extern volatile uint16_t g_plsr_current_segment_index;
extern volatile uint16_t g_plsr_cur_seg_idx;
extern volatile int32_t g_plsr_accumulated_pulses;
#include "plsr_param.h"



+ 13
- 13
plsr/pulse_driver/plsr_pulse_driver.c Ver fichero

@@ -33,7 +33,7 @@ TIM_HandleTypeDef htim13;
#define PLSR_Y3_PORT GPIOF
#define PLSR_Y3_PIN GPIO_PIN_9

volatile uint32_t g_plsr_output_frequency_hz;
volatile uint32_t g_plsr_output_freq_hz;
volatile uint8_t g_plsr_pwm_running;
uint8_t g_plsr_direction_forward;
uint8_t g_plsr_direction_valid;
@@ -272,7 +272,7 @@ static void PlsrPulseDriverTimInitOne(TIM_HandleTypeDef *htim, TIM_TypeDef *inst
/** @brief 驱动初始化 */
void PlsrPulseDriverInit(void)
{
g_plsr_output_frequency_hz = 0U;
g_plsr_output_freq_hz = 0U;
g_plsr_pwm_running = 0U;
g_plsr_direction_forward = 0U;
g_plsr_direction_valid = 0U;
@@ -554,7 +554,7 @@ static void PlsrPulseDriverLoadRegs(uint32_t freq_hz)
if (freq_hz == 0U)
{
PlsrPulseDriverStopHtim(htim);
g_plsr_output_frequency_hz = 0U;
g_plsr_output_freq_hz = 0U;
g_plsr_pwm_running = 0U;
s_last_psc = 0xFFFFFFFFUL;
s_last_arr = 0xFFFFFFFFUL;
@@ -578,7 +578,7 @@ static void PlsrPulseDriverLoadRegs(uint32_t freq_hz)
ccr = 1U;
}

g_plsr_output_frequency_hz = freq_hz;
g_plsr_output_freq_hz = freq_hz;
s_last_psc = psc;
s_last_arr = arr;
s_last_ccr = ccr;
@@ -677,7 +677,7 @@ static void PlsrPulseDriverCommitOutput(void)
*/
static void PlsrPulseDriverStartCommon(uint32_t freq_hz)
{
if ((s_regs_prepared == 0U) || (freq_hz != g_plsr_output_frequency_hz) || (freq_hz == 0U))
if ((s_regs_prepared == 0U) || (freq_hz != g_plsr_output_freq_hz) || (freq_hz == 0U))
{
PlsrPulseDriverLoadRegs(freq_hz);
}
@@ -702,7 +702,7 @@ void PlsrPulseDriverSetFreq(uint32_t freq_hz)
uint32_t clk_hz;
TIM_HandleTypeDef *htim;

if (freq_hz == g_plsr_output_frequency_hz)
if (freq_hz == g_plsr_output_freq_hz)
{
return;
}
@@ -715,7 +715,7 @@ void PlsrPulseDriverSetFreq(uint32_t freq_hz)
if (freq_hz == 0U)
{
PlsrPulseDriverStopHtim(htim);
g_plsr_output_frequency_hz = 0U;
g_plsr_output_freq_hz = 0U;
g_plsr_pwm_running = 0U;
s_last_psc = 0xFFFFFFFFUL;
s_last_arr = 0xFFFFFFFFUL;
@@ -734,7 +734,7 @@ void PlsrPulseDriverSetFreq(uint32_t freq_hz)

if ((psc == s_last_psc) && (arr == s_last_arr))
{
g_plsr_output_frequency_hz = freq_hz;
g_plsr_output_freq_hz = freq_hz;
return;
}

@@ -760,7 +760,7 @@ void PlsrPulseDriverSetFreq(uint32_t freq_hz)
__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
}

g_plsr_output_frequency_hz = freq_hz;
g_plsr_output_freq_hz = freq_hz;
s_last_psc = psc;
s_last_arr = arr;
}
@@ -811,7 +811,7 @@ void PlsrPulseDriverSetFreqIsr(uint32_t freq_hz)
}

/* 匀速热路径:频率未变 → 不算量化、不写寄存器 */
if (freq_hz == g_plsr_output_frequency_hz)
if (freq_hz == g_plsr_output_freq_hz)
{
return;
}
@@ -844,7 +844,7 @@ void PlsrPulseDriverSetFreqIsr(uint32_t freq_hz)

if ((psc == s_last_psc) && (arr == s_last_arr))
{
g_plsr_output_frequency_hz = freq_hz;
g_plsr_output_freq_hz = freq_hz;
return;
}

@@ -857,7 +857,7 @@ void PlsrPulseDriverSetFreqIsr(uint32_t freq_hz)
__HAL_TIM_SET_AUTORELOAD(htim, arr);
__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, ccr);

g_plsr_output_frequency_hz = freq_hz;
g_plsr_output_freq_hz = freq_hz;
s_last_psc = psc;
s_last_arr = arr;
s_last_ccr = ccr;
@@ -909,7 +909,7 @@ void PlsrPulseDriverStop(void)
PlsrPulseDriverStopHtim(&htim10);
PlsrPulseDriverStopHtim(&htim11);
PlsrPulseDriverStopHtim(&htim13);
g_plsr_output_frequency_hz = 0U;
g_plsr_output_freq_hz = 0U;
g_plsr_pwm_running = 0U;
s_last_psc = 0xFFFFFFFFUL;
s_last_arr = 0xFFFFFFFFUL;


+ 1
- 1
plsr/pulse_driver/plsr_pulse_driver.h Ver fichero

@@ -35,7 +35,7 @@ extern TIM_HandleTypeDef htim11;
extern TIM_HandleTypeDef htim13;

/* 驱动拥有的真实输出状态,run_control 直接读取,不再保存第二份。 */
extern volatile uint32_t g_plsr_output_frequency_hz;
extern volatile uint32_t g_plsr_output_freq_hz;
extern volatile uint8_t g_plsr_pwm_running;
extern uint8_t g_plsr_direction_forward;
extern uint8_t g_plsr_direction_valid;


+ 1210
- 1161
plsr/run_control/plsr_run_control.c
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


Cargando…
Cancelar
Guardar