LabVIEWForum.de
Anzeige und Bedienelement in einem - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Anzeige und Bedienelement in einem (/Thread-Anzeige-und-Bedienelement-in-einem)



Anzeige und Bedienelement in einem - mikadm - 19.08.2020 09:08

Hallo Zusammen,

Mein Programm enthält eine Regelung von Proportionalventilen.Es funktioniert auch sehr gut aber ich möchte die Möglichkeit haben, händisch nachzuregeln.
Die Regelung befindet sich in einer While-Schleife und der vorherige Wert wird mit einem Schieberegister in den nächsten Durchlauf übergeben. Der Sollwert wird vorher mit einer Kennlinie berechnet.
Die ist aber ungenau, weswegen ich möchte, dass der Aktuelle Wert angezeigt wird, aber gleichzeitig auch verändert werden kann.
dafür wäre es hilfreich eine Funktion zu haben, die gleichzeitig ein Bedien-und Anzeigeelement ist.
Gibt es so etwas ?

LG
mikadm


RE: Anzeige und Bedienelement in einem - GerdW - 19.08.2020 09:29

Hallo mikadm,

Zitat:ich möchte, dass der Aktuelle Wert angezeigt wird, aber gleichzeitig auch verändert werden kann.
dafür wäre es hilfreich eine Funktion zu haben, die gleichzeitig ein Bedien-und Anzeigeelement ist.
Jein…

Du kannst ein Control nehmen und dort per lokaler Variable ständig den "aktuellen Wert" reinschreiben.
Dummerweise führt das aber zu Problemen, wenn der User gleichzeitig versucht, selbst einen Wert einzutippen: dein VI schreibt ja dauernd selbst einen Wert in das Control…
(Für das bessere Verständnis, insbesondere der genauen Bedeutung des Wortes "ständig" in diesem Zusammenhang, wäre es schön, wenn du dein VI bereitstellen würdest…)

Ich mache das üblicherweise so, dass entweder nur der Regler aktiv ist - oder eben nicht und der User dann Handsteuerung machen darf.
Wenn der User "zusätzlich" eingreifen können darf, dann bekommt er eine Eingabe eines "Korrekturwertes", der dann zum Regler-Stellwert addiert (oder sonstwie verrechnet) wird.
Oder es handelt sich um eine Sicherheits-Einrichtung, dort greift dann meistens eine "Maximalwert"-Auswertung: der größere Wert von Regler- und manueller Vorgabe gewinnt…

Zitat:Der Sollwert wird vorher mit einer Kennlinie berechnet. Die ist aber ungenau, weswegen ich möchte, dass der Aktuelle Wert angezeigt wird,
Da du hier von einem Regler redest, solltest du zur Klarheit auch "ordentliche" Reglernamen verwenden.
"Sollwert" ist das, was der Regler als Zielgröße erhält. Ich habe mich in den Sätzen zuvor aber auf den "Stellwert" bezogen: das ist der Ausgabewert des Reglers.
Jetzt bringst du auch noch den "Aktuellen Wert" dazu: ist das jetzt deine Messgröße, die der Regler dann mit dem Sollwert vergleicht, um die Stellgröße zu berechnen?


RE: Anzeige und Bedienelement in einem - mikadm - 20.08.2020 08:14

Danke für deine Antwort GerdW!

Schade dass es so etwas nicht gibt. Mein VI darf ich leider nicht hochladen...
Ich habe mit aktuellem Wert auch den Sollwert gemeint. Die Regelung funktioniert einwandfrei und ich möchte wegen einer zusätzlichen Bedingung eingreifen können.

Ich werde es mit einem Korrekturfeld probieren.


RE: Anzeige und Bedienelement in einem - GerdW - 20.08.2020 08:44

Hallo mikadm,

Zitat:Mein VI darf ich leider nicht hochladen...
Du könntest ein Beispiel-VI erstellen, welches dein Problem demonstriert - ohne irgendwelche "geheimen" Firmeninterna…

Zitat:Ich habe mit aktuellem Wert auch den Sollwert gemeint.
Der Sollwert wird vorher mit einer Kennlinie berechnet. Die ist aber ungenau,
Wäre es dann nicht einfacher, die Kennlinie zu korrigieren/verbessern?
Oder gar durch ein Kennfeld zu ersetzen? (Oder bei noch mehr Eingangsgrößen durch eine Berechnung?)

(Meine User wünschen sich üblicherweise mehr (Regelungs-)Automatismus und weniger Handsteuerung. Und wenn Regler Kennlinien-/Kennfeld-basiert arbeiten (aka feed forward control), dann sollte man an dieser Stelle bestmögliche Vorgaben machen…)


RE: Anzeige und Bedienelement in einem - THL - 21.08.2020 09:00

(19.08.2020 09:29 )GerdW schrieb:  Du kannst ein Control nehmen und dort per lokaler Variable ständig den "aktuellen Wert" reinschreiben.
Dummerweise führt das aber zu Problemen, wenn der User gleichzeitig versucht, selbst einen Wert einzutippen: dein VI schreibt ja dauernd selbst einen Wert in das Control…
Vor dem Problem stand ich auch. Ich habe es so gelöst, dass die property 'KeyFocus' vor dem Schreiben abgefragt wird. Falls TRUE wird der Wert nicht vom Programm verändert,
da der Nutzer offensichtlich gerade dort am Gange ist. Zusätzlich ist das Ganze noch mit einem kurzen Timer abgesichert, der ausgelöst wird wenn der Nutzer einen neuen Wert eingegeben hat
(und KeyFocus FALSE wird), damit dieser Wert auch verarbeitet wird, bevor das Programm wieder anfängt eigene Werte hineinzuschreiben.
Bisschen kompliziert und umständlich, tut aber seinen Zweck.


RE: Anzeige und Bedienelement in einem - GerdW - 21.08.2020 09:09

Hallo THL,

Zitat:Ich habe es so gelöst, dass die property 'KeyFocus' vor dem Schreiben abgefragt wird.
Interessanter Lösungsweg!

Ich habe darauf verzichtet, weil ich dieses "gleichzeitig Anzeige und Eingabe" hauptsächlich in unserer Prüfstandssoftware benötige (mit diversen Reglerkreisen), wo ich jetzt nicht periodisch in den UserThread wechseln will, um den KeyFocus abzufragen - dass würde mir die Performance wahrscheinlich doch stark beeinträchtigen.
Wenn NI nur endlich mal diesen (mittlerweile 9 Jahre alten) Eintrag im IdeaExchange umsetzen würde…


RE: Anzeige und Bedienelement in einem - mikadm - 24.08.2020 10:11

Ich arbeite an der Kennlinie. Das ist wirklich die schönste Lösung.