Hallo zusammen,
ich verusch euch mal mein Problem zu erklären:
Ich habe auf einen Controller ein Rechtecksignal geladen. Diese ist 500ms lang EIN und wieder 500ms lang aus.
Ich habe jetzt das Rechecksignal aktiviert (DI1.2=1), habe 500ms lang gewartet und habe das Signal ausgelesen. Jetzt müsste ich ja in jedem Schleifenschritt abwechselnd 0 und 1 bekommen (meine Erwartung) das kontolliere ich mit einem Vergleich.
Leider läuft das irgendwas mit den Zeiten schief, aber ich komm nich drauf. Ich habe 112 Schleifenschritte ausgeführt und der Vergleich gab folgendes Ergebnis:
Schritt:Ergebnis
1:True
2-32:False
33-64:True
65-96:False
97-112:True
Eigentlich müsste ich ja da immer True haben. In den Fällen wo ich False bekomme, ist das Ist-Signal und Soll-Signal immer umgekehrt.
Hab da auch mit der Verzögerung bischen gespielt, weil ich dachte er braucht vllt Zeit zum lesen/schreiben, gab zwar eine Änderung aber ich hatte trotzdem nicht konstant "True" als Ergebnis.
Ich hoffe jemand weiß Rat.
Achso, vllt noch was. Ich habe es auch mal so versucht:
Wenn ich oben, bei der Verzögerung +0 Eintrage, funktioniert das mit den Rechtecksignale wunderbar und ich habe überall "True".
So, jetzt habe ich auf dem Controller nich nur ein Rechtecksignal, sondern auch eine Einschaltverzögerung von 2s. Wenn ich nur ein Bit setze, 2s warte und abfrage ob es da ist, dann krieg ich beim Vergleichen ein "False" und erst im nächsten Schleifendurhclauf ein"True"
. Deswegen habe ich zu Verzögerung 30ms dazuaddiert. Denn wenn ich 2s und 30ms auf die Einschaltverzögerung warte, dann krieg ich beim Vergleichen ein "True"
Nur wie mach ich das, dass ich sowohl Rechtecksignal, als auch Einschalverzögerung korrekt ausgewertet bekomme?