增加两档PID控制,针对流量误差大和小的情况分别控制,在误差大时快速调节,误差小时慢慢调节以减少震荡和稳态误差。

This commit is contained in:
2026-08-21 17:25:30 +08:00
parent c56858ab0f
commit 26d4cbc316
21 changed files with 14662 additions and 14 deletions
+25 -4
View File
@@ -63,13 +63,13 @@ def build_logger():
def build_control_loop(hardware, logger):
pid = IncrementalPID(
kp=config.PID_KP,
ki=config.PID_KI,
kd=config.PID_KD,
kp=config.PID_FAR_KP,
ki=config.PID_FAR_KI,
kd=config.PID_FAR_KD,
dt=config.CONTROL_PERIOD_S,
out_min=config.OPENING_MIN_PCT,
out_max=config.OPENING_MAX_PCT,
output_rate_limit=config.MAX_OPENING_RATE_PCT_S,
output_rate_limit=config.MAX_OPENING_RATE_FAR_PCT_S,
)
return FlowControlLoop(
hardware=hardware,
@@ -91,6 +91,27 @@ def build_control_loop(hardware, logger):
max_consecutive_pressure_failures=(
config.MAX_CONSECUTIVE_PRESSURE_FAILURES
),
pid_far_gains=(
config.PID_FAR_KP,
config.PID_FAR_KI,
config.PID_FAR_KD,
),
pid_near_gains=(
config.PID_NEAR_KP,
config.PID_NEAR_KI,
config.PID_NEAR_KD,
),
opening_rate_far_pct_s=config.MAX_OPENING_RATE_FAR_PCT_S,
opening_rate_near_pct_s=config.MAX_OPENING_RATE_NEAR_PCT_S,
pid_near_error_min_slm=config.PID_NEAR_ERROR_MIN_SLM,
pid_near_error_target_ratio=(
config.PID_NEAR_ERROR_TARGET_RATIO
),
pid_far_error_min_slm=config.PID_FAR_ERROR_MIN_SLM,
pid_far_error_target_ratio=config.PID_FAR_ERROR_TARGET_RATIO,
pid_mode_switch_confirm_cycles=(
config.PID_MODE_SWITCH_CONFIRM_CYCLES
),
logger=logger,
)