Impulse zählen und langsam ausgeben

El Cattivo

Level-2
Beiträge
184
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bekomme an meiner Steuerung (S7-1200) Impulse durch einen Sensor Impulse die Impulse sind nicht zu schnell für meine Steuerung aber zu schnell für das BDE System dem ich dise Information weiter geben muss.
Ich möchte als die Impulse schnell erfassen und praralell langsam wieder ausgeben. In der Zeit in der von Sensor keine Impulse kommen kann der Baustein die restlichen Impulse noch übertragen.
 
Hallo,

dafür nutze ich einen kleinen FB. Der Zählt eine Zahl herunter und gibt dabei Impulse aus. Die Impulse haben dabei immer genau die Länge vom Takteingang.
Zähler.jpg
Zähler_Aufruf.jpg

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bekomme an meiner Steuerung (S7-1200) Impulse durch einen Sensor Impulse die Impulse sind nicht zu schnell für meine Steuerung aber zu schnell für das BDE System dem ich diese Information weiter geben muss.
Ich möchte als die Impulse schnell erfassen und praralell langsam wieder ausgeben. In der Zeit in der von Sensor keine Impulse kommen kann der Baustein die restlichen Impulse noch übertragen.
Die Pausen zwischen hereinkommenden (schnellen) Impuls-"Paketen" sind lang genug, um die aufgelaufene Anzahl (langsam genug) wieder auszugeben?
Woher weisst Du, ob bzw. wann die BDE bereit ist die Impulse zu empfangen? Was soll passieren, wenn die BDE nicht die aufgelaufene Menge an Impulsen seriell aufnehmen kann? Könntest Du ersatzweise z.B. eine INT-Zahl an die BDE senden, um ihr mitzuteilen, dass sie z.B. 99 Impulse im Rückstand ist?

Code:
IF NOT sEingabeZuvor AND Eingabe THEN
    Zähler := Zähler + 1 ;
END_IF ;
sEingabeZuvor := Eingabe ; 

AusgabeBit := AusgabeBit AND AusgabeTakt ;
IF sAusgabeTaktZuvor OR NOT AusgabeTakt THEN
    ; // nix
ELSIF Zähler > 0 THEN
    AusgabeBit := TRUE ;
    Zähler := Zähler - 1 ;     
END_IF ;
sAusgabeTaktZuvor := AusgabeTakt ; 

// TastVerhältnis von AusgabeTakt: das AusgabeBit bleibt (mindestens) solange auf TRUE bzw. FALSE wie der AusgabeTakt
 
Danke für eure Unterstützung so ähnlich hatte ich es auch versucht, bin aber nicht so richtig zu einer Lösung gekommen.
Der vorschlag von @Heinileini mir ganz gut.

Hätte es so umgebaut:

Code:
IF NOT sEingabeZuvor AND Eingabe THEN
    Zähler := Zähler + 1 ;
END_IF ;
sEingabeZuvor := Eingabe ;

AusgabeBit := AusgabeBit AND AusgabeTakt ;
IF NOT sAusgabeTaktZuvor AND AusgabeTakt AND Zähler > 0 THEN
    AusgabeBit := TRUE ;
    Zähler := Zähler - 1 ;     
END_IF ;
sAusgabeTaktZuvor := AusgabeTakt ;

// TastVerhältnis von AusgabeTakt: das AusgabeBit bleibt (mindestens) solange auf TRUE bzw. FALSE wie der AusgabeTakt

Ergeben sich dadurch Nachteile?
 
Zurück
Oben