LabVIEWForum.de
Motoren starten nicht synchron - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Motoren starten nicht synchron (/Thread-Motoren-starten-nicht-synchron)



Motoren starten nicht synchron - marsius - 27.05.2014 09:16

Hallo,

ich bin gerade dabei einen 3D-Drucker zu programmieren und dabei sollten die Motoren natürlich möglichst zeitgleich starten. Momentan gibt es aber eine Verzögerung von ca. 0,2s zwischen X- und Y-Achse.

In dem VI werden in dem Case "Druckauftrag" in der Nachrichtenbehandlungsschleife Daten für die Motoren erzeugt, die dann in einem Cluster über einen Melder an die Motoren weitergeleitet werden. Der Melder sollte eigentlich auch dazu dienen, dass die Motoren gleichzeitig starten. Links unten im VI sind vier Schleifen in denen jeweils ein Motor über eine DLL gesteuert wird und rechts daneben ist noch eine Schleife in der leicht verzögert der Motorstatus überprüft werden soll.

Liegt die Verzögerung an dem VI oder ist der Fehler eher woanders zu suchen?


RE: Motoren starten nicht synchron - jg - 27.05.2014 21:02

Bist du sicher, dass die DLL wirklich mehrfach parallel aufrufbar ist?
Ist das "Motor-VI", welches die DLL aufruft, auf reentrant gestellt? Nur dann kann es von LabVIEW mehrfach (quasi) parallel aufgerufen werden.

Gruß, Jens


RE: Motoren starten nicht synchron - marsius - 27.05.2014 21:29

Sicher bin ich mir nicht, das könnte durchaus das Problem sein. Aber ist die Verzögerung dann nicht trotzdem etwas hoch?
Meinst du mit reentrant die Option "In beliebigen Thread ausführen" / "Run in any thread"? Ich werde das morgen mal ausprobieren.


RE: Motoren starten nicht synchron - jg - 27.05.2014 21:44

Nein, das meinte ich nicht (obwohl das auch eine Fehlerquelle sein könnte). Auf was stehen denn aktuell die DLL-Aufrufe? Hoffentlich nicht auf UI-Thread?

Ich meinte das hier:
[attachment=49852]

Du rufst - wenn ich mich richtig erinnere - immer dasselbe VI auf, nur mit anderen Parametern.
Ein VI, das nicht auf reentrant gestellt ist, kann aber nicht mehrmals parallel ausgeführt werden (deshalb funktionieren FGVs...).

Ob 0,2s selbst bei sequentieller Ausführung (zwecks DLL oder VI) zu viel ist, das kann ich nicht sagen. Ich kenne weder deine DLL noch das VI, welches die DLL aufruft.

Gruß, Jens


RE: Motoren starten nicht synchron - marsius - 27.05.2014 22:00

Doch, momentan steht alles auf UI-Thread.

Ich teste das dann morgen mal und melde mich ggf. nochmal.


RE: Motoren starten nicht synchron - marsius - 28.05.2014 10:56

Ich habe jetzt beides ausprobiert, aber gebracht hat es leider nichts.