Die Variablen set_torque, act_torque und act_angle eingeführt; Umschaltung zwischen Drehmomentprofil und direkter Drehmomentvorgabe eingeführt; Werte auf der GUI werden nun alle 200 ms aktualisiert; Möglichkeit eingeführt, Pseudowerte für act_torque und act_angle zu setzen.
This commit is contained in:
55
main.py
55
main.py
@@ -3,10 +3,16 @@ from tkinter import messagebox
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
||||||
from matplotlib.figure import Figure
|
from matplotlib.figure import Figure
|
||||||
|
#import random
|
||||||
|
|
||||||
p = 0.0
|
p = 0.0
|
||||||
i = 0.0
|
i = 0.0
|
||||||
|
|
||||||
|
set_torque = 0.0
|
||||||
|
|
||||||
|
act_torque = 0.0
|
||||||
|
act_angle = 0.0
|
||||||
|
|
||||||
class T2000ErdemGUI:
|
class T2000ErdemGUI:
|
||||||
def __init__(self, root):
|
def __init__(self, root):
|
||||||
self.root = root
|
self.root = root
|
||||||
@@ -22,7 +28,7 @@ class T2000ErdemGUI:
|
|||||||
self.i_value = tk.DoubleVar()
|
self.i_value = tk.DoubleVar()
|
||||||
tk.Entry(self.root, textvariable=self.i_value).place(x=100, y=50)
|
tk.Entry(self.root, textvariable=self.i_value).place(x=100, y=50)
|
||||||
|
|
||||||
# Eingabefelder für Koordinaten
|
# Eingabefelder für Koordinaten der Drehmoment-Drehwinkel-Kennlinie
|
||||||
tk.Label(self.root, text="Koordinaten der Drehmoment-Drehwinkel-Kennlinie:").place(x=10, y=90)
|
tk.Label(self.root, text="Koordinaten der Drehmoment-Drehwinkel-Kennlinie:").place(x=10, y=90)
|
||||||
self.coordinates_text = tk.Text(self.root, height=5, width=20)
|
self.coordinates_text = tk.Text(self.root, height=5, width=20)
|
||||||
self.coordinates_text.place(x=20, y=110)
|
self.coordinates_text.place(x=20, y=110)
|
||||||
@@ -30,8 +36,9 @@ class T2000ErdemGUI:
|
|||||||
|
|
||||||
# Eingabefeld für direkte Drehmomentvorgabe
|
# Eingabefeld für direkte Drehmomentvorgabe
|
||||||
tk.Label(self.root, text="Soll-Drehmoment in Nm:").place(x=10, y=220)
|
tk.Label(self.root, text="Soll-Drehmoment in Nm:").place(x=10, y=220)
|
||||||
self.torque_value = tk.DoubleVar()
|
self.set_torque_value = tk.DoubleVar()
|
||||||
tk.Entry(self.root, textvariable=self.torque_value).place(x=200, y=220)
|
self.torque_input = tk.Entry(self.root, textvariable=self.set_torque_value)
|
||||||
|
self.torque_input.place(x=200, y=220)
|
||||||
|
|
||||||
# Anzeige für aktuellen Drehwinkel und Drehmoment
|
# Anzeige für aktuellen Drehwinkel und Drehmoment
|
||||||
tk.Label(self.root, text="Aktueller Drehwinkel:").place(x=10, y=260)
|
tk.Label(self.root, text="Aktueller Drehwinkel:").place(x=10, y=260)
|
||||||
@@ -46,10 +53,16 @@ class T2000ErdemGUI:
|
|||||||
self.close_button = tk.Button(self.root, text="Beenden", command=self.close_application)
|
self.close_button = tk.Button(self.root, text="Beenden", command=self.close_application)
|
||||||
self.close_button.place(x=300, y=560)
|
self.close_button.place(x=300, y=560)
|
||||||
|
|
||||||
# Button zur Erstellung des Diagramms
|
# Button zur Übernahme der Eingaben und Aktualisierung des Diagramms
|
||||||
self.plot_button = tk.Button(self.root, text="Eingaben übernehmen", command=self.on_plot_button_click)
|
self.plot_button = tk.Button(self.root, text="Eingaben übernehmen", command=self.on_plot_button_click)
|
||||||
self.plot_button.place(x=10, y=560)
|
self.plot_button.place(x=10, y=560)
|
||||||
|
|
||||||
|
# Schalter für Umschaltung zwischen Drehmomentprofil und direkter Vorgabe
|
||||||
|
self.torque_mode = tk.BooleanVar()
|
||||||
|
self.torque_mode.set(False) # Startet im Modus "Drehmomentprofil"
|
||||||
|
self.torque_switch = tk.Checkbutton(self.root, text="Direkte Drehmomentvorgabe aktivieren", variable=self.torque_mode, command=self.toggle_torque_mode)
|
||||||
|
self.torque_switch.place(x=10, y=340)
|
||||||
|
|
||||||
# Diagramm
|
# Diagramm
|
||||||
self.figure = Figure(figsize=(6,6), dpi=100)
|
self.figure = Figure(figsize=(6,6), dpi=100)
|
||||||
self.plot = self.figure.add_subplot(111)
|
self.plot = self.figure.add_subplot(111)
|
||||||
@@ -60,7 +73,9 @@ class T2000ErdemGUI:
|
|||||||
self.canvas = FigureCanvasTkAgg(self.figure, self.root)
|
self.canvas = FigureCanvasTkAgg(self.figure, self.root)
|
||||||
self.canvas.get_tk_widget().place(x=424, y=0)
|
self.canvas.get_tk_widget().place(x=424, y=0)
|
||||||
|
|
||||||
|
self.toggle_torque_mode()
|
||||||
self.create_diagram()
|
self.create_diagram()
|
||||||
|
self.update_current_values_periodically()
|
||||||
|
|
||||||
def close_application(self):
|
def close_application(self):
|
||||||
if messagebox.askokcancel("Beenden", "Möchten Sie die Anwendung wirklich beenden?"):
|
if messagebox.askokcancel("Beenden", "Möchten Sie die Anwendung wirklich beenden?"):
|
||||||
@@ -83,19 +98,41 @@ class T2000ErdemGUI:
|
|||||||
self.plot.set_ylim(bottom=0)
|
self.plot.set_ylim(bottom=0)
|
||||||
self.canvas.draw()
|
self.canvas.draw()
|
||||||
|
|
||||||
def update_current_values(self, angle, torque):
|
def update_current_values(self, angle, act_torque):
|
||||||
self.current_angle.config(text=str(angle))
|
self.current_angle.config(text=str(angle) + "°")
|
||||||
self.current_torque.config(text=str(torque))
|
self.current_torque.config(text=str(act_torque) + " Nm")
|
||||||
|
|
||||||
def save_set_values(self):
|
def save_set_values(self):
|
||||||
p = self.p_value.get()
|
p = self.p_value.get()
|
||||||
i = self.i_value.get()
|
i = self.i_value.get()
|
||||||
|
|
||||||
|
def toggle_torque_mode(self):
|
||||||
|
# Aktivieren oder Deaktivieren des direkten Drehmoment-Eingabefeldes
|
||||||
|
if self.torque_mode.get():
|
||||||
|
self.torque_input['state'] = 'normal'
|
||||||
|
self.coordinates_text['state'] = 'disabled'
|
||||||
|
else:
|
||||||
|
self.torque_input['state'] = 'disabled'
|
||||||
|
self.coordinates_text['state'] = 'normal'
|
||||||
|
|
||||||
def on_plot_button_click(self):
|
def on_plot_button_click(self):
|
||||||
self.create_diagram()
|
if self.torque_mode.get():
|
||||||
|
# Logik für die direkte Vorgabe des Soll-Drehmoments
|
||||||
|
set_torque = self.set_torque_value.get()
|
||||||
|
else:
|
||||||
|
# Logik für das Drehmomentprofil
|
||||||
|
self.create_diagram()
|
||||||
self.save_set_values()
|
self.save_set_values()
|
||||||
|
|
||||||
|
def update_current_values_periodically(self):
|
||||||
|
# Simulieren von veränderlichen aktuellen Werten (als Beispiel)
|
||||||
|
#new_angle = random.randint(0, 90)
|
||||||
|
#new_torque = random.uniform(0, 50)
|
||||||
|
#self.update_current_values(new_angle, new_torque)
|
||||||
|
self.update_current_values(act_angle, act_torque)
|
||||||
|
self.root.after(200, self.update_current_values_periodically)
|
||||||
|
|
||||||
# Anwendung starten
|
# Anwendung starten
|
||||||
root = tk.Tk()
|
root = tk.Tk()
|
||||||
app = T2000ErdemGUI(root)
|
app = T2000ErdemGUI(root)
|
||||||
root.mainloop()
|
root.mainloop()
|
||||||
|
|||||||
Reference in New Issue
Block a user