From: Steven Baltakatei Sandoval Date: Sun, 31 Oct 2021 22:16:49 +0000 (+0000) Subject: fix(bktemp-updateloopPI):Add integral sum spike dampener X-Git-Tag: 0.5.0~35 X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/commitdiff_plain/8be2ec95ab4fc9c14541bebc6a4b70cf074bc5c6?hp=a47be58ab25177aadd9f65ac3379509b6da52309 fix(bktemp-updateloopPI):Add integral sum spike dampener --- diff --git a/unitproc/bktemp-updateLoopPI b/unitproc/bktemp-updateLoopPI index bda89ee..61f7e8d 100644 --- a/unitproc/bktemp-updateLoopPI +++ b/unitproc/bktemp-updateLoopPI @@ -9,7 +9,7 @@ update_pi() { # process variable (PV). Uses proportional integral (PI) # control. # Usage: update_pi arg1 arg2 arg3 arg4 arg5 arg6 - # Version: 0.1.1 + # Version: 0.1.2 # Input: arg1: path_loop_name (control loop name path) # arg2: var_pv (process variable) # arg3: var_sp (set point) @@ -28,7 +28,7 @@ update_pi() { local var_sp var_pv var_cv; local tune_p tune_i; local term_p term_i; - local error sum; + local error sum sum_cand; local path_sum path_var_sp path_var_pv path_tune_p path_tune_i; path_loop_name="$1"; @@ -79,8 +79,13 @@ update_pi() { error="$(try echo "$var_sp - $var_pv" | bc -l)"; #yell "DEBUG:error:$error"; - sum="$(try echo "$sum + $error" | bc -l)"; + sum_cand="$(try echo "$sum + $error" | bc -l)"; #yell "DEBUG:sum:$sum"; + if [[ "$(try echo "$sum_cand > 2 * $sum " | bc -l)" -eq 1 ]]; then + sum="$(try echo "$sum + l($error)" | bc -l)"; # dampen integral sum spikes + else + sum="$sum_cand"; + fi; term_p="$(try echo "$tune_p * $error" | bc -l)"; #yell "DEBUG:term_p:$term_p"; term_i="$(try echo "$tune_i * $sum" | bc -l)";