so langsam aber sicher werde ich verrückt
also: Ich spiele in main Import Array Daten rein, die meine Eingänge setzen (mit SetTestArray.vi) und die Ausgänge vergleichen sollen (mit GetCheckArray)
ich habe z.B. solche Daten in meinem Import Array aus Excel eingelesen:
DI1.1 Tmax(ms) DO1.1 DO1.2 DO1.3 DO1.4 DO1.5 DO1.6
0 3333 0 0 0 0 0 0
1 2000 1 0 0 0 0 0
1 2000 1 1 0 0 0 0
1 1000 1 1 1 0 0 0
1 1000 1 1 1 1 0 0
1 500 1 1 1 1 1 0
1 500 1 1 1 1 1 1
das sind 6 einschaltverzögerungen hintereinander mit 2x2s, 2x1s und 2x0,5s Verzögerung. Dann vergleiche ich die Erwartungswerte (DO Array aus der Excel Liste) und dem wirklichen Prozesswerten.
Natürlich muss ich noch eine Zeile angeben, in der ich gerade bin.
Vorher hatte ich das so, das ich die Zeit Tmax als Verzögerung in die Verbraucherschleife eingestellt hatte. Das Problem, ich musste bei einer Einschaltverzögerung die Zeile um 2 dekrementieren (einmal klar, weil ich erst nach dem Setzen den Ausgang lesen kann und einmal weil nach Punkt 2000ms der Ausgang noch nicht da war, sondern nach ca 2050ms).
Ich könnte jetzt die 50ms konstant immer zur Verzögerung dazuaddieren, aber dann krieg ich Probleme wenn ich einen Taktgenerator habe wegen der Abtastung.
Jetzt will ich das so machen, dass ich Permanent (alle 25ms oder so) Lese und Schreibe, und nur die Zeile nach 2000ms erhöhe. Weil dann kann ich nochmal eine Abfrage machen ob der Zustand stimmt und ggf nochmal kruz warten und Abfragen.
Dafür muss ich aber die Erhöhung der Zeile anhalten und trotzdem das Lesen und Schreiben aktiv halten. Also quasi parallel. Leider kann ich keine Ereignisse einsetzen, sonst wäre das kein Problem. Ich habs bis jetzt so:
und das klappt noch nich ganz.
Ich bin miserabel im erklären. Ich suche sowas wie ein "Backgroundworker" wo ich ständig meine Daten abfrage (aus dem Controller) und schreibe (von meine Schalter Array). Im Hauptprozess mache ich dann meine Auswertung (Schalter Array setzen, Controllerwerte vergleichen).
Das Problem mit beim Erzeuger-Verbraucher-System ist, dass wenn ich das "Element aus Queue entfernen" verzöger, bzw. nich benutzen möchte, auch das "Element einfügen" anhält.