Seltsamer Multiinstanzaufruf

Zonk1982

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich bin relativ neu in der SPS-Programmierung und habe von einem Kollegen ein Programm übernommen.
Wie man einen DB als Multiinstanz-DB verwendet weiss ich, aber die Aufrufstruktur auf dem Bild ist mir ein Rätsel:

Ich hätte einen FBXY mit zugehörigem DB96 geschrieben und in dem den FB610 als stat variable deklariert und 10 mal aufgerufen.

Hier ist jedoch z.B. FB610 als stat Variable in FB835 deklariert und alle stat Variablen von FB610 können im DB335 beobachtet werden. Gleichzeitig nutzt der FB610 aber einen Bereich des DB96.
In beiden DBs kann ich die aktuellen Werte sehen.

Ein Siemens SPS-Spezialist in der Firma hat so einen Aufruf auch noch nie gesehen. Weiss jemand, was genau hier passiert und warum in 2 DBs kopiert wird?


Grüsse
Johann
 

Anhänge

  • Multiinstanz.JPG
    Multiinstanz.JPG
    53,4 KB · Aufrufe: 107
Nein, eine Erklärung dafür habe ich nicht - ich denke nicht, dass dies Sinn macht, oder beabsichtigt war. Ich würde so einen Programmaufbau jedenfalls nicht machen und als fehlerhaft bezeichnen.
 
Eventuell hat da jemand den Zweck einer Multiinstanz nicht so recht verstanden und hat deshalb für die aufgerufenen FB's zusätzliche IDB's erzeugt.
Immer denselben???
stell mal den code rein,dann könnte man genauere angaben machen,weshalb und warum das so ist.
 
Danke für die schnellen Antworten, ich bin jetzt endlich drauf gekommen:

FB835...FB844 werden ganz normal mit jeweils zugehörigen IDBs aufgerufen. In FB835...FB844 ist dann jeweils einmal der FB610 als stat deklariert. Also quasi eine Multiinstanz, die nur einmal verwendet wird.
Der FB610 wird daher ohne IDB-Angabe aufgerufen.

Jetzt hat der FB610 allerdings eine UDT-out variable, die alle internen Variablen enthält und über einen Pointer in den globalen DB96 geschrieben wird.

Einzige unklare Sache: warum wird der globale DB96 im Baum hinter dem FB610 dargestellt als ob er ein IDB wäre?
Eigentlich wird doch z.B. im FB835 die UDT aus dem IDB335 in den durch den Pointer angegebenen Speicherbereich in DB96 kopiert. Daher müsste der DB96 in der Aufrufstruktur als vom FB835 aufgerufen angezeigt werden.

Grüsse
Johann
 

Anhänge

  • Aufrufbaum.JPG
    Aufrufbaum.JPG
    159,2 KB · Aufrufe: 43
Zuletzt bearbeitet:
Zurück
Oben