LabVIEWForum.de
Motorensteuerung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Motorensteuerung (/Thread-Motorensteuerung)



Motorensteuerung - Oskimo - 15.09.2010 08:15

Hallo zusammen,
Ich möchte einen Motor steuern. Dabei gebe ich dem Motor ein digitales Signal zum ein- und ausschalten und lese dann über einen analogen Kanal seine Position ein. Also gebe ich im Endeffekt einen Soll-Wert vor und der Motor fährt solange bis er den Soll-Wert erreicht hat. Ich will aber diese Routine stoppen können, wenn ich zum Beispiel in der Oberfläche neue Soll-Werte laden will. Des Weiteren will ich die gesamte Zeit über den aktuellen Ist-Wert auf der Oberfläche dargestellt haben. Das Problem ist nun folgendes:
Welches Applikationsdesign ist das beste für diese Anwendung? Ich hatte mir das Master/Slave Template angeschaut. Hierbei dachte ich mir, dass ich dann die Oberfläche in die Master-Schleife packe und die Verfahrung in die Slave-Schleife. Hierbei ist nun das Problem, dass ich auch Daten aus der Slave-Schleife benötige (Ist-Werte), die ich in der Oberfläche darstellen will. Gibt es ein fertiges Template, oder ein Konzept, mit dem ich dieses Problem übersichtlich lösen kann? Ich meine, dass dies ja eine Standard-Aufgabe für LabVIEW ist.
Danke


Motorensteuerung - schurzgasschweisser79 - 17.09.2010 10:07

Hm, wenn du nur einen Ist-Wert abrufen magst verstehe ich die Notwendigkeit von einer Master/Slave Struktur nicht. Lass doch einfach beim Starten des Motors eine Schleife anlaufen, die immer den aktuellen Wert abruft/ausgibt und beim Drücken auf einen Knopf das "Stopp"-Signal sendet.


Motorensteuerung - Oskimo - 17.09.2010 13:13

Der Grund warum ich die Oberfläche von der Motorsteuerung entkoppeln will ist, dass der Motor auf keinen Fall zu weit fahren darf, aber die Oberfläche sollte trotzdem Möglichkeiten haben Daten zu laden oder anderes zu tun.
Ich hab das ganze jetzt über Queues gelöst, wobei ich nur maximal ein Element zu lasse und beim Schreiben der Queues vorher alle Elemente aus dem Queue lösche, so dass es zu keinen Verzögerungen beim Schreiben kommt. Dabei hab ich zwei Queues erstellt, eines welches die Daten an die Steuerung sendet und eines, welches Daten von der Steuerung an die Oberfläche sendet. Klappt auch soweit.


Motorensteuerung - schurzgasschweisser79 - 17.09.2010 13:28

Naja,
du hast gesagt du willst den Motor stoppen, bevor du neue Sachen (Sollwert) lädst. Dann bräuchtest du keine zweite Schleife. Aber wenn das parallel laufen muss, dann ist wahrscheinlich ein paralleles Loop schon angebrachtSmile
Übrigens: Wenn du nur einen Wert übergeben willst, dann kannst du auch einen "Melder/Notifier" nehmenWink- die Queue hat - so wie du sie verwendest - keine Funktion als Queue...finde ichWink
Ist aber nicht weiter wichtig, solange es geht.