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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: Flankenmerker Auswertung Fehlerhaft / Impulse fehlen

  1. #11
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dein Problem hängt höchst wahrscheinlich mit dem zweifelhaften FB90-Aufruf im OB35 zusammen.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  2. #12
    Crack123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.02.2012
    Beiträge
    302
    Danke
    16
    Erhielt 17 Danke für 17 Beiträge

    Standard

    Das in diesem Programm irgendwas NICHT zweifelhaft ist würde mich sowieso wundern....aber inwiefern würdest du sagen erzeugt der Aufruf das Problem?

    Als Beispiel war die Zykluszeit der Steuerung vorher zw. 75-105 MS mit den selben Problemen, was halt echt komisch ist wieso es scheinbar seid einiger Zeit Funktionierte bzw. ich hoffe das mich die Bedienmenschen nicht anflunkern....!

  3. #13
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Die FC90, in der deine Flanke gebildet wird, wird im FB90 aufgerufen. Der FB90 wird im OB1 und im OB35 aufgerufen und auch fast komplett abgearbeitet. So ganz genau habe ich es mir nicht mehr angesehen. Der OB35 unterbricht den OB1. Wenn jetzt im OB1-Zyklus die Flanke gesetzt wird, wird sie an undefinierter Stelle des OB1 durch den OB35 zurückgesetzt. Der Impuls steht also nicht über einen vollen OB1-Zyklus an. Somit kann er auch nicht konsistent über einen Zyklus abgefragt werden. Das erklärt deine unterschiedlichen Zählerstände.

    Zu dem Programm an sich möchte ich mich mal besser nicht äußern .
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  4. #14
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.621
    Danke
    778
    Erhielt 649 Danke für 494 Beiträge

    Standard

    Der ob35 wird hier alle 100ms aufgerufen. Das heisst. Sämtliche Datenpunkte (auch solche die aus der Hardware kommen) können sich mitten im OB1 Zyklus ändern. Bei OB1 Zyklen länger als 100ms sogar öfter als einmal. Das führt einerseits zu Inkonsistenten Daten im Programm.

    Und ausserdem führt es sehr schnell mal dazu, dass ein und dasselbe Programm sich auf verschieden leistungsstarken CPUs auch anders verhält.

    Ich hab jetzt aber nur mal kurz drübergeschaut.

    mfG René

    Edit: Hardware von aussen wird konsistent eingelesen. Da im OB35 nicht auf die Peripherie zugegriffen wird sondern aufs Prozessabbild. Trotzdem unschön diese verschachtelung. Auch im Simulator natürlich entsprechend schwer nachzuvollziehen.
    Geändert von vollmi (04.03.2016 um 17:18 Uhr)

  5. #15
    Crack123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.02.2012
    Beiträge
    302
    Danke
    16
    Erhielt 17 Danke für 17 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen

    Zu dem Programm an sich möchte ich mich mal besser nicht äußern .
    Das beste ist, daneben steht eine Anlage selben Herstellers wo das ganze genauso nochmal aussieht....



    Das mit dem doppelten Aufruf hatte ich noch garnicht gesehen....Gott

    EDIT: Dieser doppelaufruf ist definitiv schon seid Anlagen erst IBN vorhanden, im Stand von 2011 ist das ganze auch schon da.


    Die Frage für mich ist warum fängt das jetzt erst an zu spinnen, vorallem kann ich mich nicht erinnern das solche Probleme in der Häufigkeit früher vorgekommen sind,
    wir reden Aktuell von 10x Anlage Automatik fahrt 6x Problem teilweise,
    nach CPU tausch waren die ersten 2 fahrten gleich mal Fehlerhaft, sowas fällt jedem auf.
    Geändert von Crack123 (04.03.2016 um 17:31 Uhr)

  6. #16
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard

    Zitat Zitat von Crack123 Beitrag anzeigen
    Das beste ist, daneben steht eine Anlage selben Herstellers wo das ganze genauso nochmal aussieht.... ...
    Ist das der Hersteller, der im Bausteinkommentar des OB1 genannt ist.. ?


    Zitat Zitat von Crack123 Beitrag anzeigen
    ..Das mit dem doppelten Aufruf hatte ich noch garnicht gesehen...
    Das habe ich mir gedacht. So etwas übersieht man normalerweise immer. Ich bin auch nur über die Referenzdaten darauf gestoßen.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.205
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Da wollte wohl jemand nicht von außen auf IDB-Variablen zugreifen und hat kurzerhand den "Eigentümer"-FB selber aufgerufen. Allerdings ändert der vom OB35 eingeschobene Aufruf nicht nur die Zeitzähler sondern bearbeitet den kompletten FB90 und FC90 - diese sind aber gar nicht reentrant-fähig geschrieben. Es kann und wird allerdings vorkommen, daß der OB35 den FB90 oder FC90 unterbricht und dann kommt es zu solchen Phänomenen, wenn die Unterbrechung an "ungünstigen" Stellen stattfindet.

    Weiters: Variablen die multitasking-mäßig von verschiedenen Tasks beschrieben werden, dürfen in jeder Task (bzw. der niederprioren Task) nur genau einmal gelesen werden, weil sie sich zwischen den Lesezugriffen geändert haben können.

    Du solltest die 3 Zeitzähler-Variablen außerhalb der FB90-Instanz in einem globalen DB in einer zusammenhängenden Struktur unterbringen und am Anfang des FB90 mit SFC81 UBLKMOV in einem Stück in FB90-lokale Kopien umkopieren.
    Der OB35 darf dann nur direkt die globalen Zeitzähler-Variablen inkrementieren (und auf keinen Fall Bausteine aufrufen, die auch in anderen OB-Ebenen aufgerufen werden).


    Wie genau muß die Zeitmessung sein? Vielleicht läßt sich das Ganze mit der nun viel schnelleren CPU auch ohne Multitasking durch normale Timer oder SFC64 TIME_TCK oder Addition von OB1_PREV_CYCLE lösen?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.205
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Nachtrag:
    Es geht sogar viel einfacher: Der OB35 setzt nur ein Bit daß er aufgerufen wurde (im einfachsten Fall direkt das Input-Bit #OB35_Aufruf = DB90.DBX20.0 (*)). Im FB90 Netzwerk 2 wird das Bit abgefragt, und wenn gesetzt dann zurückgesetzt und die Zeitzähler incrementiert.
    Also eine minimale Änderung nur im OB35 sollte das Problem beseitigen.

    Nachtrag (*) in dem Fall darf natürlich im OB1 beim FB90-Aufruf der Eingang "OB35_Aufruf" nicht beschaltet werden.

    Harald
    Geändert von PN/DP (04.03.2016 um 18:02 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #19
    Crack123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.02.2012
    Beiträge
    302
    Danke
    16
    Erhielt 17 Danke für 17 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Ist das der Hersteller, der im Bausteinkommentar des OB1 genannt ist.. ?
    Natürlich, ich kann mich bei einer anderen änderung anno 2005 erinnern das selbst der Programmierer dieser Firma etwas 3 Tage brauchte um *Ihr* Programm zu verstehen bzw. sich durchzuwinden....


    @PN/DP

    Wir sprechen hier von einem Dosierofen der mit 950°C flüssiges Messing per Servohydraulischem Ventilstopfen durch ein Loch in eine Rohrschleudergießanlage abgießt ( wir reden von Abgüßen zwischen 80 und 800kg) ,
    im Normalfall wird dies über eine Waage gesteuert (Funktioniert auf +-1KG genau),
    dann gibt es da noch diesen Zeitbetrieb wo man nach eingegebener Zeit Quasi den Abguß steuert (2 Stufig Grob/Fein) , das dies sowieso nicht besonders genau ist sollte klar sein, ist eher so eine Art Notbetrieb.

    Auch angemerkt sehr viele Teile des Programms werden auch nicht mehr wirklich verwendet, es wurde die externe Waage durch die Interne ( Siwarex ) ersetzt, wurde halt Quick and Dirty *reingebastelt*....


    Es gibt genügend externe IDB zugriffe in dem Programm was wie schonmal geschrieben bei der Suche im Prog. ein eher schlechter Witz ist.

    Mein Problem hat ja auch eher nichts mit dem Abgußvorgang zu tun sondern mit dem wegfahren des Ofens nach dem der Abgußvorgang beendet wurde ( M91.5 gesetzt und DB91.DBX100.2 Flanke..)



    Nebenbei dieser OB35 Quatsch da ist mir sowieso etwas to much, klar ich verstehe das die Zeitmessung damit genauer wird aber wozu dann trozdem noch OB1 aufruf, ich mein die Zykluszeit war sowieso schon fast 100MS
    Geändert von Crack123 (04.03.2016 um 18:19 Uhr)

  10. #20
    Registriert seit
    06.10.2003
    Beiträge
    3.414
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Crack,

    bei so einem Programm wäre ich mit Änderungen sehr vorsichtig. Selbst wenn man einen mutmaßlich Fehler beseitigt, kann man nie wissen was es so alles nach sich zieht. So schräg kann man manchmal gar nicht denken.

    Ist jetzt eigentlich die neue, schnelle CPU verbaut oder wieder die alte? Im Netzwerk 2 des OB1 hatte man mit etwas "Finetuning" den Zyklus gekonnt um 17ms verlängert. Der aufschlussreiche Kommentar dazu lautet
    "Zyluszeit um 17 MS erhöht wegen Programm"
    Wie du in #1 schreibst, lag die Zykluszeit der alten CPU bei ca. 100ms. Falls diese Zykluszeit u.U. auch für andere Unbekannte notwendig ist, dann könntest du unter Verwendung der schnellen CPU den ganzen OB1 mit dem OB35 synchronisieren. Im OB35 einfach einen Merker setzen und diesen am Ende des OB1 in einer While-Schleife abfragen und rücksetzen. Damit kannst du deine Zeitzähler auch im OB1 exakt um 100ms hochzählen.

    Warum der Fehler erst jetzt auftritt, ist mit auch unklar. "Software rostet nicht", hat mal einer gesagt.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Step 7 Flankenmerker in FC's
    Von spirit im Forum Simatic
    Antworten: 75
    Letzter Beitrag: 10.05.2014, 17:59
  2. Temp Flankenmerker
    Von baalrok im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 06.03.2012, 13:32
  3. Flankenmerker
    Von Manfred Stangl im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 24.03.2009, 08:31
  4. Flankenmerker funktioniert nicht
    Von ogstyle im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.07.2007, 13:36
  5. Variablen als Flankenmerker
    Von blackball83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.08.2006, 14:42

Stichworte

Lesezeichen

Berechtigungen

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