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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Simatic S7 Timer in (Hardware-) Interrupt

  1. #1
    Registriert seit
    17.02.2014
    Beiträge
    6
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich möchte in einem Hardware Interrupt einen Timer laufen lassen.

    Laut Zyklusablauf einer SPS würde man ja bei Flankendetektion ins

    z.B. OB40 wechseln
    dort alles abarbeiten
    zurück ins OB1

    Ich konnte leider nichts finden im Internet, aber nach meinen ganzen Versuchen, vermute ich, dass wenn man einen IEC-Timer (TON) nimmt, dieser
    bei jedem neuen Zyklus aktualisiert wird oder hardwaretechnisch parallel läuft. Da aber der OB40 nach einem Zyklus wieder deaktiviert ist, ist der Timer im OB40
    unsinnig

    Jetzt habe ich verschiedene Sachen ausprobiert. Unter anderem habe ich die Idee verfolgt, ein Bit im OB40 zu setzen, welcher im OB1 dann abgefragt wird und ein entsprechenden FB startet.
    Hat aber leider auch nicht funktioniert, da es da an der Rücksetzbedingung des Bits Schwierigkeiten gab.

    Habe ich etwas übersehen? Gibt es noch eine Einstellung, die ich machen muss? Oder vllt. ist dies ein allgemeines Problem mit einem entsprechenden Lösungspattern?

    Mein Ziel ist es per Flanke (Flanke => vermutlich Fehler) und einer entsprechenden Entprellzeit (oben genannter Timer) verschiedene Aktionen (Einschaltsperre, Fehlermeldung,...) durchzuführen.

    Einfachste Idee wäre alle min. 40 Eingänge bei jedem Zyklus abzufragen, also ohne Flankendetektion, sondern einfach if-else. Ist derzeit auch so realisiert und funktioniert auch.

    "Never touch a running system" ist zwar schön, ich würde aber trotzdem den Gedanken noch etwas weiterverfolgen, dass über ein Interrupt zu lösen.

    Beste Grüße,
    DrTurkelten
    Zitieren Zitieren Simatic S7 Timer in (Hardware-) Interrupt  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Was soll an den Rücksetzbedingungen nicht funktionieren?
    Du kannst natürlich im OB40 einen Merker setzen. Mit diesem Merker startest du im Normalzyklus eine Zeit, ist diese Zeit abgelaufen, dann führst du eine Aktion aus (z.Bsp. Fehlermerker setzen) und setzt den Merker, der im OB40 gesetzt wurde zurück.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    @TE:
    ich bin mir nicht sicher, ob der Weg, den du da verfolgen willst so überhaupt sinnvoll ist.
    Vielleicht schreibst du mal etwas mehr zu dem, was du machen möchtest. Es gibt meißtens eine Lösung - Vorschläge kann man aber besser machen wenn man die Problematik kennt ...

    Gruß
    Larry

  4. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    ducati (16.06.2014)

  5. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von DrTurkelten Beitrag anzeigen
    Mein Ziel ist es per Flanke (Flanke => vermutlich Fehler) und einer entsprechenden Entprellzeit (oben genannter Timer) verschiedene Aktionen (Einschaltsperre, Fehlermeldung,...) durchzuführen.

    Einfachste Idee wäre alle min. 40 Eingänge bei jedem Zyklus abzufragen, also ohne Flankendetektion, sondern einfach if-else. Ist derzeit auch so realisiert und funktioniert auch.
    Ich weiß jetzt auch nicht so wirklich, was Dir der Hardwareinterrupt bringen soll, wenn die Abarbeitung der ausgelösten Befehle zum Einen timerverzögert und zum Anderen dann eh' vom OB1-Programm durchgeführt wird.
    Das Einzige, was Du Dir da sparst, ist die Flankendetektion und die macht den Kohl nun wirklich nicht fett. Schon gar nicht, wenn man mehrere Bits in einem Abwasch kontrolliert.

  6. #5
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .

    @TE

    Prozessalarme werden im allgemeinen eingesetzt, um schneller auf ein Ereignis zu reagieren als es im normalen Programmzyklus
    möglich ist. Auch kann es sein, dass das Ereignis nicht lange genug ansteht, um es im laufenden Zyklus zu erkennen und darauf
    zu reagieren.

    Trotzdem willst du das Interupt-Signal möglichst schnell erkennen, aber dann doch wieder verzögern ?
    Ich denke, dein Ansatz ist falsch.

    Darüber hinaus benötigst du alarmfähige Baugruppen in der Hardware, wirst also an deiner Anlage etwas mehr als
    nur ein paar Code-Zeilen ändern müssen.
    kind regards
    SoftMachine

  7. Folgender Benutzer sagt Danke zu SoftMachine für den nützlichen Beitrag:

    ducati (16.06.2014)

  8. #6
    DrTurkelten ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.02.2014
    Beiträge
    6
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Schönen Guten Morgen,

    erstmal danke für die Antworten. Ihr habt natürlich recht, dass ich trotz Prozessalarm verzögert auf die Flanke
    reagieren würde. Ich möchte mir eigentlich nur ersparen, dass ich in jedem Zyklus 40 und mehr Fehler abfrage,
    bzw. noch viel mehr Bedingungen habe zur Fehlerbehandlung. Deshalb kam mir die Idee, die Fehlerbehandlung nur
    dann zu starten, wenn auch eine Flanke und somit ein möglicher Fehler anliegt.

    Vllt spare ich nur 2ms aber ich möchte es trotzdem gerne ausprobieren.

    Schönen Gruß,
    DrTurkelten

  9. #7
    Registriert seit
    03.12.2008
    Beiträge
    654
    Danke
    160
    Erhielt 185 Danke für 113 Beiträge

    Standard

    Hallo
    Ich weiß jetzt nicht welche CPU Du verwendest
    aber die erhofften 2ms erscheinen mir bei 40 Meldungen fraglich.

    Wenn Du bei einer aktuellen 315er 400 Meldungen aus dem zyklischen Programm rausnimmst,
    sparst Du vielleicht 1ms

    (Ist aber nur eine Schätzung von mir, nicht getestet)

  10. #8
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von DrTurkelten Beitrag anzeigen
    Vllt spare ich nur 2ms aber ich möchte es trotzdem gerne ausprobieren.
    Es ist fraglich dass du mit dem Wegfall dieser 40 Meldungen wirklich 2ms gewinnst. Da müsstest du pro Abfrage schon sehr komplexe Sachen machen, sonst reden wir hier von Microsekunden.

    Außerdem schlagen diese Ersparnisse unter Umständen in den blödesten Momenten zu. Und wenn du viele solche Zeitsparenden Interrupte hast summieren die sich vielleicht genau hintereinander und werfen dich in die Zykluszeitüberschreitung und STOP.

    Eigentlich also die gleiche Gefahr die man auch hat wenn man komplette Programmteile im Normalfall überspringt und nur bei Ereignissen abarbeitet. Kann zu schwer diagnostizierenden Stopübergängen führen.

    mfG René

  11. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ich nehme an, die 40 Meldungen sind hintereinander angeordnet?
    also 5x8bit? 48 Meldungen ist besser! 3x16bit ...

    Zeiten für 315

    Code:
    L    DB1.DBD 0   //0,12µs
    L    DB1.DBD 4   //0,12µs
    OD               //0,13µs
    L    DB1.DBD 8   //0,12µs
    OD               //0,13µs
    L    L#0         //0,09µs
    <>D              //0,18µs
    =   ALARM        //0,08µs
                     //-------
                     //0,97µs
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  12. #10
    Registriert seit
    09.08.2006
    Beiträge
    3.626
    Danke
    911
    Erhielt 656 Danke für 542 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von DrTurkelten Beitrag anzeigen
    aber ich möchte es trotzdem gerne ausprobieren.
    Ja naja, mal abundzu neue Dinge auszuprobieren ist natürlich nicht verkehrt. Aber wie Dir hier von mehreren erklärt wurde, macht das in Deinem Fall wenig Sinn. Ich denke, deshalb hast Du uns ja gefragt. Also nehm auch die Ratschläge an

    Und denke auch an die Instandhalter bzw. Deine Nachfolger. Von denen wird erstmal niemand in nem Prozessalarm nach der Fehlerauswertung suchen.

    Gruß.

Ähnliche Themen

  1. TIA Hardware interrupt startet Taktmerker nicht
    Von kiar im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.12.2013, 21:37
  2. SIMATIC Hardware konfiguarator
    Von JRe im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 21.01.2011, 07:11
  3. Hab Simatic S5 Hardware zuverkaufen
    Von Rudi91 im Forum Suche - Biete
    Antworten: 3
    Letzter Beitrag: 15.06.2010, 17:45
  4. Simatic S7 Hardware E-Stand?!
    Von citamis777 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.11.2008, 23:09
  5. SImatic mit Vipa Hardware
    Von Gerri im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 14.10.2008, 20:54

Lesezeichen

Berechtigungen

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