Ermittelt Methodenaufrufe in der Methode FB_Init
eines Basis-Funktionsbausteins, die von einem vom Basis-FB abgeleiteten Funktionsbaustein
überschrieben werden.
Begründung: In solchen Fällen kann es sein, dass die Variablen in überschriebenen Methoden im Basis-FB nicht initialisiert sind.
Wichtigkeit: Hoch
Beispiel
Funktionsbaustein FB_A
hat die Methoden FB_Init
und Meth_MyInit
. FB_Init
ruft Meth_MyInit
zur Initialisierung auf. Funktionsbaustein FB_B
ist von FB_A
abgeleitet. PLC_PRG
ruft FB_B
auf und verwendet damit dessen Variable mbMyDintB
bevor sie initialisiert wurde. FB_B.Meth_MyInit
überschreibt FB_A.Meth_MyInit
.
FUNCTION_BLOCK FB_A VAR mbMyDintA : DINT; END_VAR
FUNCTION_BLOCK FB_B EXTENDS FB_A VAR mbMyDintB : DINT; END_VAR
METHOD FB_Init : BOOL VAR_INPUT bInitRetains:BOOL; bInCopyCode:BOOL; END_VAR VAR diDummy:DINT; // SA0106 END_VAR mbMyDintA := 123; diDummy := Meth_MyInit();
METHOD Meth_MyInit : DINT VAR_INPUT END_VAR mbMyDintB := 123; // access to member of FB_B
PROGRAM PLC_PRG VAR g_BInst : FB_B; xVar : BOOL; END_VAR xVar := g_BInst.fb_init(TRUE, TRUE); //this instruction causes the following order of initializations: //FB_A.fb_init //FB_B.Meth_MyInit // SA0106 //FB_B.fb_init //FB_B.Meth_MyInit --> SA0106: Virtueller Methodenaufruf 'Meth_MyInit' in FB_INIT