-> Hier kostenlos registrieren
Ich möchte gerne 5 Messwerte pro Sekunde in der SPS Puffern und nach einer Sekunde auf die interne SD-Karte schreiben lassen.
Hierzu habe ich folgenden Ansatz gewählt:
-Zunächst wird die Systemzeit der SPS mittels "SysRtcGetTime( )"ausgelesen und davon die Sekunde extrahiert. Die volle Sekunde liefert mir den ersten Wert des Puffers.
- Die weiteren Werte werden mittels einer EVEN Funktion gewonnen. Diese liefert mir bei einer "geraden Sekunde" ein TRUE und bei einer "ungeraden Sekunde" ein FALSE.
- EVEN bzw. NOT(EVEN) liefert mir das Eingangssignal von insgesamt 8 Einschaltverzögerungen.
- Die Ausgänge der Einschaltverzögerungen liefern mir Impulse für die weiteren Werte des Puffers (200ms, 400ms, 600ms, 800ms)
hierzu der Codeausschnitt des Programmes:
Gibt es eine Möglichkeit diese zeitlich verzögerten Taktsignale einfacher zu generieren?
Hierzu habe ich folgenden Ansatz gewählt:
-Zunächst wird die Systemzeit der SPS mittels "SysRtcGetTime( )"ausgelesen und davon die Sekunde extrahiert. Die volle Sekunde liefert mir den ersten Wert des Puffers.
- Die weiteren Werte werden mittels einer EVEN Funktion gewonnen. Diese liefert mir bei einer "geraden Sekunde" ein TRUE und bei einer "ungeraden Sekunde" ein FALSE.
- EVEN bzw. NOT(EVEN) liefert mir das Eingangssignal von insgesamt 8 Einschaltverzögerungen.
- Die Ausgänge der Einschaltverzögerungen liefern mir Impulse für die weiteren Werte des Puffers (200ms, 400ms, 600ms, 800ms)
hierzu der Codeausschnitt des Programmes:
Code:
Timer_200ms(IN:=EVEN, PT:= t#200ms, Q=>Takt1 , ET=> );
Timer_400ms(IN:=EVEN, PT:=t#400ms , Q=>Takt2 , ET=> );
Timer_600ms(IN:=EVEN, PT:= t#600ms, Q=>Takt3 , ET=> );
Timer_800ms(IN:=EVEN, PT:=t#800ms , Q=>Takt4 , ET=> );
Timer2_200ms(IN:=NOT(EVEN) , PT:= t#200ms, Q=>Takt1_2 , ET=> );
Timer2_400ms(IN:=NOT(EVEN) , PT:=t#400ms , Q=>Takt2_2 , ET=> );
Timer2_600ms(IN:=NOT(EVEN) , PT:= t#600ms, Q=>Takt3_2 , ET=> );
Timer2_800ms(IN:=NOT(EVEN) , PT:=t#800ms , Q=>Takt4_2, ET=> );
Flanke_Takt1(CLK:=Takt1 OR Takt1_2 , Q=> );
Flanke_Takt2(CLK:=Takt2 OR Takt2_2, Q=> );
Flanke_Takt3(CLK:=Takt3 OR Takt3_2, Q=> );
Flanke_Takt4(CLK:=Takt4 OR Takt4_2, Q=> );
Gibt es eine Möglichkeit diese zeitlich verzögerten Taktsignale einfacher zu generieren?