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

Ergebnis 1 bis 5 von 5

Thema: Sporadischer Fehler beim Datenaustausch zwischen Graph und einem FB

  1. #1
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Liebe Forengemeinde,

    ich suche gerade nach der Ursache für einen sporadisch auftretenden Fehler. Ich habe von mir geschriebene Programmteile in ein bestehendes Projekt eines Kollegen eingebunden. Der FB, welchen ich programmiert habe, handhabt den Datenaustausch mit einem MES-System. Dies wird intern über einen Zustandsautomaten gelöst. Aus dem FB heraus wird nicht auf irgendwelche Merker oder sonstiges zugegriffen (ja, das ist logisch...aber eben nicht für jeden).

    Der Prozess in meinem FB wird durch eine Eingangsvariable (nennen wir sie bStart) angestoßen. Diese wird extern mit einem Merker verschaltet (er hat nur diese Verwendungsstellen) welcher im entsprechenden Schritt des übergeordneten Graph TRUE wird. Die Aktion ist nicht setzend.

    Sobald mein FB seine Arbeit getan hat und im letzten Schritt steht, wird ein Ausgangsbit (nennen wir es bErfolg) auf TRUE geschaltet. Dieses Bit wiederum geht extern auf einen Merker, welcher einzige Transitionsbedingung für das Weiterschalten des Graphen in den nächsten Schritt ist. Auch dieser Merker hat nur die erwarteten Verwendungsstellen und wird nur aus meinem FB heraus beschrieben.

    Bedingung für die Schrittkette in meinem FB, um vom letzten Schritt wieder in den ersten zu gelangen ist: Letzter Schritt aktiv UND bErfolg = TRUE UND NICHT bStart

    Der Logik folgend sollte folgendes (in eben dieser Reihenfolge) passieren:

    1. Graph geht in Schritt X
    2. Merker wird TRUE
    3. bStart wird folglich auch TRUE
    4. FB tut seinen Job
    5. Letzter Schritt wird aktiv
    6. bErfolg wird TRUE
    7. Der andere Merker wird folglich auch TRUE
    8. Graph wechselt in Schritt X+1
    9. Durch die Deaktivierung von Schritt X wird der Merker wieder FALSE
    10. Folglich wird bStart auch FALSE
    11. Damit ist die Bedingung für den Sprung in den ersten Schritt im FB erfüllt
    12. Letzter Schritt im FB wird inaktiv, erster wird aktiv.

    Das funktioniert auch. In 99 Fällen. In einem Fall jedoch (der eben sporadisch auftritt) bleibt Schritt X im Graph einfach ewig aktiv...während der FB seine Bearbeitung angestoßen und beendet hat, das bErfolg-Bit TRUE wurde und der FB auch erfolgreich in den ersten Schritt zurückgesprungen ist. WAS ja eigentlich nicht auftreten KANN weil die Bedingung im FB lautet: Start-Bit zurückgenommen, was wiederum erst passiert, wenn die übergeordnete Schrittkette eine erfolgreiche Bearbeitung signalisiert bekommen hat.

    WTF?

    Ich sollte vielleicht erwähnen, dass dieser Fehler NUR in dieser einen Station auftritt. In 2 weiteren Stationen läuft der Prozess fehlerfrei und wie gewollt. Das ist auch der Grund, weswegen mir langsam aber sicher die Ideen ausgehen, woran es liegen könnte. Daher auch dieser Thread. Vielleicht ist jemandem von euch mal etwas ähnliches passiert und ihr habt ne Idee, was da Phase sein könnte...und ich BETE dafür, dass nicht irgendwer irgendwo in diesem Programm indirekt auf "meinen" Merkerbereich adressiert (vielleicht sogar auch noch aus Versehen).
    Zitieren Zitieren Sporadischer Fehler beim Datenaustausch zwischen Graph und einem FB  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ja, das sind wirklich die ganz bösen Sachen.

    Ich würde schrittweise vorgehen und folgendes probieren.
    1. Den eigenen FB nochmals durchsuchen, ob nicht doch aus versehen irgendwo ein Zugriff nach oder von außen erfolgt.
    2. Wenn im FB indirekte Adressierung verwendet wird, diese nochmals genau prüfen.
    3. wenn möglich einfach mal die Aufrufreihenfolge deiner 3 FB tauschen und sehen, ob der Fehler nun bei einem der anderen FB auftaucht. (Auch schon so gesehen)
    4. Die Merker an In und Output des FB testweise durch andere ersetzen (Ist der Fehler weg, werden die Merker irgendwo im Programm (auch indirekt) bechrieben.
    5. Den IDB durch einen anderen ersetzen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Ich ersetze erstmal die Merker, dann den IDB (gibt nur einen weil Multiinstanz) und sollte das nicht fruchten tausche ich die Aufrufreihenfolge. Ich hasse solche Fehler. Und die Debugging-Möglichkeiten sowie die Tatsache wir leider keinen SPS-Analyzer hier haben, machen die Fehlersuche nicht leichter. Was würd ich jetzt fürs TwinCat Scope geben xD

    Aktueller Workaround: Überwachung der Schritt-Laufzeit. Glücklicherweise geht das in dem Fall, so kann hier wenigstens produziert werden.
    Geändert von Majestic_1987 (18.10.2012 um 09:47 Uhr)

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zur Multiinstanz: (bitte nicht böse sein über die Frage, hab schon alles mögliche erlebt) Hast du den FB 3x einzeln in der Multiinstanz unter STAT angelegt und rufst diese 3 Instanzen auf?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Natürlich xD wie sollte ich das denn sonst tun?

    Habe den Fehler aber gefunden. Nachdem Merkeraustausch und Co nichts brachten fiel es mir wie Schuppen von den Augen: Ich hatte schlichtweg im Graph (der mir natürlich für die Einbindung einer Komponente weitestgehend egal war) eine klitzekleine und überaus selten aktive Transition übersehen, die vor meinen Schritt sprang und ein Kommando an meinen Baustein gab, dass in dieser Situation keinen Effekt hat.

    Wenn man den Wald vor lauter Bäumen nicht sieht. *shame*

Ähnliche Themen

  1. Sporadischer Fehler mit DP/DP Koppler
    Von shotar im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 22.04.2010, 21:43
  2. Antworten: 3
    Letzter Beitrag: 01.12.2009, 23:20
  3. Antworten: 0
    Letzter Beitrag: 21.07.2009, 11:37
  4. Antworten: 1
    Letzter Beitrag: 28.07.2008, 18:09
  5. Antworten: 0
    Letzter Beitrag: 30.06.2008, 19:55

Lesezeichen

Berechtigungen

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