Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Moin alle Zusammen,
es geht um die Steuerung von 3 Motoren. Die sollen alle ausschalten, wenn die eine POS erreicht haben. Im Anhang ist ein Beis Prog. Der läuft noch nicht ganz. Meine Frage ist, kann man 3 Schieberegister für ein Enum Konstant benutzen, oder soll man für jeden Schieberegisten ein Enum Konstant hinfügen.
Danke
LG
LOLA
wenn deine 3 Motoren (die im BD alle mit "Motor 1" kommentiert wurden) unabhängig voneinander agieren sollen, solltest du jedem sein eigenes Enum spendieren. Und noch sinnvoller wird es, wenn jeder Motor seine eigene Steuerschleife bekommt…
Der Informationsgehalt deines Beitrags macht es wirklich schwer, allein schon dein tatsächliches Problem zu verstehen. Es wäre echt hilfreich, wenn du deine Problemstellungen so konkret und detailiert wie möglich ausführst.
Anhand deines VI´s kann ich nur erraten, was du da vor hast. Du möchtest die drei Motoren alle unabhängig bedienen/ansteuern und hast versucht jeweils eine Statemachine dafür zu erzeugen. Liege ich da richtig?
Wenn die Motoren unabhängig laufen sollen, könntest du für einen Motor eine Statemachine erzeugen und als reentrant SubVi speichern. In einem Main VI würdest du dann für jeden Motor das Subvi asynchron aufrufen. In diesem Fall müsstest du nicht auf den letzten Motor warten.
Die große Frage ist ausserdem: Sollen die ALLE ausschalten wenn EINER seine Position erreicht hat oder sollen die einzeln aussachalten, wenn sie die für sich jeweils eingestellte Position erreicht haben?
... ganz zu schweigen davon, dass aktuell in diesem VI die Motoren einfach immer fahren! THINK Dataflow! Das oberste Schieberegister initialisierst du mit "Fahren", im Fahren-Case gibst du an aber nur den Default-Wert (=Fahren) weiter.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Was hier gesagt wurde, ist alles notwendig und richtig: Für die drei Motoren sollte man drei unabhängige State-machines in drei unabhängigen Schleifen haben.
Die eigentliche Frage war aber: kann man 3 Schieberegister für ein Enum Konstant benutzen, oder soll man für jeden Schieberegisten ein Enum Konstant hinfügen.
Antwort:
Nein, das mußt Du nicht. Wenn Du in allen 3 Schleifen dieselben States [Fahren, ChekPos, Stop] benutzt, kannst du die, ausgehend von einer einzigen Konstanten, für alle drei Schleifen voneinandner kopieren. In Deinem VI wäre es auch egal, ob Du zur Intialisierung der drei Schieberegister die einzige Konstante "Fahren" benutzt, oder zur Initialisierung der drei Schieberegister je eine eigene Konstante "Fahren".
Zu empfehlen ist aber in jedem Falle eine Typisierung des Enum.
04.11.2014, 01:41 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2014 01:53 von lola2014.)
wenn deine 3 Motoren (die im BD alle mit "Motor 1" kommentiert wurden) unabhängig voneinander agieren sollen, solltest du jedem sein eigenes Enum spendieren. Und noch sinnvoller wird es, wenn jeder Motor seine eigene Steuerschleife bekommt…
Danke GerdW,
ich habe das Programm anders geschrieben, und ich hoffe, dass es mit Warteschleife hinhaut. ich habe 2ms als Takt genommen.
LG Lola
Hallo NoWay
(30.10.2014 08:11 )NoWay schrieb: Zunächst:
Der Informationsgehalt deines Beitrags macht es wirklich schwer, allein schon dein tatsächliches Problem zu verstehen. Es wäre echt hilfreich, wenn du deine Problemstellungen so konkret und detailiert wie möglich ausführst.
Anhand deines VI´s kann ich nur erraten, was du da vor hast. Du möchtest die drei Motoren alle unabhängig bedienen/ansteuern und hast versucht jeweils eine Statemachine dafür zu erzeugen. Liege ich da richtig?
fast, also die drei oder vier Motoren sollen gleichzeitig fahren, und wenn ein Motor seiner Position erreicht hat, soll er anhalten unabhängig von der anderen Motoren
(30.10.2014 08:11 )NoWay schrieb: Wenn die Motoren unabhängig laufen sollen, könntest du für einen Motor eine Statemachine erzeugen und als reentrant SubVi speichern. In einem Main VI würdest du dann für jeden Motor das Subvi asynchron aufrufen. In diesem Fall müsstest du nicht auf den letzten Motor warten.
Die große Frage ist ausserdem: Sollen die ALLE ausschalten wenn EINER seine Position erreicht hat oder sollen die einzeln aussachalten, wenn sie die für sich jeweils eingestellte Position erreicht haben?
Die Motoren sollen einzeln aussachalten, wenn sie die für sich jeweils eingestellte Position erreicht haben.
Lg
Lola
Anzeige
04.11.2014, 10:11 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2014 10:15 von Lucki.)
Habe mir das VI mal angesehen. Es wurde so programiert, als ob die Reihenfolge der 6 Kommandos Enable, Geschwindigkeit, INT M4, ... egal wäre. Kann mir nicht vorstellen, dass das gut geht. Wahrscheinlich gehst Du von der irrigen Annahme aus, dass Labview die Kommandos wie eine textbasierte Sprache abarbeitet, also immer schön von oben nach unten.
Außerdem: Die einzelnen Kommandos schreien nach je einem eigenen SubVi.
So z.B würde es mit der richtigen Reihenfolge funktionieren: