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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: S7-300 Selbst reseten

  1. #1
    Registriert seit
    25.08.2010
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich bin neu hier und habe auch gleich mal eine Frage.
    Ich muss über meine S7 ein 300Hz Signal zählen. D.h. die positiven Flankenwechsel werden mit hilfe des SFB47 gezählt und in einen DB eingetragen.
    Allerdings soll das Signal nicht endlos gezählt werden, sondern nur 5sek lang. Nach den 5sek soll der gezählte wert in den DB eingetragen werden und das zählen soll neu starten.
    Der SFB47 hat ein Tor das bei TRUE den Zählvorgang starten und bei FALSE beendet. Der Zählwert bleib erhalten bis wieder TRUE ansteht, dann beginnt er bei 0 wieder neu zu zählen.
    Einen Timer mit 5sek vor das Tor zu schalten ist ja nicht das problem. Nur wie resete ich diesen dann wieder, so das mir kein Flankenwechsel verloren geht? Also quasi innerhalb von 1-3ms.
    Ich hoffe es war verständlich und ihr könnt mir helfen.
    MfG: Meiers

    Edit: CPU-313C, SIMATIC S7 v5.4
    Geändert von Meiers (25.08.2010 um 10:46 Uhr)
    Zitieren Zitieren S7-300 Timer selbst reseten  

  2. #2
    Registriert seit
    06.08.2010
    Ort
    Köln
    Beiträge
    186
    Danke
    13
    Erhielt 30 Danke für 24 Beiträge

    Beitrag

    Einfach den Zähler weiterlaufen lassen, mit

    JOB_ID (W#16#0001) nen neuen Zählwert schreiben
    und mit
    JOB_REQ den Auftrag anstoßen (positive Flanke)

    (Wert in JOB_VAL)

    Siehe auch S7-Hilfe zu SFB47

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Ich würde den Zähler überhaupt nicht antasten,
    sondern immer aktuell mit dem letzten Absolutwert die Differenz berechnen,
    und diesen Wert als "Basis" hernehmen.

    Egal was du mit dem SFB47, es kostet alles Zeit ...

    Mfg
    Manuel
    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).

  4. #4
    Meiers ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.08.2010
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @nberger:
    Ja würde schon gehen nur ist immernoch das Problem das es ja in einem 5sek intervall passieren muss und ich somit alle 5sek den Job starten muss. Nur wie realisiere ich das?

    @MSB:
    Wäre sicherlich besser, aber irgenwann läuft auch mal ein DINT über...

  5. #5
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Mit dem Ausgang des Timers als UN an den Eingang des Timers legen.
    Wenn der Timer abgelaufen ist, resetet er sich somit selbst.
    Das Timer-Signal liegt dann aber nur einen SPS-Zyklus an, sollte
    aber für deine Zwecke dann reichen.

    Code:
    UN T1
    SE T1
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  6. #6
    Registriert seit
    07.12.2007
    Beiträge
    49
    Danke
    5
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Zitat Zitat von Meiers Beitrag anzeigen
    @MSB:
    Wäre sicherlich besser, aber irgenwann läuft auch mal ein DINT über...
    Wenn du 300Hz für 5s zählst sinds nie mehr als 1500 Signale, da reicht selbst ein Integer.

    Ich Würds so lösen:

    Code:
            U     IN_COUNT_UP
            FP    FLANKE_P
            SPBN  CNT
            l     STAT_COUNTER
            l     1
            +I
            T     STAT_COUNTER
    CNT:    UN    STAT_STORE
            L     S5T#5s
            SE    TIMER
            U     TIMER
            =     STAT_STORE
        
            U     STAT_STORE
            SPBN  LOAD
            L     STAT_COUNTER
            T     DB
    
            L     0
            T     STAT_COUNTER
    LOAD:   NOP 0
    Geändert von vecoplaner (25.08.2010 um 11:34 Uhr)
    Gruß Florian


    Nothing right in the left brain, nothing left in the right brain

  7. #7
    Meiers ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.08.2010
    Beiträge
    8
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Krumnix:
    Der Timer setzt sich jetzt zwar zurück aber die Zeit reicht nicht um den Wert in den DB zu übertragen und dann den Job auszuführen.

    @vecoplaner:
    MSB meinte ich soll den Zähler dauerhaft hochzählen lass und die differenz zum vorherigen wert als aktuell gezählt in den DB schreiben. Da das Programm aber 24h und 7 tage die Woche läuft würde ein DINT nach 82,9 Tagen überlaufen.

  8. #8
    Registriert seit
    07.12.2007
    Beiträge
    49
    Danke
    5
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Zitat Zitat von Meiers Beitrag anzeigen
    @vecoplaner:
    MSB meinte ich soll den Zähler dauerhaft hochzählen lass und die differenz zum vorherigen wert als aktuell gezählt in den DB schreiben. Da das Programm aber 24h und 7 tage die Woche läuft würde ein DINT nach 82,9 Tagen überlaufen.

    Ich glaube er hatte auch im sinn gehabt bei einem Überlauf zu reagieren zB:

    Code:
        L     IN_ZÄHLWERT
        L     STAT_ALT_ZÄHLER        
        -I
        T     DB
        
        L     IN_ZÄHLWERT
        T     STAT_ALT_ZÄHLER 
    
        U     OV
        SPBN  UEL
        L     0
        T     IN_ZÄHLWERT
    UEL:    NOP 0
    Gruß Florian


    Nothing right in the left brain, nothing left in the right brain

  9. #9
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Meiers Beitrag anzeigen
    @MSB:
    Wäre sicherlich besser, aber irgenwann läuft auch mal ein DINT über...
    Sicher richtig, aber wenn du den Fall des Überlaufs entsprechend berücksichtigst,
    letzten Endes auch vollkommen egal ...

    Du kennst ja den exakten Wert bei dem der Überlauf stattfindet ... der Rest ist nur ein Wenig "Plus und Minus" ...
    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).

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Überlaufen des DINT-Zählers macht nichts, der Zähler bleibt ja nicht stehen, sondern beginnt wieder bei 0.

    Solange der Meßzyklus kürzer als ~41 Tage (halber Zählumfang) ist, gilt:
    Wenn der Zähler endlos vorwärts zählt, dann ist die Differenz Zählerstand_jetzt - Zählerstand_vorher immer >= 0
    (also nie negativ), auch bei Überlauf, weil die DINT-Differenzberechnung -D dann ebenfalls überläuft.
    Man braucht garnichts beachten, das Ergebnis der Differenzberechnung ist immer richtig.

    Gruß
    Harald

Ähnliche Themen

  1. Fehler Pnoz mutli reseten
    Von mitchih im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 07.03.2011, 19:52
  2. OP77A Aufgehangen!wie reseten?
    Von nognogradio im Forum HMI
    Antworten: 9
    Letzter Beitrag: 23.02.2011, 19:36
  3. Der Reihe nach auslesen und dann reseten ?
    Von Chris30 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 15.07.2010, 20:48
  4. Antworten: 9
    Letzter Beitrag: 11.03.2009, 11:47
  5. CPU Reseten
    Von Krma1985 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 13.02.2009, 08:46

Lesezeichen

Berechtigungen

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