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

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

Thema: Endlage zylinder abfrage! Kann das funktionieren? Selbst geschrieben?!

  1. #1
    Registriert seit
    08.07.2011
    Beiträge
    55
    Danke
    38
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    SERVUS, wie schon Mal erwähnt, benötige ich ein paar Infos zur Meisterschule....

    ENDLAGEN Überwachung eines Zylinders in einem FB geschrieben mit Taktmerker und Variablen, um es so allgemein zu halten wie möglich.

    Hab mich durch die AWL programmiersprache gekämpft und etwas geschrieben.

    WEIS ABER NET OB DES SO FUNKTIONIERT. BITTE MAL DRÜBER SCHAUEN UND VORSCHLÄGE BRINGEN!!!



    [PHP] UN #ENDLAGE_ZYLINDER // IN_variable
    U #GO // ansteuerung des ventils (start der abfrage)
    SPB m001
    SPBN m002
    m001: U #Taktmerker //taktmerker von cpu
    FP #FP //Flanke positiv
    L 1
    +R
    T #Hochzaehlen //temp.variable in REAL
    U #ENDLAGE_ZYLINDER //endlage des zylinders
    UN #STORUNG //störung
    SPB m003
    SPBN m004
    m003: L 0
    T #Hochzaehlen //temp.vaiable in REAL
    L #Hochzaehlen //vergleicht die hochzähl variable mit der vorgegeben überwachunszeit
    L #Ueberwachungszeit
    >=R
    = #Stoerung_ENDLAGE // störung_endlage als OUT
    m002: NOP 0
    m004: NOP 0

    [/PHP]
    Geändert von Benedikt (31.01.2012 um 21:07 Uhr)
    Zitieren Zitieren Endlage zylinder abfrage! Kann das funktionieren? Selbst geschrieben?!  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Das sieht leider noch ziemlich "roh" aus...

    1. Was soll das SBPN m002? Wohin soll denn nun gesprungen werden?
    2. Die Flankenauswertung sollte nicht übersprungen werden.
    3. Warum überhaupt die ganzen Sprünge? Es muss "NUR" das Hochzählen Übersprungen werden. Alles andere kannst Du ohne Sprünge sauber ausprogrammieren
    4. REAL für den Zähler ist nicht die erste Wahl. Ein INT sollte reichen.
    5. Der Zähler ist hoffentlich keine TEMP-Variable. Das geht schief...

    Versuche mal eine Version mit weniger Sprüngen.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  4. #3
    Registriert seit
    28.08.2007
    Beiträge
    140
    Danke
    17
    Erhielt 13 Danke für 11 Beiträge

    Standard

    Hi, mal an deinem Beispiel erklärt wieso das mal gar nicht funktionieren kann, wei du dir das vorstellst...


    Code:
          UN    #ENDLAGE_ZYLINDER           // IN_variable
          U     #GO                         // ansteuerung des ventils (start der abfrage)
          SPB   m001                                       // SPB macht das VKE immer auf true, somit wird ab m001 eh immer alles ausgeführt, egal was deine signale für einen Zustand haben
          SPBN  m002
    m001: U     #Taktmerker                 //taktmerker von cpu
          FP    #FP                         //Flanke positiv
          L     1                                                  // 1 zum akku addiert? Du solltest schon den zähler vorher in den akku geladen haben, sonst addierst du 1 zu zufallszahl oder halt etwas anderes...
           +R                                                     // 1 als integer +R geht auch nicht wirklich gut +I und Zähler als int wäre da besser geeignet. wenn du unbedingt real haben willst solltest du L 1.0 laden nich einfach 1
          T     #Hochzaehlen                //temp.variable in REAL
          U     #ENDLAGE_ZYLINDER           //endlage des zylinders
          UN    #STORUNG                    //störung
          SPB   m003  // hier wie oben, entweder springst du zu m003 oder er läuft durch zu m003 da, ja vke =1 und somit kein spbn (du könntest absolut springen "spa" das hätte deinen gewünschten effekt)
          SPBN  m004
    m003: L     0
          T     #Hochzaehlen                //temp.vaiable in REAL
          L     #Hochzaehlen                //vergleicht die hochzähl variable mit der vorgegeben überwachunszeit
          L     #Ueberwachungszeit
          >=R   
          =     #Stoerung_ENDLAGE           // störung_endlage als OUT                // eine Zuweisung zu überspringen ist eh sehr unelegant, benutze lieber setz und rücksetz befehle..
    m002: NOP   0
    m004: NOP   0                                                                // von diesen Sprungmarken ist bestimmt min. eine überflüssig :P
    ich behaupte mal, bis auf ein paar sprungbefehle wird hier immer jede Zeile code ausgeführt.

    was du da programmieren willst geht auch ganz gut in FUP.:

    NW1: un ENDLAGE u ANSTEUERUNG u SEKUNDENIMPULS -> ADD_I (damit den Zähler hochzählen)
    NW2: CMP >=I auf dem Zähler für Störmeldung
    NW3: MOVE 0 auf den zähler, wenn der Zylinder nicht angesteuert wird zum rücksetzen
    fertig. Da wird sich jeder Instandhalter drüber freuen.

    .
    Geändert von EyeQ (31.01.2012 um 22:32 Uhr)

  5. Folgende 2 Benutzer sagen Danke zu EyeQ für den nützlichen Beitrag:

    Benedikt (01.02.2012),winnman (01.02.2012)

  6. #4
    Registriert seit
    27.11.2011
    Beiträge
    42
    Danke
    0
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Hallo,

    Dein hochzählen wie Du es jetzt hast kann so nicht funktionieren. Da Du ja erst eine 0 in Hochzaehlen schreibst und dann Hochzaehlen mit Uberwachungszeit vergleichst.
    Wenn Du wie aus deinem Kommentar (temp. variable in Real) hervorgeht eine temporäre Variable benutzt ist dann sowieso bei jedem Zyklus wieder 0 wie Tigerente
    auch schon angemerkt hat.

    Code:
         
          UN    #ENDLAGE_ZYLINDER
          U     #GO
          U     #Taktmerker
          FP    #FP
          SPBN  M001
          L     1
          L     #Hochzaehlen
          +I    
          T     #Hochzaehlen
    M001: L     #Hochzaehlen
          L     #Ueberwachungszeit
          >I    
          S     #Stoerung_ENDLAGE
    
          U     #ENDLAGE_ZYLINDER
          UN    #GO
          SPBN  M002
          L     0
          T     #Hochzaehlen
    M002: U     #FehlerReset
          R     #Stoerung_ENDLAGE
    Habe mir mal erlaubt deinen Code etwas abzuändern.
    Das soll jetzt nicht die optimale Lösung sein, da kann man noch einiges machen.

    Gruß DiX

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

    Benedikt (01.02.2012)

  8. #5
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Der Zähler sollte immer mit 0 initialisiert werden, wenn die Ansteuerung weggeht. Sonst kriegt man den Fehler nicht weg, wenn die Endlage nicht kommt.
    Das könnte gewollt sein, bringt aber Schwierigkeiten wenn der Zylinder doch nicht mehr fahren soll. Ich empfehle die Laufzeitkontrolle erneut zu starten, wenn die Bewegung abgebrochen wurde.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  9. Folgender Benutzer sagt Danke zu Tigerente1974 für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  10. #6
    Registriert seit
    27.11.2011
    Beiträge
    42
    Danke
    0
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Ich finde es sinnvoller den Zähler zu initialisieren, wenn die Ansteuerung kommt.
    Dann kann man auch eventuelle Programm oder Ablauffehler finden wenn die Überwachung weiter läuft.
    Ansonsten kommt man irgendwann an die Anlage alles steht still und keiner weiß erstmal warum.
    Die Störung Endlage kommt ja nicht weil der Zähler gestoppt wurde nachdem die Ansteuerung weg war.

    Aber bei Diagnosethemen hat ja jeder seine eigene Philosophie und Vorstellungen.

    Gruß DiX

  11. Folgender Benutzer sagt Danke zu DiX für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  12. #7
    Registriert seit
    15.03.2011
    Beiträge
    47
    Danke
    13
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Hallo Benedikt,
    ohne auf den code einzugehen, möchte noch etwas zu der Zylinderabfrage beitragen. Der Zylinder wird normalerweise in beiden Endlagen abgefragt. Als nächstes muß man beachten wie der Zylinder
    angesteuert wird, d. 5/2 oder 5/3 Ventile. Gehen wir mal von 5/2 aus :
    Grundstellung : Ini GS an, Ventil aus
    Arbeitsstellung : Ini AS an, Ventil an
    Nun gibt es aber dazwischen Bedingungen, da der Zylinder bei der Bewegung den GS verlässt und nach Laufzeit den As erreicht.
    Diese Zeit mußt Du mit einem Timer belegen in Abhängigkeit Laufzeit Zylinder.
    Dann gibt es noch die Möglichkeit, das
    1.) ein Endschalter defekt ist mit immer aus
    2.) ein Endschalter defekt ist mit immer ein
    3.) Das Ventil klemmt oder jemand die Drosselrückschlagventile total zugedreht hat.

    Eine vernünftige Abfrage Aktor / Sensor fängt alle diese Bedingungen ein.

    Das heisst Du mußt programmieren ( sinngemäß AWL in Step7 habe ich noch nicht gemacht):

    U GS ;beide Inis an
    U AS
    O
    UN GS ; beide Inis aus > Laufzeit !!
    UN AS
    O
    U GS ; Ventil angesteuert, aber GS nicht verlassen
    U Ventil
    O
    U AS ; Ventil abgefallen, aber nicht AS verlassen
    UN Ventil
    ST Störung

    Timer mit Störung anlaufen lassen, nach Ablauf Timer Störung ausgeben

    So machen wir das seit über 20 Jahren und wissen ob es ein Problem mit Aktor / Sensor gibt

    Gruß olmuk

  13. Folgender Benutzer sagt Danke zu olmuk für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  14. #8
    Registriert seit
    27.11.2011
    Beiträge
    42
    Danke
    0
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Hallo nochmal,

    für meine Anwendungen habe ich mir einen Baustein geschrieben, der für alle diese Fälle
    eine separate Meldung bringt.
    Also
    Paarüberwachung ( beide Inis an),
    Endlage nicht erreicht ( jeweils für vor und rück ),
    Endlage nicht verlassen ( jeweils für vor und rück ),
    Endlage ohne Ansteuerung verlassen ( auch für vor und rück),
    dazu kommt noch je eine Freigabe Meldung für die Handbedienung ( also wenn man einen Zylinder fahren will
    und man hat noch irgendwelche Verriegelungen.

    Das ganze habe ich für Gruppen von bis zu vier Zylindern realisiert. Also alle Meldungen mal 4.

    Ob so eine detailierte Diagnose dann für jeden anwendungsfall Sinvoll oder Notwendig ist
    liegt dann bei jedem selbst.
    Aber eigentlich ging es hier ja glaube ich um eine ganz einfache Anwendung.

    Gruß DiX

  15. Folgender Benutzer sagt Danke zu DiX für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  16. #9
    Registriert seit
    15.03.2011
    Beiträge
    47
    Danke
    13
    Erhielt 5 Danke für 4 Beiträge

    Standard

    Hallo DiX,
    ist das nicht zu kompliziert ?
    Endlage nicht verlassen = Schrittkette ?
    Endlage ohne Ansteuerung verlassen = Schrittkette ?
    Für Handbetrieb gelten doch die gleichen Bedingungen für Aktor / Sensor wie in Auto ?

    Unsere Erfahrung ist, das ein "Sparen" an Zylinderenschaltern und nur eine Stellung abfragen bei weltweit verstreuten Vorrichtungen
    nur zu unnötigen Ärger und ungeplantem Service führt. Etwas teurer in der Hardware und die Bausteine hat man sowieso.

    Gruß olmuk

  17. Folgender Benutzer sagt Danke zu olmuk für den nützlichen Beitrag:

    Benedikt (01.02.2012)

  18. #10
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von olmuk Beitrag anzeigen
    Hallo DiX,
    ist das nicht zu kompliziert ?
    Endlage nicht verlassen = Schrittkette ?
    Endlage ohne Ansteuerung verlassen = Schrittkette ?
    Für Handbetrieb gelten doch die gleichen Bedingungen für Aktor / Sensor wie in Auto ?

    Wer schreibt denn was von Schrittkette?

    kompliziert? Deine Ausführung will doch das gleiche erreichen, oder nicht?

    Im Handbetrieb : zum Einstellen der Zylinder. Zur Zeit-Erfassung der Bewegung. Zum Testen der Endlagen-ini's...

  19. Folgender Benutzer sagt Danke zu Verpolt für den nützlichen Beitrag:

    Benedikt (01.02.2012)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 12.12.2008, 19:00
  2. Max. Positive Endlage überschreiten
    Von Spiff im Forum Antriebstechnik
    Antworten: 6
    Letzter Beitrag: 30.05.2008, 21:46
  3. Kann man das so lösen?
    Von plc_tippser im Forum Stammtisch
    Antworten: 7
    Letzter Beitrag: 01.08.2006, 09:46
  4. wie soll das funktionieren?
    Von Praktikant ohne Ahnung! im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 28.03.2006, 09:31
  5. Kann das eine LOGO! ???
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.06.2005, 14:43

Lesezeichen

Berechtigungen

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