Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Zählwert bei CTU (IEC Counter) zurück setzen in einem HW-Interrupt Baustein

  1. #1
    Registriert seit
    06.05.2011
    Beiträge
    68
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich habe ne Steuerung im Einsatz, die keine Zählerbaugruppe besitzt. Jetzt habe ich mir wie folgt beholfen:
    HW-Interrupt OB erstellt
    CTU (IEC-Counter) eingefügt
    den Digitaleingang in der Gerätesicht auf eine Verzögerung von 0,05ms Sekunden gesetzt und bei steigender wie auch fallender Flanke den HW-Interrupt OB angewählt.

    Die Impulse die ich bekomme werden erfasst. Funktioniert so weit also.
    Jetzt frage ich mich nur, wie ich den Zählwert des IEC-Counters wieder auf 0 setzen kann. Wenn kein Impuls kommt wird der HW-Interrupt ja nicht ausgeführt. Aber genau wenn eine gewisse Anzahl an Impulsen durch ist beende ich Befüllprozess.
    Allerdings muss bevor ein weiterer Befüllprozess gestartet wird genau dieser Zählwert wieder auf "0" zurück gesetzt werden.

    Hat da jemand eine Idee?

    Grüße

    AndyD
    Zitieren Zitieren Zählwert bei CTU (IEC Counter) zurück setzen in einem HW-Interrupt Baustein  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Hmmm...

    Variante 1:
    Da du den CTU ja in nem Interrupt-OB verwendest existiert die Counter-Instanz normalerweise als separater DB.
    Du könntest jetzt an anderer Stelle im Programm (gezielt einmalig über Enable-Eingang) einen weiteren CTU aufrufen der am Reset-Eingang 1 hat und den selben Instanz-DB verwendet.

    Variante 2:
    Du rufst deinen Interrupt nur bei Positiver-Flanke auf und addierst dir einfach einen DINT auf. Den DINT kannst du dann überall und zu jeder Zeit auf Null setzen.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    AndyD ist offline Benutzer
    Themenstarter
    Registriert seit
    06.05.2011
    Beiträge
    68
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hi.
    Danke für die schnelle Antwort.
    Werde Variante 1 mal ausprobieren.
    Variante 2 hab ich so ähnlich versucht. Ich lass in nem globalen DB einen INT Wert hochlaufen. Den hab ich dann einmalig zwischen den Prozessen mit 0 beschrieben. Als dann der zweite Prozess gestartet ist, hat er aber dennoch nicht bei 0 angefangen sonern beim Endwert des ersten Prozesses obwohl vor dem zweiten Prozess laut Beobachtungstabelle und Online Ansicht des DB 0 zu sehen war.
    Wie gesagt, ich probier morgen mal Variante 1.

    Grüße

    AndyD

  4. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.752
    Danke
    323
    Erhielt 1.526 Danke für 1.286 Beiträge

    Standard

    Variante 2 so ähnlich heißt was?

    Im Interrupt steht:
    L DB10.DBW0
    L 1
    +I
    T DB10.DBW0

    Wo sollte da jetzt also ein "alter" Wert herkommen?
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  5. #5
    AndyD ist offline Benutzer
    Themenstarter
    Registriert seit
    06.05.2011
    Beiträge
    68
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hi.
    Da hab ich mich unglücklich ausgedrückt.
    Ich habe einen CTU Timer genommen und auf den CV den Eingang 0.0 geschrieben und als Out db1.dbw0 verwendet als INT.
    Den db1.dbw0 hab ich im zyklischen programm mit einem Ereignis auf null zurück gesetzt. Der Zähler nimmt aber scheinbar dann einen Wert aus seinem Instanz DB und reicht diesen wieder auf den Wert des Global DB.
    Der Zähler hat einen R Eingang worüber man den Wert im Instanz DB zurück setzt. Allerdings kann ich den im HW-Interrupt nicht benutzen.

    Aber anstatt dem Zähler einfach in AWL hoch zählen wäre auch ein Versuch wert.
    Manchmal sieht man echt den Wald vor lauter Bäumen nicht.
    Thx für den Denkanstoß.

    Grüße

    AndyD

  6. #6
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von AndyD Beitrag anzeigen
    Ich habe einen CTU Timer genommen und auf den CV den Eingang 0.0 geschrieben und als Out db1.dbw0 verwendet als INT.
    Den db1.dbw0 hab ich im zyklischen programm mit einem Ereignis auf null zurück gesetzt. Der Zähler nimmt aber scheinbar dann einen Wert aus seinem Instanz DB und reicht diesen wieder auf den Wert des Global DB.
    Genau so ist es.
    Zitat Zitat von AndyD Beitrag anzeigen
    Der Zähler hat einen R Eingang worüber man den Wert im Instanz DB zurück setzt. Allerdings kann ich den im HW-Interrupt nicht benutzen.
    Deswegen mein Vorschlag mit dem Aufruf der selben Instanz an einem anderen Ort.
    Damit kannst du den R-Eingang auch anderswo verwenden.
    Man kann den Zählwert vermutlich auch in der CTU-Instanz löschen, dafür kenn ich das Ding, jetzt ad hoc, nicht genau genug.
    Zitat Zitat von AndyD Beitrag anzeigen
    Aber anstatt dem Zähler einfach in AWL hoch zählen wäre auch ein Versuch wert.
    Manchmal sieht man echt den Wald vor lauter Bäumen nicht.
    Jep, weiß bis heute noch nicht wofür man den CTU braucht.
    Geändert von RONIN (25.03.2015 um 20:01 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 26.01.2014, 08:47
  2. IEC-CTU Zählerstand zurücksetzen
    Von Miffi im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.02.2013, 18:12
  3. Wie kann man eine Ablaufsteuerung bei Fehler zurück setzen?
    Von Eisbaer_vw im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 16.12.2011, 10:54
  4. Zähler CTU-Counter
    Von Spoon im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 06.02.2010, 16:50
  5. Antworten: 6
    Letzter Beitrag: 15.12.2008, 13:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •