' schrieb:Hi,
wenn du in einem State eine While-Schleife unterbringst - egal ob in nen SubVI oder direkt - wird die State-Machine nicht weiterlaufen! D.h. es wird auch keine Information aus dem SubVI im HauptVI weiterverarbeitet. Was du machen müsstest wäre folgendes:
Deine Main-State-Machine hat ja schon eine umgebende While-Schleife, die alles am Leben erhält. Du musst dann in einen State springen, dort ins SubVI und dieses 1x abarbeiten....dann wird das SubVI mit der Information "Nochmal" oder "Ende" wieder verlassen, je nach Bedingung...diese Information wird noch im State ausgewertet und dann springst du entweder wieder in diesen State (= "Nochmal") oder in den nächsten
A.
Ich denke, dass die äusserste While Schleife auch nicht störrt, da ja alles in diese rein gepackt wird. Über ein Shift-Register wird ja auch der aktuelle State rausgeben, wenn das SubVI abgearbeitet ist. Die State Machine funktioniert auch und die Funktionweise der State Machine habe ich auch verstanden. Aber ich mit dem Austausch der sich änderen Variablen im SubVI zum MainVI (State) bzw. in mein Sicherheits VI (probiert als parallele While Schleife bzw. als SubVI ohne While Schleife) happert es leider.
Im SubVI kann ich die Variablen über eine Lokale Varibale aus der While Schleife auslesen, aber sobald im Main intergriert muss ich das Frontpanel vom SubVI öffnen und die Variabeln ändern, damit die Variablen im SubVI geändert werden.
Da ich immer wieder die gleichen Funktionen verwende, habe ich diese als SubVI erstellt und nun im jeweilgen State eingepflanzt. Leider muss ich im SubVI zum Teil While-Schleifen bzw. For Schleifen verwenden. Ich könnte auf die SubVI's Verzichten und es Flach im State programmieren und nur über Bedingungen ein wechsel in einen neuen State realisieren, was aber einen riesigen Programmieraufwand bedeute.
Ich dachte bei LabVIEW ist ein Vorteil, dass man sich Module (SubVI's) programmieren kann, und diese immer wieder verwenden kann.
Lange Rede kurzer Sinn: Was für Möglichkeiten habe ich Werte von Variablen von Schleifen zu Schleifen bzw. von SubVI's zu MainVI's etc. zu Übergeben, oder was für Programmstrukuten muss ich verwenden, dass diees möglich ist?
Ganz Wichtig: Ich möchte dass wenn die Bedingung für ein Alarm / Error eintreten sofort eine Aktion haben und nicht erste wenn die Schleife bzw. das SubVI abgearbeitet ist.
Vielen Dank und Grüsse
Hp