增加两档PID控制,针对流量误差大和小的情况分别控制,在误差大时快速调节,误差小时慢慢调节以减少震荡和稳态误差。
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user