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

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

Thema: Performance-fresser finden

  1. #1
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe bei einer Anlagensteuerung mit einem Beckhoff CX9020 und hier offensichtlich ein Performance-Problem, obwohl mir nicht bewusst ist das ich aufwändige Schleifen o.ä. integriert habe. Wie kann ich die Performance-Fresser finden? DANKE für einen kleinen Tip.

    Gruß Norbert
    Zitieren Zitieren Performance-fresser finden  

  2. #2
    Registriert seit
    08.04.2009
    Beiträge
    68
    Danke
    1
    Erhielt 11 Danke für 8 Beiträge

    Standard

    Kannst Du das Verhalten besser beschreiben wie Timeouts oder Zykluszeitüberschreitungen?

  3. #3
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hoi,

    ich beobachte das im SystemManager. Hier ist die Auslastung meiner SPS sehr hoch, teilweise über 90%
    Was ich schon herausgefunden habe ist das ein Concat recht viel Performance zu brauchen scheint.

    Ich erzeuge automatisch Alarm-EMails und hierfür setze ich mir die Mail mit mehreren Concat zusammen (Aus Anlage-Nummer, Zeitstempel usw.)

  4. #4
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Hallo Norbert,

    wenn du einige Hundert Mal die Funktion CONCAT verwendest, bringst du damit einen CX9020 sehr wahrscheinlich nie ins Schwitzen.

    Wenn du allerdings 10000 Meldungen hast, die mit CONCAT auch zusammengesetzt werden, wenn sie überhaupt nicht anstehen und zusätzlich eine Zykluszeit <1ms hast, dann wird es irgendwann eng.

    Welche Zykluszeit ist denn eingestellt?
    Wird der Zeitstempel für jede Meldung neu gebildet, oder nur 1x im Zyklus global für das ganze Programm?
    Laufen mehrere Task auf der Steuerung?
    Hast du Sortier-Algorithmen im Programm?

    System Funktionen wie CheckBounds können auch für eine höhere CPU-Auslastung sorgen. Das ist bei meinen Programmen aber noch nie auffällig stark (>10%) ins Gewicht gefallen.

    Gruß
    Chräshe

  5. #5
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Also um eine CX9020 in die Knie zu zwingen gehört schon einiges dazu.

    Eine Idee wäre noch mit GetSystemTime einen Zeitstempel ganz am Programmanfang zu nehmen und dann nach dem Aufruf der diversen FBs weitere.
    Aus der Differenz müsste man ja dann erkennen können wo im Programm die Hänger sind.
    Sänd from mei Kombjudder mitse Dastadurr.

  6. #6
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hoi Chräshe,

    DANKE für deine Info. Also zehntausend Meldungen sind es sicher nicht, aber ich habe gemerkt das die Auslastung um ca 6ms runter geht wenn ich die Zusammenstellung der Mail überspringe.

    Als Zycluszeit habe ich 40ms, es laufen 2 Task nebeneinander (8ms / 40ms)

    Sortierungen usw. habe ich nichts integriert und den Zeitstempel bilde ich ein Mal pro Zyclus und schreibe den auf eine globale Variable.

    Für die Mails nutze ich ein globales Array (3-dimensional für Anlage, Alarmpriorität, Meldung - of String(350))

    Die Systemfunktionen habe ich auch integriert, sollten aber nicht weiter ins Gewicht fallen, denk ich mal.

    der normale Task braucht knapp 19ms, der schnelle 0.47ms

  7. #7
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hoi Chräshe,

    DANKE für deine Info. Also zehntausend Meldungen sind es sicher nicht, aber ich habe gemerkt das die Auslastung um ca 6ms runter geht wenn ich die Zusammenstellung der Mail überspringe.

    Als Zykluszeit habe ich 40ms, es laufen 2 Task nebeneinander (8ms / 40ms)

    Sortierungen usw. habe ich nichts integriert und den Zeitstempel bilde ich ein Mal pro Zyclus und schreibe den auf eine globale Variable.

    Für die Mails nutze ich ein globales Array (3-dimensional für Anlage, Alarmpriorität, Meldung - of String(350))

    Die Systemfunktionen habe ich auch integriert, sollten aber nicht weiter ins Gewicht fallen, denk ich mal.

    der normale Task braucht knapp 19ms, der schnelle 0.47ms

    @MasterOhh
    da der Zeitstempel nicht auf die ms genau sein muss reicht mir das einmal pro Zyklus.

  8. #8
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Ich meine um herauszufinden, wo im Programm die meiste Rechenzeit verbraten wird, kannst du nach den FB Aufrufen weitere Zeitstempel erzeugen. Die Differenz zum Start-Stempel zeigt dir dann, wie lange die Abarbeitung der einzelnen Programmteile dauert. Somit kannst du evtl. deine Resourcenfresser eingrenzen.
    Sänd from mei Kombjudder mitse Dastadurr.

  9. #9
    Registriert seit
    24.09.2011
    Ort
    Lustenau / Österreich
    Beiträge
    60
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ah, verstehe...

    ja, das kann ich natürlich mal machen. Einfach in jedem Anlagenteil einen Zeitstempel bilden und die Differenz ausrechnen lassen.

  10. #10
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Norbert,

    Deine Alarm-E-Mails hatte ich als Text-Meldung im HMI interpretiert. Wenn ich es richtig verstehe, verschickst du aber tatsächlich E-Mails an andere Stationen!?
    Das findet doch hoffentlich nicht zyklisch statt, weil z.B. das bBusy/bError eines Bausteins nicht richtig ausgewertet wird?

    Welcher SMTP Server kommt zum Einsatz?
    Wie groß ist eine E-Mail?
    Wie oft wird eine E-Mail verschickt?

    Zitat Zitat von mailmir Beitrag anzeigen
    Für die Mails nutze ich ein globales Array (3-dimensional für Anlage, Alarmpriorität, Meldung - of String(350))
    Das mit dem dreidimensionalen Array sieht komisch aus.
    Wie ist das genau deklariert?
    Du hast doch hoffentlich keinen String mit 350 Zeichen deklariert?
    Das ist zwar möglich, jedoch funktionieren die String-Funktionen wie CONCAT dann nicht mehr. Diese sind nur für bis zu 255 Zeichen vorgesehen!

    Gruß
    Chräshe

Ähnliche Themen

  1. Performance Level
    Von joko96 im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 9
    Letzter Beitrag: 27.04.2015, 07:53
  2. Step 7 S7-1200 Performance
    Von Stupp im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 16.06.2014, 15:50
  3. Pointer finden..
    Von troeps im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 21.10.2010, 15:33
  4. Libnodave - Performance
    Von muharrr im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.03.2006, 14:04
  5. op am profibus (performance)
    Von volker im Forum Feldbusse
    Antworten: 12
    Letzter Beitrag: 07.10.2003, 19:57

Stichworte

Lesezeichen

Berechtigungen

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