RobiHerb
Level-2
- Beiträge
- 679
- Reaktionspunkte
- 113
-> Hier kostenlos registrieren
Es gibt, wenn man in ST programmiert 3 POU Typen, PROGRAM, FUNCTION_BLOCK, FUNCTION.
PROGRAM ist:
immer impizit instanziert,
einmal nur vorhanden (Singleton)
kann mit Parametern aufgerufen werden,
kann Werte zurück geben,
sollte eigentlich auf der obersten Ebene aufgerufen werden,
ist aber aus anderen PROGRAM oder FUNCTION_BLOCK aufrufbar.
FUNCTION_BLOCK ist:
explizit zu instanzieren,
beliebige Anzahl von Instanzen,
kann als einzige POU mit VAR_IN_OUT aufgerufen werden,
gibt direkt keine Werte zurück, VAR_OUT aber möglich,
kann weitere andere (oder auch gleiche) FUNKTION_BLOCKs instanzieren,
kann zusätzlich PROGRAM und FUNCTION aufrufen.
FUNCTION ist:
nie instanziert,
kann beliebig oft und von überall aufgerufen werden,
kann keine FUNCTION_BLOCK aufrufen, da die Instanzierung derselben nicht eindeutig möglich ist.
Frage nun, darf man/sollte man es zulassen, dass eine FUNCTION ein ja impliziert instanziertes PROGRAM aufruft?
Damit könnte man ja dann aus dem PROGRAM wiederum POU vom Typ FUNCTION_BLOCK instanzieren, die wären zwar auch Singletons jeweils ...
PROGRAM ist:
immer impizit instanziert,
einmal nur vorhanden (Singleton)
kann mit Parametern aufgerufen werden,
kann Werte zurück geben,
sollte eigentlich auf der obersten Ebene aufgerufen werden,
ist aber aus anderen PROGRAM oder FUNCTION_BLOCK aufrufbar.
FUNCTION_BLOCK ist:
explizit zu instanzieren,
beliebige Anzahl von Instanzen,
kann als einzige POU mit VAR_IN_OUT aufgerufen werden,
gibt direkt keine Werte zurück, VAR_OUT aber möglich,
kann weitere andere (oder auch gleiche) FUNKTION_BLOCKs instanzieren,
kann zusätzlich PROGRAM und FUNCTION aufrufen.
FUNCTION ist:
nie instanziert,
kann beliebig oft und von überall aufgerufen werden,
kann keine FUNCTION_BLOCK aufrufen, da die Instanzierung derselben nicht eindeutig möglich ist.
Frage nun, darf man/sollte man es zulassen, dass eine FUNCTION ein ja impliziert instanziertes PROGRAM aufruft?
Damit könnte man ja dann aus dem PROGRAM wiederum POU vom Typ FUNCTION_BLOCK instanzieren, die wären zwar auch Singletons jeweils ...