Hallo zusammen,
die Lösung für das oben beschriebene Problem wurde gelöst, jedoch habe ich ein etwas abgeändertes Ziel verfolgt womit die Lösung leider so nicht zurecht kommt.
Das folgende Programm basiert auf einer CAN Aufnahme in der erst eine Zeit beginnen soll abzulaufen wenn hier in der Funktion (stark vereinfacht) ein Arrayinhalt ungleich 0 ist. Das heißt für die Funktion im Speziellen:
Die äußerste For-Schleife gibt die Sekunden vor (12 Sek. und 10 Sek.). Die beiden inneren While-Schleifen regeln die Aufnahme (im realen System nicht hier in der Funktion) und die Zeitdauer der Aufnahme. Nun soll die Zeit stets 0 bleiben wenn der Botschaften CAN - Array Nullwerte beinhaltet. Dieses Array wird später ein Array sein und kein einzelner Wert daher ist die innere While-Schleife notwendig.
Ändert sich der Botschaft-inhalt z.b. auf eins so beginnt der Zähler (die Zeit) abzulaufen bis zur Vorgabe z.b. von 12 sek. Ist dieser erreicht kann eine beliebige Zeit ablaufen hier simuliert durch die 2 Sekunden bis die nächste Zeitvorgabe gemacht wird (10 Sek.). Nun soll wiederum gewartet werden bis der Botschaftsinhalt ungleich 0 ist und bei Wertänderung z.b. wieder auf 1 beginnt die Zeit diesmal von 0 und soll bis 10 sek. laufen, das tut sie leider nicht sie startet bei dem Zeitwert bis die nächste Wertänderung vorgenommen wurde, am Besten mal ausprobieren, ist schwer zu erklären.
Zusammengefasst (Ziel)
- > 12 Sekunden Gesamtzeitdauer -> bei Wertänderung des Arrays ungleich 0 (innerhalb von 12 sek. muss dieser wieder auf 0 gesetzt werden!!! -> Zeit läuft bis 12 Sek.
-> beliebige Zeit kann vergehen ...
-> 10 Sek. Gesamtzeitdauer -> bei Wertänderung des Arrays ungleich 0 (innerhalb von 10sek. muss dieser wieder auf 0 gesetzt werden!!! -> Zeit läuft bis 10 Sek.
-> Fertig
Hoffe ihr könnt mir weiterhelfen, denke es ist nicht mehr weit bis zur Lösung.
Vielen Dank.
Grüße
Unbenannt 1.vi (Größe: 49,75 KB / Downloads: 181)
LV-Starter