Event struktur: event triggern mit digital input - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Event struktur: event triggern mit digital input (/Thread-Event-struktur-event-triggern-mit-digital-input) Seiten: 1 2 |
Event struktur: event triggern mit digital input - Brainbug - 26.03.2015 15:08 Moin, ich stehe gerade vor der Aufgabe einen digitalen input mit einem Event zu koppeln. (siehe VI) Vom Frontpanel aus kann man Buttons betätigen die events auslösen. Diese Events sollen nun auch über einen digitalen Input getriggert werden. Der digitale input ist in diesem VI ebenfalls durch Buttons auf dem Frontpanel dargestellt. Diese Buttons sind im Schaltverhalten "Bis zum loslassen schalten". Da die "echten" Frontpanel buttons im Schaltverhalten "Latch beim loslassen" sind, können keine lokale Variabeln und Eigenschaftsknoten benutzten werden. Stelle ich diese Buttons auf "Bis zum loslassen schalten" wird das Event 2 mal ausgelöst. Ich komme leider nicht weiter und hoffe auf Hilfe! Ein 2tes Problem besteht darin zu erfassen, ob ein kopf gedrückt ist. Kurzes Beispiel: Um den Motor vorwärts zu bewegen muss ein Befehl gesendet werden. dies erfolgt durch drücken des Buttons auf dem FP. Um den Motor dann wieder anzuhalten muss der Stop-Button gedrückt werden. Ich möchte es gerne so umsetzen, dass der Motor vorwärts fährt SOLANGE der entsprechende Button gedrückt wird. Wie kann ich dies mit der Event struktur umsetzten? Ich stoße hier auf die gleiche Problematik wie oben. Cheer sagt der LV-Grünschnabel Brainbug RE: Event struktur: event triggern mit digital input - GerdW - 26.03.2015 15:20 Hallo Brainbug, Zitat:Diese Events sollen nun auch über einen digitalen Input getriggert werden.Und dazu schreibst du den Wert deinen "digitalen Inputs" in einen boolschen Indicator und verknüpfst diesen mit einem Eventcase. Dummerweise löst aber das programmatische Schreiben eines Wertes in einen Indicator kein Event aus! Events werden ausgelöst durch: - Benutzeraktionen - die "Value (signalling)"-Propertynode - User-defined events Such dir eine dieser Möglichkeiten aus! Zitat:Ich möchte es gerne so umsetzen, dass der Motor vorwärts fährt SOLANGE der entsprechende Button gedrückt wird. Wie kann ich dies mit der Event struktur umsetzten?Ein Button im "Bis zum Loslassen schalten"-Modus erzeugt ein ValueChange-Event, wenn er gedrückt wird und ein zweites, wenn er losgelassen wird… RE: Event struktur: event triggern mit digital input - Brainbug - 26.03.2015 15:43 Moin Gerd! Mit dem Eigenschaftsknoten Wert signalisierend habe ich es auch Versucht. Mein Vorgehen: Indikator auf FP. Wert von Digital input in Eigenschaftsknoten Wert signalisierend. Eventcase Ereignisquelle hinzufügen (den Indikatorr) auf Value change. Ergebnis: da meine abtastung des Digitalen Input alle 100 ms erfolgt, wird alle 100 ms das event getriggert...auch wenn es false ist. Was habe ich denn da übersehen? Darf ich nur einen Wert in den Eigenschaftsknoten geben, wenn getriggert werden soll? Und davon ist es richtig so, dass bei false und true des Indikators getriggert wird? Lieben Dank, Brainbug RE: Event struktur: event triggern mit digital input - GerdW - 26.03.2015 15:52 Hallo Brainbug, Zitat:Ergebnis: da meine abtastung des Digitalen Input alle 100 ms erfolgt, wird alle 100 ms das event getriggert...auch wenn es false ist.Dein Gedankengang ist geringfügig verkehrt… Die Verwendung der PropertyNode triggert bei JEDEM Schreibzugriff ein ValueChange-Event - die Property heißt nicht umsonst "Value (signalling)". Und da ist der eigentliche Wert vollkommen egal… (Nachtrag: Die Property heißt "Value…" und nicht "ValueChange"…) Zitat:Darf ich nur einen Wert in den Eigenschaftsknoten geben, wenn getriggert werden soll?Ja. Zitat:Und davon ist es richtig so, dass bei false und true des Indikators getriggert wird?Ja. RE: Event struktur: event triggern mit digital input - Lucki - 26.03.2015 16:03 (26.03.2015 15:08 )Brainbug schrieb: Vom Frontpanel aus kann man Buttons betätigen die events auslösen. Diese Events sollen nun auch über einen digitalen Input getriggert werden.Was ist denn der hardwaremäßige Background Deiner "digitalen Inputs". Z.B hat man eine Motorsteuerung mit USB oder serieller Schnittstelle für die Kommandos. Aber außerdem hat so eine Motorsteuerung fast immer noch digitale Ein-/Ausgänge, die man (eingeschränkt) frei programmieren kann. An die Eingänge lassen sich z.B die Schalter für die Endstellungen, für die Home-Position oder zur Fernbedienung anschließen. Und man kann über die Schnittstelle programmieren, z.B. dass der Motor bei Erreichen der Endposition sofort stoppt, und dann nur noch zurück, aber nicht weiter vorwärts bewegt werden kann. Das macht aber direkt die Firmware in der Motorsteuerung, das geht nicht erst über eine langsame Schnittstellen hin und her, und dazu noch über ein Windows-Programm. Wenn aber solche digitalen Inputs fehlen, dann bleibt nichts übrig, als den Status das Motors, also z.B die momentane Position, mit möglichst hoher Rate zu pollen. Das wäre aber dann nicht so toll. Und irgendwie sollte man schon die Endschalter lesen können RE: Event struktur: event triggern mit digital input - Brainbug - 26.03.2015 16:11 Moin Lucki, der Hintergrund ist eine ganz banale Fernbedienung, über die ich die Vorwärts, Rückwärts, Start, Stop machen möchte. Die Problematik ist: Fernbedienung- bei dauergedrücktem Taster --> dauersignal, Frontpane- bei dauergedrücktem Taster --> Latch Ich kriege die weder mit Eigenschaftsknoten noch Userevent über die Ereignisstruktur vereint. Zudem ist weiter das Problem, dass der Motor sich nur bewegen soll, solange der FP-Button gedrückt ist...finde auch dafür keine Lösung. RE: Event struktur: event triggern mit digital input - GerdW - 26.03.2015 16:14 Hallo Brainbug, siehe Anhang: jedes Schalten (Drücken & Loslassen) des Buttons erzeugt ein Event… Zitat:Zudem ist weiter das Problem, dass der Motor sich nur bewegen soll, solange der FP-Button gedrückt ist...finde auch dafür keine Lösung.Beim ersten Event (Drücken) den Motor starten, beim zweiten Event (Loslassen) den Motor stoppen. Wo ist das Problem? RE: Event struktur: event triggern mit digital input - Brainbug - 26.03.2015 16:27 Moin Gerd, ich glaube wir reden aneinander vorbei...oder ich verstehe es einfach nicht. Zitat:siehe Anhang: jedes Schalten (Drücken & Loslassen) des Buttons erzeugt ein Event… Richtig! Dies basiert aber nicht auf das von mir gegebene VI mit Queue....mit diesem Aufbau sende ich per Queue den Befehl mehrfach, wie ich weiter oben schon erwähnt hatte. Oder ich mache da einfach noch was falsch... Zitat:Beim ersten Event (Drücken) den Motor starten, beim zweiten Event (Loslassen) den Motor stoppen. Wo ist das Problem? Ist die gleiche Problematik wie oben...soweit ich das sehe. Ich muss zum bewegen des Motors EINMALIG einen Befehl über die RS-485 senden...dies soll beim drücken des Buttons geschehen...und wenn der Button losgelassen wird muss ich den Stop_Befehl senden... RE: Event struktur: event triggern mit digital input - GerdW - 26.03.2015 16:32 Hallo Brainbug, Zitat:Ich muss zum bewegen des Motors EINMALIG einen Befehl über die RS-485 senden...dies soll beim drücken des Buttons geschehen...und wenn der Button losgelassen wird muss ich den Stop_Befehl senden...wenn der Schalter gedrückt wird, sendest du ein TRUE (aka MotorEnable aka "Motor darf drehen"). Wenn der Schalter losgelassen wird, sendest du ein FALSE (aka MotorDisable aka "Motor bleibt stehen"). Und dank Event-Struktur passiert das alles jeweils nur EINMALIG. Ich verstehe nicht, wo du da ein Problem siehst!? RE: Event struktur: event triggern mit digital input - Brainbug - 26.03.2015 16:38 Moin Gerd, Mein Programm basiert auf Queue. Wird ein Button gedrückt wird ein String in die Queue geschoben, der in einer weiteren Schleifen in einem Case erfasst wird und somit z.B. den Befehl "vorwärts fahren" sendet. Habe ich einen Button auf dem FP der mit "Schalten bis zum loslassen" versehen ist, wird der String einmal beim drücken in die Queue geschoben und einweiteres mal beim loslassen! und genau das ist das Problem dabei. Edit: Ich glaube ich habe da gerade eine Idee....ev ist es die Lösung mit "Schalten bis zum loslassen" konifguration in dem Event eine case zu setzten...bei true schiebe diesen String in die Queue (befehl vorwärts) ...bei False einen anderen String (befehl stop) ..werd das mal testen. |