Methode überlagern ähnlich wie FB_Init

Aikapan

Level-2
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,

OOP rückt ja tatsächlich immer näher und immer mehr Kunden verlangen es sogar.
Mit FB_Init und Vererbung auch eine feine Sache, doch bei Methoden habe ich noch ein Problem mit Überlagern.

FB_Init lässt sich einfach inkl. Schnittstelle überlagern, bzw. erweitern.
Code:
METHOD FB_Init: BOOL // Basis-FB
VAR_INPUT    
bInitRetains: BOOL; // TRUE: Die Retain-Variablen werden initialisiert (Reset warm / Reset kalt)    
bInCopyCode: BOOL;  // TRUE: Die Instanz wird danach in den Kopiercode kopiert (Online-Change)
usiBitRes : USINT; // bit resolution, example: 10 -> 2^10 -> 1024 values available (0-1023)
END_VAR

Code:
METHOD FB_Init: BOOL // Erweiterung
VAR_INPUT    
bInitRetains: BOOL; // TRUE: Die Retain-Variablen werden initialisiert (Reset warm / Reset kalt)    
bInCopyCode: BOOL;  // TRUE: Die Instanz wird danach in den Kopiercode kopiert (Online-Change)
usiBitRes : USINT; // bit resolution , example: 10 -> 2^10 -> 1024 values available (0-1023)
[COLOR=#008000][B]usiBitResTurns[/B] [/COLOR]: USINT; // bit resolution or turns, example: 10 -> 2^10 -> 1024 values available (0-1023)
END_VAR


eine Methode, nennen wir sie mal setOutputs, benötigt 3 Eingänge und 1 Ausgang im Basis-FB. In der Ableitung einen zusätzlichen Ausgang.
Ist das überhaupt möglich oder ist eine derartige Überlagerung nur bei FB_Init möglich?[/CODE]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eigentlich sollte das prinzipiell gehen, nur nicht so.
Ich habe das auf der FB-Ebene schon öfter gemacht.
Das Problem ist, dass Du in der abgeleiteten Methode die gleichen Eingänge nochmal deklarierst. Du versuchst ein Shadowing, das geht bei TC nicht.
Lass die Deklarationen weg, nur die zusätzlichen Eingänge deklarieren, dann sollte es gehen.

Wo ich jetzt nur nicht sicher bin: Du musst der Vererbung nur noch sagen, von wem die erbt - ob das bei Methoden geht? Kann ich gerade nicht ausprobieren.
 
Zuletzt bearbeitet:
Nein, das geht nicht, weder prinzipiell noch sonstwie.
Wenn man in einem abgeleiteten FB eine Methode des Basis-FBs überschreibt, muss sie exakt die gleichen INPUT/OUTPUT/IN_OUT-Parameter aufführen wie die Methode des Basis-FBs. Sie kann nur zusätzliche lokale Variablen haben.
 
Zurück
Oben