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

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

Thema: Unerklärliches Problem bei einer Steuerung (S7-1200 und Basic Panel)

  1. #1
    Registriert seit
    01.04.2013
    Beiträge
    63
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein unerklärliches Problem bei einer Hydraulischen Maschine. Die Maschine besitzt eine S7-1200 und ein Basic Panel.
    Bei der Steuerung wurde ein Ablauf (mehrere Hydraulische Zylinder) implementiert.

    Komischerweise funktioniert dieser Ablauf etwa 100 - 1000 mal perfekt. Aber dann gibt es einen Ablauf bei dem die Maschine ein Problem hat. Die Maschine bricht vermutlich einen Schritt nicht ab. Die Hydraulischen Bewegungen werden mit einem Neigungssensor überwacht und die Maschine sollte bei z.b. 75 Grad stehen bleiben. Sie fährt aber bis 105 Grad und verursacht dadurch einen Crash.
    Ich habe den Code bereits einige male angesehen und finde keine Ungereimtheiten. Reproduzieren lässt sich der Fehler leider nicht.

    An was kann es liegen? Hat vielleicht jemand eine Idee? Wie kann ich das Problem beseitigen.
    Meine Ideen sind:
    1) Der Sensor sendet plötzlich fehlerhafte Werte. Ich konnte mich schon einmal nach einem Fehler mit dem TIA Portal auf die Maschine verbinden, da waren die Werte alle wieder Perfekt (dauerte aber zirka 1 Stunde)
    2) Die Steuerung S7-1200 startet plötzlich neu und die Ausgänge werden vielleicht einfach gleich gelassen
    3) Das Display stört irgendwie hinein. Mir ist schon einmal aufgefallen, dass während eines Ablaufes plötzlich eine Bitmeldung angezeigt wurde, obwohl das Bit sicher nicht gesetzt wurde.

    Ich bin für alle Ideen offen.

    Vielen Dank
    Ludi
    Zitieren Zitieren Unerklärliches Problem bei einer Steuerung (S7-1200 und Basic Panel)  

  2. #2
    Registriert seit
    15.07.2008
    Ort
    Ørting Danmark
    Beiträge
    122
    Danke
    13
    Erhielt 23 Danke für 17 Beiträge

    Standard

    Hej Ludi,
    also meine Herangehensweise wäre die entsprechenden werte mit zu loggen, sei es in der SPS oder in einem externen Analyzer. damit könnte man gut drauf kommen was zu deinem Problem führt.
    auch ob das Panel irgendwie dort stört könntest du über eine loggen von werten gut mitbekommen.
    Ob die Steuerung neu gestartet wurde zu einem Zeitpunkt kannst du gut über die Diagnose herausbekommen.

    Gruß der Pinke Panther

  3. #3
    ludi81 ist offline Benutzer
    Themenstarter
    Registriert seit
    01.04.2013
    Beiträge
    63
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Das Problem ist leider nur, dass ich noch nie dabei war, als das Problem aufgetreten ist.
    Wie kann ich in der SPS die Daten am besten loggen? Die S7-1200 ist ja eine kleine Steuerung. Kann ich einfach auf die SD Karte etwas hinaufschreiben?

    Danke Ludi

  4. #4
    Registriert seit
    15.07.2008
    Ort
    Ørting Danmark
    Beiträge
    122
    Danke
    13
    Erhielt 23 Danke für 17 Beiträge

    Standard

    entweder du schreibst dir einen Baustein der in einem DB die werte in Zeitlichen Abständen schreibt oder einen der bei einem bestimmten Trigger Ereignis (Neigung >75 Grad) entsprechend andere werte aufzeichnet in einem DB. oder du nutzt. SPS Analyzer die dir die werte auf einen PC mitloggen. hier brauchst du nicht dabei sein nur einen PC mit der Software an der Steuerung lassen, der alles mitloggen kann. du musst da halt nur die werte auswählen die du mitloggen willst.

  5. #5
    Registriert seit
    15.07.2008
    Ort
    Ørting Danmark
    Beiträge
    122
    Danke
    13
    Erhielt 23 Danke für 17 Beiträge

    Standard

    Stehen den irgendwelche Neustart Infos im Diagnosespeicher der SPS?
    Oder irgendwelche Anderen Infos (Busausfall oder Bereichslängenfehler oder ähnliches) die dir vielleicht weiterhelfen könnten?

  6. #6
    ludi81 ist offline Benutzer
    Themenstarter
    Registriert seit
    01.04.2013
    Beiträge
    63
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Maschine war gerade auf einer Messe und da ist der Fehler einmal aufgetreten. Ich muss noch warten bis die Maschine wieder da ist. Dann kann ich im Diagnosespeicher nachsehen.

    was haltet ihr von https://support.industry.siemens.com...dti=0&lc=de-WW

    Welche SPS Analyzer würdet ihr empfehlen?

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.314
    Danke
    932
    Erhielt 3.329 Danke für 2.688 Beiträge

    Standard

    Könnte es sein, daß Du nicht auf >= 75 abfragst sondern auf = 75? Oder ist Dein Positions-Vergleichsfenster zu klein und wird manchmal zu schnell durchfahren (schneller als Analog-Wandlerzeit oder (schwankende) Zykluszeit)?
    Wie ist der Sensor an die S7-1200 angeschlossen?
    Ist Dein Grad-Wert REAL oder INT?
    Wie sieht der betreffende Programmabschnitt aus, der manchmal nicht anhält?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    ludi81 ist offline Benutzer
    Themenstarter
    Registriert seit
    01.04.2013
    Beiträge
    63
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    nein im code soll er sich nur so lange bewegen bis der winkeln kleiner als 75 grad ist. also sollte er sicher stehen bleiben. Also nach einem erfolgreichen Ablauf ist die Zykluszeit zwischen 1 und 2 ms.
    Mein Winkel ist in REAL.


    Hier der Code. Sie wie es aussieht Liefert die Funktion "Bewegung Tisch" nicht true zurueck, oder wir haben ein anderes Problem mit der Steuerung.
    Code:
     2: // Tisch 1 auf 75 Grad
            IF "Bewegung Tisch"("Tisch Nummer" := 1, von := 0, bis := "Systemvariabeln".W75, ueberpruefung := "UEBERPRUEFUNG_GROESSER_GLEICH", "Schnelle Geschwindigkeit" := TRUE) THEN
                #Schrittnummer := #Schrittnummer + 1;
            END_IF;
    Hier die Funktion
    Code:
    
    
    //Der default Rueckgabewert ist false
    #"Bewegung Tisch" := FALSE;
    
    
    //Eingabewerte ueberpruefen
    IF #"Tisch Nummer" <> 1 AND #"Tisch Nummer" <> 2 OR #ueberpruefung <> 1 AND #ueberpruefung <> 2 AND #ueberpruefung <> 3 THEN
        "HMI-Interrface".Meldetrigger.%X11 := TRUE;
        RETURN;
    END_IF;
    
    
    
    
    //Tisch 1
    IF #"Tisch Nummer" = 1 THEN
        //wir sollten ueberall eine hysterese einbauen
        IF #ueberpruefung = "UEBERPRUEFUNG_GLEICH" THEN
            //kleine Hysterese einbauen
            ...
        ELSIF #ueberpruefung = "UEBERPRUEFUNG_KLEINER_GLEICH" THEN
            ...
         ELSIF #ueberpruefung = "UEBERPRUEFUNG_GROESSER_GLEICH" THEN
            //wir sind zu weit weg
            IF "HMI-Interrface"."NeigungssensorTisch1 in Grad" < #bis - "Systemvariabeln".WINKELGENAUIGKEIT THEN
                "VentileDB".VentilTisch1AufAb := "DIR_AUF_VOR_EIN_CW";
            ELSIF "HMI-Interrface"."NeigungssensorTisch1 in Grad" >= #bis THEN
                "VentileDB".VentilTisch1AufAb := "DIR_NULL";
            END_IF;
            
        END_IF;
        
       
        
        //wenn wir noch im guten bereich sind (ventil nicht offen ist), geben wir TRUE zurueck
        IF "VentileDB".VentilTisch1AufAb = "DIR_NULL" THEN
            #"Bewegung Tisch" := TRUE;
        ELSE
            //Geschwindigkeit setzen wenn noetig
            IF #"Schnelle Geschwindigkeit" THEN
                IF "VentileDB".VentilTisch1AufAb = "DIR_AUF_VOR_EIN_CW" AND "HMI-Interrface"."NeigungssensorTisch1 in Grad" < #bis - "Systemvariabeln".WINKEL_ABSTAND_GESCHWINDIGKEIT_TISCH OR
                    "VentileDB".VentilTisch1AufAb = "DIR_AB_ZURUECK_AUS_CCW" AND"HMI-Interrface"."NeigungssensorTisch1 in Grad" > #bis + "Systemvariabeln".WINKEL_ABSTAND_GESCHWINDIGKEIT_TISCH THEN
                    
                    "VentileDB".geschwindigkeitTisch1 := TRUE;
                ELSE
                    "VentileDB".geschwindigkeitTisch1 := FALSE;
                END_IF;
            ELSE
                "VentileDB".geschwindigkeitTisch1 := FALSE;
            END_IF;
        END_IF;
    ELSE
    // anderer tisch
       ...
        
    END_IF;
    Je nach dem was in "VentileDB".VentilTisch1AufAb steht, setze ich die Ventile dementsprechend. Wenn DIR_NULL ist, sind alle Ventile geschlossen.
    Wenn "VentileDB".geschwindigkeitTisch1 wird das PropVentil auf die schnelle geschwindigkeit gesetzt, sonst auf die langsame.
    Systemvariabeln".WINKELGENAUIGKEIT ist 0.5 Grad
    "HMI-Interrface"."NeigungssensorTisch1 in Grad" ist der umgerechnete Analog Eingangswert in Grad (inklusive Offset)

    Hier die Umrechnungsfunktion
    Code:
    CASE #index OF
      0:  // Tisch 1
        #value := "inNeigungssensorTisch1";
      1:  // Tisch 2
        #value := "inNeigungssensorTisch2";
      2:  // Parallelogramm 1
        #value := "inNeigungssensorParallelogramm1";
      3:  // Parallelogramm 1
        #value := "inNeigungssensorParallelogramm2";
    ELSE
      // ERROR
      #value2degrees := 0;
      RETURN;
    END_CASE;
    
    
    //Wert neu auf 0 Punk stellen
    #value := #value - UINT_TO_DINT("Systemvariabeln"."Neigungssensor Kalibrierungsdaten"[#index].Nullpunkt);
    
    
    //Jetzt das was zu weit unten ist hinauf schieben
    IF #value < -("NEIGUNGSSENSOR_MAX_VALUE"/2) THEN
      #value := #value + "NEIGUNGSSENSOR_MAX_VALUE";
    
    
    //wenn es zu weit oben ist hinunterschieben
    ELSIF #value > "NEIGUNGSSENSOR_MAX_VALUE"/2 THEN
      #value := #value - "NEIGUNGSSENSOR_MAX_VALUE";
    END_IF;
    
    
    //jetzt haben wir einen Wertebereich von -180 bis 179.9 Grad
    //noch in grad umwandeln
    #value2degrees := DINT_TO_REAL(#value)/"NEIGUNGSSENSOR_MAX_VALUE" * 360.0;
    //65536.0
    //
    IF "Systemvariabeln"."Neigungssensor Kalibrierungsdaten"[#index].invertiert THEN
      #value2degrees := -#value2degrees;
    END_IF;
    Geändert von ludi81 (10.11.2015 um 10:59 Uhr)

  9. #9
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Also das Problem ist dass den Tisch vorbei 75 grad fährt, bis es bei 105 grad ein Kollision vorkommt.
    In den Fall liegt das Problem nicht bei ein eventuellen Übergang von 180 grad nach -180 grad.

    Sonnst, Ich habe leider kein Zeit dein Code zu verstehen (sieht kompliziert aus).
    Es ist auch schwierig dein Code zu verstehen wenn du wichtige Zeilen gelöscht hast
    wie
    Code:
    //kleine Hysterese einbauen
            ...
    Warum "..." ?
    Es hätte ja vielleicht genau mit dein Problem zu tun.

    Aber bist du sicher das du ein mechanischen Defekt ausschliessen kannst ?
    Haben deine HY Ventile interne Rückmeldungen ?
    Wenn ja, dann zusätzliche Überwachungen programmieren.

    Sonnst, ich wurde ein zusätslichen Positionsüberwachung programmieren.
    Etwa wie wenn Vinkel > 100 grad, dann abbrechen, alle Ventile ausschalten.

    Vielleicht ist das Problem in der Vinkel-Sensor.
    Wenn das der Fall sein kann, dann ein zusätzlichen Prox einbauen, nur um zu erkennen wenn den Tisch zu weit gefahren ist.
    Jesper M. Pedersen

  10. #10
    ludi81 ist offline Benutzer
    Themenstarter
    Registriert seit
    01.04.2013
    Beiträge
    63
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    der Code //kleine Hysterese einbauen wird nie ausgeführt, denn bei die Variable überprüfung wird ja mit UEBERPRUEFUNG_GROESSER_GLEICH aufgerufen.
    Ich habe aus Übersichtlichkeit einfach mal alles was nicht relevant entfernt.

    Bei 90 Grad fällt unter umständen die Beladung vom Tisch runter, spätestens bei 105 gibt es dann eine Kollision.
    Ein mechanischer Defekt kann ich nicht zu 100% ausschließen, aber es ist eher unwahrscheinlich. Es gibt bereits zwei Maschinen und beiden hatten bereits ein oder zwei mal das Problem.

    Die HY Ventile haben keine interne Rückmeldung.
    Eine zusätzliche Überprüfung kann ich nicht wirklich einbauen, denn im späteren Ablauf muss der Tisch auch einmal auf 105 Grad gedreht werden.
    Was meinst du mit "zusätzlichen Prox einbauen"? Ich könnte z.b auch eine überprüfung einbauen, dass der Winkelsensor sich z.b. in einer Sekunde nicht mehr als 5 Grad drehen darf. Wenn es mehr sind, dann kann ich abbrechen. Wenn dieser Fehler auftritt wüsste ich zumindest wo ich weiter suchen muss.

    Beim Analogen Eingang ist übrigens eine schwache Glättung eingetragen (also Mittelwert über 4 Werte).

Ähnliche Themen

  1. Analogwert skalieren und ausgeben bei einer SABO Steuerung ?
    Von mikekb im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 31.12.2014, 13:39
  2. Antworten: 9
    Letzter Beitrag: 27.05.2014, 13:09
  3. Antworten: 1
    Letzter Beitrag: 19.06.2012, 20:43
  4. Antworten: 6
    Letzter Beitrag: 21.05.2012, 22:36
  5. Antworten: 5
    Letzter Beitrag: 28.02.2012, 17:57

Stichworte

Lesezeichen

Berechtigungen

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