From da03e7b0eaaddffdbcd06338948ed0aa640ca7fb Mon Sep 17 00:00:00 2001 From: Jan Benicek Date: Wed, 15 Jan 2025 09:50:12 +0100 Subject: [PATCH] debug speed control algorithm #7 --- scripts/speed_controller.py | 67 +++++++++++++++++++++---------------- scripts/speed_reader.py | 3 -- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/scripts/speed_controller.py b/scripts/speed_controller.py index 5a322b7..b36550e 100644 --- a/scripts/speed_controller.py +++ b/scripts/speed_controller.py @@ -17,8 +17,6 @@ variable_control_step_U_1: str = "control_step_U_1" variable_control_step_rpm_1: str = "control_step_rpm_1" variable_control_step_U_2: str = "control_step_U_2" variable_control_step_rpm_2: str = "control_step_rpm_2" -variable_control_step_U_3: str = "control_step_U_3" -variable_control_step_rpm_3: str = "control_step_rpm_3" #init variables in variables system if get_variable(variable_actual_rpm) == None: @@ -40,22 +38,16 @@ if get_variable(variable_control_step_rpm) == None: set_variable(variable_control_step_rpm, 200, True) if get_variable(variable_control_step_U_1) == None: - set_variable(variable_control_step_U_1, 0.003, True) + set_variable(variable_control_step_U_1, 0.01, True) if get_variable(variable_control_step_rpm_1) == None: - set_variable(variable_control_step_rpm_1, 80, True) + set_variable(variable_control_step_rpm_1, 100, True) if get_variable(variable_control_step_U_2) == None: - set_variable(variable_control_step_U_2, 0.0005, True) + set_variable(variable_control_step_U_2, 0.001, True) if get_variable(variable_control_step_rpm_2) == None: - set_variable(variable_control_step_rpm_2, 20, True) - -if get_variable(variable_control_step_U_3) == None: - set_variable(variable_control_step_U_3, 0.0001, True) - -if get_variable(variable_control_step_rpm_3) == None: - set_variable(variable_control_step_rpm_3, 1, True) + set_variable(variable_control_step_rpm_2, 5, True) if get_variable(variable_control_stack) == None: set_variable(variable_control_stack, 0, True) @@ -69,10 +61,12 @@ def set_output(value: float): if value < float(get_variable(variable_max_U)): set_0_10_out(stack=int(get_variable(variable_control_stack)), channel=int(get_variable(variable_control_channel)), value=value) +def printer(text): + if True: + print(text) #control RPM def rpm_control(): - print("control_RPM") actual_rpm = float(get_variable(variable_actual_rpm)) requested_rpm = float(get_variable(variable_requested_rpm)) actual_set_U = read_0_10_out(stack=int(get_variable(variable_control_stack)), channel=int(get_variable(variable_control_channel))) @@ -89,22 +83,40 @@ def rpm_control(): return #algorithm for RPM control - if (requested_rpm - float(get_variable(variable_control_step_rpm_3))) < actual_rpm or actual_rpm < (requested_rpm + float(get_variable(variable_control_step_rpm_3))): - if requested_rpm < actual_rpm: - set_output(actual_set_U - float(get_variable(variable_control_step_U_3))) - elif requested_rpm > actual_rpm: - set_output(actual_set_U + float(get_variable(variable_control_step_U_3))) - print("control_4") + if (requested_rpm - float(get_variable(variable_control_step_rpm))) > actual_rpm: + set_output(actual_set_U + float(variable_control_step_U)) + printer("(requested_rpm - float(get_variable(variable_control_step_rpm))) > actual_rpm") return - if (requested_rpm - float(get_variable(variable_control_step_rpm_2))) < actual_rpm or actual_rpm < (requested_rpm + float(get_variable(variable_control_step_rpm_2))): - if requested_rpm < actual_rpm: - set_output(actual_set_U - float(get_variable(variable_control_step_U_2))) - elif requested_rpm > actual_rpm: - set_output(actual_set_U + float(get_variable(variable_control_step_U_2))) - print("control_3") + elif (requested_rpm + float(get_variable(variable_control_step_rpm))) < actual_rpm: + set_output(actual_set_U - float(variable_control_step_U)) + printer("(requested_rpm + float(get_variable(variable_control_step_rpm))) < actual_rpm") return - + + if (requested_rpm - float(get_variable(variable_control_step_rpm_1))) > actual_rpm: + set_output(actual_set_U + float(variable_control_step_U_1)) + printer("(requested_rpm - float(get_variable(variable_control_step_rpm_1))) > actual_rpm") + return + + elif (requested_rpm + float(get_variable(variable_control_step_rpm_1))) < actual_rpm: + set_output(actual_set_U - float(variable_control_step_U_1)) + printer("(requested_rpm + float(get_variable(variable_control_step_rpm_1))) < actual_rpm") + return + + if (requested_rpm - float(get_variable(variable_control_step_rpm_2))) > actual_rpm: + set_output(actual_set_U + float(variable_control_step_U_2)) + printer("(requested_rpm - float(get_variable(variable_control_step_rpm_2))) > actual_rpm") + return + + elif (requested_rpm + float(get_variable(variable_control_step_rpm_2))) < actual_rpm: + set_output(actual_set_U - float(variable_control_step_U_2)) + printer("(requested_rpm + float(get_variable(variable_control_step_rpm_2))) < actual_rpm") + return + + print("empty_run") + +""" + if (requested_rpm - float(get_variable(variable_control_step_rpm_1))) < actual_rpm or actual_rpm < (requested_rpm + float(get_variable(variable_control_step_rpm_1))): if requested_rpm < actual_rpm: set_output(actual_set_U - float(get_variable(variable_control_step_U_1))) @@ -120,8 +132,7 @@ def rpm_control(): set_output(actual_set_U + float(get_variable(variable_control_step_U))) print("control_1") return - - print("empty_run") + """ diff --git a/scripts/speed_reader.py b/scripts/speed_reader.py index edf45ba..c347204 100644 --- a/scripts/speed_reader.py +++ b/scripts/speed_reader.py @@ -2,8 +2,6 @@ from src.variables.service import get_variable, set_variable from gpiozero import Button import datetime -#from scripts.speed_controller import rpm_control - pulses_per_rotation = 4 reader = Button(4, pull_up=False, bounce_time=0.0005) set_variable("speed_reader_last_impulse_time", datetime.datetime.now(), False) @@ -23,7 +21,6 @@ def event(): set_variable("actual_rpm", round(actual_rpm, 1), False) print(round(actual_rpm, 1)) -# rpm_control()