F_iecInitAOEntry

F_iecInitAOEntry 1:

Die Funktion F_iecInitAOEntry konfiguriert die Applikationsobjekte (Single Points, Double Points, Measured Values...) in der Applikationsdatenbank als Linear-Tabelleneinträge. Das zu konfigurierende Tabellenelement (Arrayelement) muss als VAR_IN_OUT-Funktionsparameter an die Funktion übergeben werden.

FUNCTION F_iecInitAOEntry: UDINT

VAR_INPUT
    eType       : E_IEC870_5_101TcTypeID := ASDU_TYPEUNDEF;
    objAddr     : DWORD := 0;
    group       : DWORD := 0;
    multiplier  : BYTE := 0;
    ioMapType   : E_IEC870_5_101IOMappingType := MAP_AREA_NONE;
    byteOffs    : UDINT := 0;
    bitOffs     : UDINT := 0;
END_VAR
VAR_IN_OUT
    dbEntry     : ST_IEC870_5_101AODBEntry;
END_VAR

eType: Applikationsobjekt Typ, ASDU identifier (z.B.: M_SP_NA_1 für Single-Point oder M_DP_NA_1 für Double-Point ).

objAddr : Objektadresse, frei wählbar.

group: Object-Group-Konfigurationsflags. Hier finden sie die Beschreibung aller Group-Flags. Die Flags können mit OR-Verknüpfung kombiniert werden. Nicht alle Kombinationen sind aber sinnvoll!

multiplier: Basis-Zykluszeit-Multiplikator für zyklische/periodische Datenübertragung.  0 = Deaktiviert. Die Basis-Zykluszeit kann über den tPerCyclicBase-Parameter in den  Systemparametern konfiguriert werden.

ioMapType: TwinCAT SPS-Prozessdatenbereich. Dieser Parameter legt fest wie die TwinCAT SPS und IEC-Applikationsobjekt Prozessdaten gemappt werden sollen.

byteOffs: TwinCAT SPS-Prozessdaten-Byte-Offset.

bitOffs: TwinCAT SPS-Prozessdaten-Bit-Offset.

dbEntry: Das zu konfigurierende Tabellenelement (Arrayelement).

Rückgabeparameter

Beschreibung

0

Kein Fehler.

<> 0

Fehler: IEC60870-5-10x Fehlercode

 

Beispiel in ST:

Im folgenden Beispiel werden drei Datenpunkte als Linear-Tabelleneinträge konfiguriert.

eType

objAddr

group

multiplier

ioMapType

byteOffs

bitOffs

M_SP_NA_1

100

IEC870_GRP_INRO1

0

MAP_AREA_MEMORY

100

0

M_DP_NA_1

200

IEC870_GRP_INROGEN

0

MAP_AREA_DATA

200

0

M_IT_NA_1

800

IEC870_GRP_REQCOGEN

0

MAP_AREA_MEMORY

800

0

VAR_GLOBAL CONSTANT
    MIN_TABLE_IDX : INT := 0;
    MAX_TABLE_IDX : INT := 49;
END_VAR
PROGRAM P_LinearTableConfig
VAR_IN_OUT
    AODB : ARRAY[MIN_TABLE_IDX..MAX_TABLE_IDX] OF ST_IEC870_5_101AODBEntry;
END_VAR
VAR
    init        : BOOL := TRUE;
    initError       : UDINT;
END_VAR
IF init THEN
    init := FALSE;
    initError := F_iecInitAOEntry(  eType       := M_SP_NA_1,
                    objAddr     := 100,
                    group       := IEC870_GRP_INRO1,
                    multiplier  := 0,
                    ioMapType   := MAP_AREA_MEMORY,
                    byteOffs    := 100,
                    bitOffs     := 0,
                    dbEntry     := AODB[0] );
    IF initError <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 
            'F_iecInitAOEntry() error: %s', 
            DWORD_TO_HEXSTR( initError, 8, FALSE ) );
        RETURN;
    END_IF

    initError := F_iecInitAOEntry(  eType       := M_DP_NA_1,
                    objAddr         := 200,
                    group       := IEC870_GRP_INROGEN,
                    multiplier      := 0,
                    ioMapType       := MAP_AREA_DATA,
                    byteOffs    := 200,
                    bitOffs         := 0,
                    dbEntry         := AODB[1] );
    IF initError <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG,
            'F_iecInitAOEntry() error: %s',
            DWORD_TO_HEXSTR( initError, 8, FALSE ) );
        RETURN;
    END_IF

    initError := F_iecInitAOEntry(  eType       := M_IT_NA_1,
                    objAddr         := 800,
                    group       := IEC870_GRP_REQCOGEN,
                    multiplier      := 0,
                    ioMapType       := MAP_AREA_MEMORY,
                    byteOffs    := 800,
                    bitOffs         := 0,
                    dbEntry         := AODB[2] );
    IF initError <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG,
            'F_iecInitAOEntry() error: %s',
            DWORD_TO_HEXSTR( initError, 8, FALSE ) );
        RETURN;
    END_IF

END_IF

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.9.0 Build >= 1030

PC oder CX (x86)

TcIEC870_5_101.Lib
( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib;  werden automatisch eingebunden )

TwinCAT v2.10.0 Build >= 1301

CX (ARM)