Step 7 Struktur eines Globalen DB in FB zuweisen

Klimmzüge mit Anypointer u. ä. sind in SCL sehr selten erforderlich.
Hier mal ein kleines Beispiel, dass man IN/OUT-Daten in geschachtelten Arrays problemlos vollsymbolisch bearbeiten kann.
Code:
TYPE My_UDT1
    STRUCT
        InnerBool:BOOL;
        InnerArray:ARRAY[1..5] OF INT;
    END_STRUCT
END_TYPE

TYPE My_UDT2
    STRUCT
        OuterBool:BOOL;
        OuterArray:ARRAY[1..17] OF My_UDT1;
    END_STRUCT
END_TYPE

DATA_BLOCK My_DB1
    STRUCT
        MyData:My_UDT2;
    END_STRUCT
BEGIN
END_DATA_BLOCK

FUNCTION_BLOCK My_FB1
VAR_IN_OUT
    Data:My_UDT2;
END_VAR
BEGIN
    Data.OuterArray[3].InnerArray[2] := 17; // Hier ist der symbolische Zugriff!
END_FUNCTION_BLOCK

FUNCTION_BLOCK My_FB2
BEGIN
    My_FB1.My_DB2(Data := My_DB1.MyData);    // Hier ist der symbolische Aufruf!
END_FUNCTION_BLOCK
und hier die zugehörige Symboltabelle im ASC-Format
Code:
126,My_UDT1                 UDT     1   UDT     1                                                                                 
126,My_UDT2                 UDT     2   UDT     2                                                                                 
126,My_DB1                  DB      1   DB      1                                                                                 
126,My_FB1                  FB      1   FB      1                                                                                 
126,My_FB2                  FB      2   FB      2                                                                                 
126,My_DB2                  DB      2   FB      1
Wo ist da jetzt das Problem?
Gruß
Erich
 
Zurück
Oben