Structs aus instanziertem Funktionsblock verwenden

Robi123

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag zusammen,

ich habe folgendes Problem: Ich habe einen Funktionsblock (FB_RobotData), welcher zyklisch Daten von Profinet einließt und diese mittels zweier Methoden in ein Struct füttert -> Das funktioniert soweit.
Nun möchte ich diesen Funktionsblock innerhalb von einem anderen Funktionsblock eben aufrufen und mir die Inhalte aus den Structs ziehen, ich habe über diesen weg aber gar kein Zugriff auf die einzelnen Variablen des Structs (Im Beispielbild wäre das z.B. die uiCurrJobID Variable). Kann mir hier jemand weiterhelfen? Zur Verdeutlichung ein Diagramm.
1713267636271.png
 
Du könntest eine Ausgangsvariable vom Typ der Struktur im FB FB_RobotData anlegen und auf die zugreifen. Ansonsten, auch wenn es vielleicht nicht ganz sauber ist, kannst Du lesend immer auch auf lokale Variablen eines FBs zugreifen, nur werden die nicht in Intellisense angezeigt.
Code:
uiCurrentJob := fbRobotData.stRobotInputData.uiCurrJobID
sollte eigentlich funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die stRobot***Data liegen im FB_RobotData? Dann muß dort, wo Du auf die internen Variablen zugreifen willst, fbRobotDarta als Instanz bekannt sein. Beispielsweise: Du hast fbRobotData im PLC_PRG instanziiert, und willst aber aus Foo_PRG auf die Variable zugreifen: Geht nicht. Dann muß fbRobotData als globale Variable angelegt sein.
Du könntest natürlich auch die stRobot***Data als globale Variablen anlegen, um sowohl von FB_RobotData als auch von anderen Programmteilen darauf zuzugreifen.
Sonst schreib doch mal die Programm-/Aufrufstruktur auf, damit wir uns das mal ansehen können.
 
Du könntest eine Ausgangsvariable vom Typ der Struktur im FB FB_RobotData anlegen und auf die zugreifen. Ansonsten, auch wenn es vielleicht nicht ganz sauber ist, kannst Du lesend immer auch auf lokale Variablen eines FBs zugreifen, nur werden die nicht in Intellisense angezeigt.
Code:
uiCurrentJob := fbRobotData.stRobotInputData.uiCurrJobID
sollte eigentlich funktionieren.

Ah ja, dass hätte wahrscheinlich auch funktioniert, hatte es aber gar nicht getestet, da Intellisense es eben nicht vorgeschlagen hat.

Meine Lösung war nun die Funktionalität von FB_OrderJob zu extenden mit der Funktionalität von Robot Data. Das sah für mich nach einer eleganten Lösung aus, welche funtkioniert.

Vielen Dank euch!
 
Zurück
Oben