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!
hab mal ne Frage zu der Werteübergabe in einer StateMachine:
Wenn ich beispielsweise im ersten Case einen Wert erzeuge/messe und den im 23. Case weiterverwenden möchte, muss ich dann das Schieberegister in den 21 anderen Cases immer verbinden? Oder gibt es da auch ne andere Möglichkeit? Lokale Variable ginge ja auch noch, aber das ist ja auch nicht unbedingt das Gelbe vom Ei, oder? Andererseits ist das Verbinden auch ein gewisser Aufwand und fördert nicht unbedingt die Übersichtlichkeit.....
' schrieb:hab mal ne Frage zu der Werteübergabe in einer StateMachine:
Wenn ich beispielsweise im ersten Case einen Wert erzeuge/messe und den im 23. Case weiterverwenden möchte, muss ich dann das Schieberegister in den 21 anderen Cases immer verbinden?
Ja, musst du. Wobei man das in den neueren Versionen (ich meine seit 8.6) automatisieren kann. (Rechtsklick auf eine Tunnel -> etc etc).
' schrieb:Oder gibt es da auch ne andere Möglichkeit? Lokale Variable ginge ja auch noch, aber das ist ja auch nicht unbedingt das Gelbe vom Ei, oder?
Kommt darauf an. Lokale Variablen haben die Gefahr von Race-Conditions. Und bei Arrays wird dann unnötig Speicher belegt.
' schrieb:Andererseits ist das Verbinden auch ein gewisser Aufwand und fördert nicht unbedingt die Übersichtlichkeit.....
Lösung: Alles zu einem Cluster zusammenbauen, und dann nur diesen Cluster als Shift-Register weitergeben!
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!
Die Idee mit dem Cluster ist mir in dem Fall noch nicht gekommen. Die waren mir auch lange Zeit eher suspekt, aber so langsam komm ich dahinter...und für einige wenige Werte kann ich ja mal ne globale Variable einsetzen. Danke.
' schrieb:...und für einige wenige Werte kann ich ja mal ne globale Variable einsetzen. Danke.
Ich frag mich nur immer warum? Der Aufwand für eine Global Variable ist doch viel größer als ein neues Schieberegister anzulegen und hat gleichzeitig Raceconditions vermieden.
' schrieb:Ich frag mich nur immer warum? Der Aufwand für eine Global Variable ist doch viel größer als ein neues Schieberegister anzulegen und hat gleichzeitig Raceconditions vermieden.
100% ACK. Und wenn man den Cluster noch typdefiniert, dann kann man das problemlos erweitern, wenn man weitere Variablen im Shiftregister braucht. Dann kann man so einen Cluster auch durch SubVIs schleifen. Und per (Un)Bundle by Name ist das auch hochgradig lesbar!
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!
' schrieb:Ich frag mich nur immer warum? Der Aufwand für eine Global Variable ist doch viel größer als ein neues Schieberegister anzulegen und hat gleichzeitig Raceconditions vermieden.
Wenn ich wie in oben genanntem Beispiel dann erst 21 Cases durchverbinden muss, dauert das Schieberegister ja schon länger. Außerdem wird mein Blockdiagramm langsam so schon voll, da ich auf die Möglichkeit des Clustern erst jetzt gekommen bin (wurde).
' schrieb:Schon mal an das Auslagern von Code in SubVIs gedacht?
Klar, das mach ich auch. Nur dadurch, dass ich für die Weitergabe der einzelnen Werte keine Cluster benutzt habe, sind die Diagramme eben mehr oder weniger voll mit Schieberegistern. Es ist jetzt nicht der schlimmste Spaghettisalat, da die Register ja meist geradlinig verlaufen, aber es könnte etwas besser aussehen. Wenn ich mir Diagramme von Kollegen anschaue, bin ich aber immer noch höchst zufrieden mit meinen BDs.