Frequenzüberwachung

Chrisch

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend Forum,

Ich habe folgendes Problem und finde einfach keine Lösung:

Ich muss eine Warnleuchte (A4.0) blinken lassen, wenn an einem Eingang (E0.0) eine Frequens von unter 1Hz anliegt. Die Lampe soll nicht blinken, wenn die Frequenz über 1Hz liegt.

Ich habe mir gedacht man könnte es mit einem EVERZ machen und die Einschaltverzögerung auf 1Sek stellen. Er würde dann immer kurz durchschalten, wenn die Frequenz über 1Hz liegt. Aber wie bekomme ich ein Signal hin, wenn die Frequenz unter 1Hz liegt?

Gibt es da evt. noch andere Möglichkeiten das zu realisieren?

Ps.: Ich programmiere in Step7
 
Hallo,

hast du doch schon:
Entweder ist f>1Hz oder eben nicht.
Wenn du das eine Signal gebildet hast musst du es doch nur invertieren



MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1s?
1Hz bedeutet eine komplette Schwingung pro Sekunde und das sind in der Reglel 500ms Signal EIN und 500ms Signal AUS!

Ich würde das mit 'ner Flankenauswertung und 'ner Ausschaltverzögerung machen. Und dann immer mit der steigenden Flanke Deines Taktsignals die Ausschaltverzögerung anstoßen. Nur steigende Flanke, dann natürlich 1s!

Wie genau muss das Ganze denn sein? Wenn Du das genauer brauchst, dann die Ausschaltverzögerung noch mit der negativen Flanke Deines Taktes zusätzlich anstoßen! Dann jedoch darf der Timer nur auf 500ms stehen!

Alternativ kannst Du auch die Echtzeit in ms der CPU vergleichen. Dazu könnte man den SFC64 TIME_TCK nutzen!
 
Guten Morgen Forum,

Habe das Signal jetzt mit 500ms Einschaltverzögerung auf den Eingang von einem EVERZ gelegt.

Das hat auch schon gut funktioniert, ich bekomme jetzt immer einen kurzen Impuls, wenn die Frequenz unter 1Hz ist. Das heißt die positive Flanke dauert länger als 500ms. Soweit so gut.

Mein Problem: Ich brauche statt nur einen kurzen Impulse, eine durchgängige 1 bei kleiner als 1Hz oder eine durchgängige 0 bei größer als 1Hz. Wie bekomme ich das hin?
 
Mein Problem: Ich brauche statt nur einen kurzen Impulse, eine durchgängige 1 bei kleiner als 1Hz oder eine durchgängige 0 bei größer als 1Hz. Wie bekomme ich das hin?

Hallo,
ich würde das gar nicht mit einem Timer machen sondern mit einer Zeit-Messung.
Dies ginge z.B. mit dem OB35, den du .B. af ein Intervall von 10 ms festlegst. Nun zählst du die Anzahl der OB35-Durchgänge wenn dein Eingang = 1 ist. Sind es weniger wie 50 so ist die Frequenz kleiner 1Hz - sonst größer ....

Gruß
Larry
 
Ich habe da auch noch eine Idee :
Mit dem Eingang startest du den Timer, wie schon gemacht.
Ist der Timer abgelaufen und der Eingang ist noch da, dann Merker setzen, sonst rücksetzen. Also etwa so :
Code:
U E0.0
L s5t#490ms
SE T100

U T100
U E 0.0
S M10.0
U T100
UN E 0.0
R M10.0

UN M10.0
= A4.0
Das ist allerdings nicht so super-genau wegen der beeinflussenden Zykluszeit. Da wäre der Vorschlag mit dem OB35 schon besser - aber auch aufwändiger :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Code oben ist übrigens nicht getestet, ich denke aber dennoch, das er funktioniert.
Noch schöner würde es, wenn man einen zweiten Timer in gleicher Weise auf den ausgeschalteten Eingang reagieren liesse - denn was ist, wenn der Eingang wegfällt ...?
 
@Lupo: In so einer Art und Weise habe ich mir das vorgestellt. Ich habe deinen Vorschlag getestet, aber der Ausgang wird nie geschaltet, da der Merker M10.0 nicht zurückgesetzt wird.

@Larry Laffer: Ich würde es lieber mit Zählern realisieren, es muss doch einen Weg geben.
 
Nimm eine Ausschaltverzögerung, wie ich schon beschrieben habe, und so bleibt der Timer "1", solange Du min. 1 Hz hast!

Eine Ausschaltverzögerung wird mit jedem Impuls immer wieder neu gestartet, kurz solange Deine Triggerflanke immer kürzer wie 1s ist, ist der Timer "1"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@MCerv: Mit der Ausschaltverzögerung passiert das:
Takt >1Hz gleich eine dauerhafte 1 am Ausgang
Takt <1Hz gleich ein blinken am Ausgang.

Ich brauche aber:
Takt >1Hz gleich eine dauerhafte 1 am Ausgang
Takt <1Hz gleich eine 0 am Ausgang, diese 0 dann auch dauerhaft, wenn die Frequenz unter 1Hz bleibt.

Also eine 0 oder eine 1, kein blinken. Wie mach ich das?
 
Hi Chrisch,

die Frage ist immernoch wie genau du das zeitlich haben musst und wie aktuell deine Anzeige sein muss.
Man könnte das ausprogrammieren bis zum Exitus...
Wenn es bei der Erfassung und Anzeige auf 10ms nicht drauf ankommt dann könnte in FUP eine mögliche Lösung so aussehen wie im Anhang.
Der M10.5 ist hierbei vom Taktmerkerbyte.

Gruß
Toki
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    15,2 KB · Aufrufe: 19
@Toki0604: Ich finde das ist keine saubere Lösung, da die Lampe jetzt Frequenzabhängig mal schnell oder mal langsam blinkt. Sie muss aber immer konstant blinken, sagen wir in einem Takt von 10Hz. Und genau da komme ich nicht weiter. Ich hoffe ihr erkennt jetzt mein Problem.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Beispiel über OB1_PREV_CYCLE:
Code:
      U     "Toggle"
      FP    "HM_Toggle"
      SPBN  m1
      S     "Alarm"
      L     MW    12
      L     1010
      <=I   
      R     "Alarm"
      L     0
      T     MW    12
m1:   NOP   0

      L     #OB1_PREV_CYCLE
      L     MW    12
      +I    
      T     MW    12

Gruss Daniel
 
Hi Chrisch,
ich hatte in der Variante überhaupt kein blinken drin :confused:
Der Taktmerker M10.5 sollte mir nur einen Takt simulieren.
Habe es jetzt nochmal deinen Anforderungen angepasst und wenn ich dich richtig verstanden habe, dann funktioniert das auf meinem Simulator ganz gut.

Gruß
Toki
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    65,3 KB · Aufrufe: 22
@dalbi: Ich programmiere erst seit kurzem in Step7 und das versteh ich auf Anhieb nicht. Kannst du mir erklären wie ich das anwende?
 
Code:
      U     M     10.0                  //Taktsignal bzw. Frequenz 
      FP    M     10.1                  //Flanke bilden
      SPBN  m1                          //Springe solange kein Signalwechsel 0 -> 1
      S     M     10.2                  //Setze Alarm
      L     MW    12                    //Lade aufsummierte Zykluszeit
      L     1010                        //Vergleichswert in Millisekunden
      <=I                               //falls kleiner
      R     M     10.2                  //kein Alarm Frequenz > 1 Hz
      L     0                           //Summenzähler
      T     MW    12                    //auf Null setzen
m1:   NOP   0

      L     #OB1_PREV_CYCLE             //Zykluszeit in MS aus OB1
      L     MW    12                    //addieren
      +I                                //für Vergleicher
Funktioniert auch. ;)

Gruss Daniel
 
Zurück
Oben