Zitat:Ich möchte gerne die Ein / Ausgänge miteinander Verknüpfen. Das ganze soll so eine Art kleine SPS werden. Also möchte ich den Ausgang 1 von Modul 1 z.B. zeitverzögert setzen, wenn z.B. Eingang 1 von Modul 1 und Ausgang 3 von Modul 2 aktiv sind?!Wie kann ich das Programm am geschicktesten erweitern?
Ich würde die Datensatzeingabe - also das Erstellen der Verknüpfungsliste - von der Abarbeitung dieser Liste.
Zwei Punkte müssten meiner Meinung nach ergänzt werden.
Der "Eingabecluster" muss um ein "Ergebnisfeld" erweitert werden. Eine Operation kann z.B. heißen (wie du schon gesagt hast) "Modul 1" verknüpft mit "Modul 2" gibt als Ergebnis "Modul 3". In der nächsten Zeile könnte dann "Modul 3" ein Eingangsparameter für eine weiteren Verknüpfung sein. Dadurch ist eine auch kompliziertere Abfolge von Verknüpfungen möglich. (Dass hier pro Eingangsmodul ein INT32-Feld vorhanden sein sollte, um z.B. einen Startwert setzen zu können, stellen wir mal ganz hinten an.)
Die zweite Erweiterung wäre eine "Online-Abarbeitung" des erstellten Listenfeldes. Ich würde hier zuerst einen Timeout-Event einführen und dort z.B. das Array "ObjektNamen" in ein SubVi übergeben. Das SubVI enthält ein Frontpanel, das den aktuellen Zustand der SPS darstellt - und das
nicht geschlossen wird, sobald das VI verlassen wird. Außerdem befindet sich in diesem SubVI eine Statemachine, die die Liste abarbeitet. (Da das SubVI zyklisch alle (ungefähr) 250ms aufgerufen wird, kann es auch Zeiten verarbeiten). In einem zweiten Schritt könnte man das SubVI in eine eigene While-Schleife legen, dann muss man aber die Daten von der Eingabe-While-Schleife in die zweite übertragen - z.B. mit einem Melder (oder einer globalen Variablen).
Was ich nicht schön finde, ist, dass hier alles über Strings geht und nicht über (Index-)Zahlen. Beispiel: Als Ergebnis kommt heraus: Setze M4/P22. Da die Werte aller Ports in einem dreidimensionalen Array stehen, bedarf es eines Indexes um den Wert zu speichern. Den Index kann man sich natürlich auch mittels des VI "Index Suchen" holen - nur: eine Zahl, die von vorne herein ist, geht halt schneller. Indices erfordern halt beim Speichern der Eingabedaten in dem "Listenfeld" mehr Aufwand.