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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: SE Timer in bedingt aufgerufenen FC

  1. #11
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von AndiF Beitrag anzeigen
    Leider kann ich an der Grundstruktur des Programmes nicht viel verändern, da es ein Muster eines unserer Kunden ist.
    Dem Kunden besser beibringen dass sowas ein schei... Programmierstil ist und einen nur in Teufels Küche bringt.

    Bei solchen Anwendungen musst du bei jeder Zeile im FC aufpassen ob es dann wohl funktioniert wenn du ihn plötzlich nicht mehr aufrufst
    Das trifft dich nicht nur bei den Timern, sondern auch bei Flankenauswertungen und jeder anderen Routine wo der Zustand des letzten Aufrufs wichtig ist.
    Da vertut man sich sooo schnell.

    Sonst würd ich so wie hucki schon vorgeschlagen hat eventuell eine positive Flanke des Aufrufs als IN-Paramter übergeben und drinnen zumindest eine defnierte First-Scan-Funktion ausführen... aber trotzdem...

    Blockmove hat das schon ganz gut auf den Punkt gebracht...

    [EDIT]
    In deinem Beispiel ist alles direkt adressiert. Heißt das dass dieser FC nicht mehrmals verwendet wird? Nicht für mehrfache Verwendung programmiert?
    Dann kannst du warscheinlich eh ohne größeren Aufwand, irgendwie ein First-Scan Ereignis an den FC übergeben und drinnen mal eine kleine Initialisierungsroutine abfahren lassen...
    Wenn er nur einmal vorkommt wärs zumindest nicht soo schlimm...
    [/EDIT]
    Geändert von RONIN (18.11.2014 um 20:37 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  2. #12
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    eine positive Flanke des Aufrufs als IN-Paramter übergeben
    ...
    [EDIT]
    In deinem Beispiel ist alles direkt adressiert.
    ...[/EDIT]
    Deshalb hab' ich das "tolle" Beispiel auch direkt adressiert und nicht mit IN-Parameter gepostet.
    Das hat mir allerdings noch mehr widerstrebt, als der Hinweis auf einen solchen First-Scan selbst.

  3. #13
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.493
    Danke
    1.142
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    @Hucki

    Das mit dem "tollen Beispiel" war nicht persönlich gegen dich gerichtet.
    Wenn die Zeitfunktion notwendig ist und durch irgendwelche Sprünge oder bedingte Aufrufe in dieser Form halt nicht funktioniert, da muss ich sie eben ausserhalb aufrufen.
    Wenn man das dem ursprünglichen Programmierer / Kunden nicht vermitteln kann, dann soll er sich halt selber um das Problem kümmern.

    Gruß
    Dieter

  4. #14
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Hab' ich auch nicht persönlich aufgefasst.

    Und Du hast es ja noch besser ausgedrückt, als ich in meinem Statement unterm Code. Deswegen hab' ich Deine Wortwahl gern wiederholt.

  5. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Blockmove (19.11.2014)

  6. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.204
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Ich bin zwar auch kein Freund von Timern in bedingt aufgerufenen Bausteinen, doch wenn es unbedingt sein muß, dann ist das durchaus "ordentlich" machbar. Die Erkennung des Erstaufrufs macht man am einfachsten außerhalb des FC und signalisiert das dem FC über einen IN-Parameter:
    Code:
          U     #FC_Bedingung
          FP    #Flankenmerker
          =     #F_FC_Bedingung
    
          U     #FC_Bedingung
          SPBNB _001
          CALL  "FC"
           IN_xFirstCall:=#F_FC_Bedingung
    _001: NOP   0
    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn der Baustein das erste mal aufgerufen wird, dann den Timer zuerst einmal mit VKE=0 aufrufen oder die Operation "FR T1" benutzen.
    Das funktioniert z.B. so:
    Code:
          U     #IN_xFirstCall
          SPBN  m11
    
          CLR
          L     S5T#5S
          SE    T      1
    
    m11:  U     E      1.0
          L     S5T#5S
          SE    T      1
    
          U     T      1
          =     M      1.0
    ... und mit "FR T1" funktioniert es so:
    Code:
          U     #IN_xFirstCall
          R     T      1
          FR    T      1
    
          U     E      1.0
          L     S5T#5S
          SE    T      1
    
          U     T      1
          =     M      1.0
    So simpel funktioniert es ebenfalls, dauert aber 1 Aufruf länger bis der Timer abgelaufen ist, wenn E1.0 schon beim ersten Aufruf TRUE ist:
    Code:
          UN    #IN_xFirstCall
          U     E      1.0
          L     S5T#5S
          SE    T      1
    
          U     T      1
          =     M      1.0


    PS: Das Folgende funktioniert allerdings NICHT, obwohl es laut Beschreibung der Operation "FR Freigabe Timer" in der Step7-AWL-Dokumentation eigentlich funktionieren müßte:
    Code:
          CLR
          FR    T      1
          U     #IN_xFirstCall
          FR    T      1
    
          U     E      1.0
          L     S5T#5S
          SE    T      1
    
          U     T      1
          =     M      1.0
    Vermutlich muß man zwischen zwei Operationen "FR Freigabe Timer" mindestens einmal die Timer-Operation (SE) aufrufen, damit FR wie beschrieben wirkt, was aber nicht in der Dokumentation steht.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #16
    AndiF ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.11.2014
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die vielen Antworten.

    Ich lagere den Timer in einen dauerhaft aufgerufenen FC aus und starte diesen vom bedingt aufgerufenen FC.

Ähnliche Themen

  1. Festplatten Lebenszeit bedingt tauschen / vorbeugende Instandhaltung
    Von Larzerus im Forum PC- und Netzwerktechnik
    Antworten: 4
    Letzter Beitrag: 16.04.2014, 20:01
  2. eigenen FB bedingt ausführen?
    Von big_L im Forum PHOENIX CONTACT
    Antworten: 1
    Letzter Beitrag: 17.01.2014, 06:05
  3. CFC Bausten bedingt abarbeiten
    Von blackpeat im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.08.2010, 13:49
  4. Antworten: 14
    Letzter Beitrag: 25.03.2010, 20:48
  5. Bedingt einen FC anspring
    Von Anonymous im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 30.03.2005, 10:20

Lesezeichen

Berechtigungen

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