TIA Komisches Ablöseverhalten bei tiefen-verschachtelten FBs übergeben als inout

LehnerTh

Level-2
Beiträge
67
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Liebes Forum.

Ich habe ein Problem mit der Aktualisierung der Daten in einem Instanz-DB der in mehreren FBs als inout übergeben wird.
Ist nicht mein Programm und ich bin auch nur ca 30 Minuten bei der Fehlersuche dabeigewesen, versuche es aber so gut als möglich zu beschreiben.
Verwendet wird TIA V16 mit einer 1214c DC/DC/DC.

Folgender Aufbau:
2 Verschiedene Abläufe sollen ein Drehteller steuern (nacheinander).

fbMain - Hat eine Schrittkette und ruft in Step 10 den fbAblauf1 auf und dann in Step 20 den fbAblauf2
fbDrehteller - Steuert Motion Control usw.
Ablauf1 sowie Ablauf2 bekommen den fbDrehteller als inout.
In beiden Abläufen wird die Instanz des fbDrehteller() aufgerufen.

Der fbDrehteller hat eine Static Variable "IsHomed". Diese wird im fbDrehteller direkt vom TO geholt.

Nun das Problem:
Der fbMain steht auf Step 10 - Im aufgerufenen Ablauf1 wird Homing gestartet, durchgeführt und beendet.
fbDrehteller_DB.IsHomed steht auf true.

fbMain schaltet auf Ablauf2.
Nun steht plötzlich fbDrehteller_DB.IsHomed auf false...

Jetzt kommts:
- Im DB des TO steht Homed (nach wie vor) auf true.
- Gehe ich jetzt in Ablauf2 (der ja gerade läuft) und mit rechtsklick auf fbDrehteller() -> Öffnen und beobachten (weil ich sehen will, warum das bit nicht true ist) steht, sobald der FB geöffnet ist, fbDrehteller_DB.IsHomed auf true, als wär nichts gewesen...

Kann mir das wer erklären?
Ist ja wie bei der Quantenmechanik wo der Beobachter Einfluss auf das Ergebnis hat :D


Danke & LG
Thomas
 
Mischung aus nicht-optimierten Bausteinen und optimierten Bausteinen? Wie werden die Signale vom TO ausgewertet? Der Status des TO ändert sich azyklisch!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du mal eine Aufzeichnung der relevanten Signale mittels Trace gemacht? Kann auch ja auch ein Fehler beim Beobachten sein, durch falsche Aufrufumgebung. Möglicherweise schreiben hier auch höher priore OBs oder HMI oder Fremdsysteme drin rum.
 
Zuletzt bearbeitet:
Die Bausteine sind alle optimiert.
Das Homing Signal wird direkt aus TO.StatusBits.HomingDone geholt. Im TO-DB ist der Wert auch immer true, habs aber nicht getraced.

Falsche Aufrufumgebung kann ich fast sicher Ausschließen. Es steht ja im IDB des Drehtellers auch false drin.

Nach einem override haben wir schon gesucht, scheint OK zu sein. Das würde auch nicht erklären warum der Wert beim Beobachten plötzlich von false auf true springt.

Zur Info: Der Aufruf des fbDrehteller() haben wir jetzt aus Ablauf1 und Ablauf2 raus und jetzt nur einmalig im fbMain aufgerufen. So scheint es richtig zu funktionieren.
 
Zurück
Oben