F_iecLookupTableEntry

F_iecLookupTableEntry 1:

Die Funktion F_iecLookupTableEntry prüft ob ein zum Schlüssel passender Tabelleneintrag bereits vorhanden ist.

Syntax

FUNCTION F_iecLookupTableEntry: UDINT
VAR_INPUT
    key    : ST_IEC870_5_101HashTableKey;
END_VAR
VAR_IN_OUT
    hTable : T_HAODBTable;
ENd_VAR

F_iecLookupTableEntry 2: Eingänge

key: Lookup-Schlüssel.

Ein-/Ausgänge

hTable: Applikationsobjekt-Datenbankhandle (Hash-Tabellenhandle). Das Tabellenhandle muss vor der Benutzung einmalig mit der Funktion F_iecCreateTableHnd initialisiert werden.

F_iecLookupTableEntry 3: Rückgabewert

Rückgabeparameter

Beschreibung

0

Kein Fehler. Es existiert ein zum Schlüssel passender Tabelleneintrag.

<> 0

Es wurde kein Tabelleneintrag gefunden. Fehler: IEC60870-5-10x Fehlercode

Beispiel in ST

Es wird die Existenz von Datenpunkten in der Applikationsdatenbank überprüft. Die gesuchten Datenpunkte sind bereits als Hash-Tabelleneinträge konfiguriert worden. Siehe in der Beschreibung der Funktion: F_iecAddTableEntry.

eType

objAddr

asduAddr

group

M_SP_NA_1

100

11

IEC870_GRP_INRO1

M_SP_TB_1

101

11

IEC870_GRP_INRO1

M_DP_NA_1

200

11

IEC870_GRP_INROGEN

M_IT_NA_1

800

11

IEC870_GRP_REQCOGEN

PROGRAM P_iecLookupTableEntry
VAR_IN_OUT
    hTable  : T_HAODBTable;
END_VAR
VAR
    bLookup : BOOL := TRUE;
    key1    : ST_IEC870_5_101HashTableKey := ( eType := M_SP_NA_1, asduAddr := 11, objAddr := 100, group := IEC870_GRP_INRO1, lookup := IEC870_LOOKUP_KEY_ALL_ON );
    key2 : ST_IEC870_5_101HashTableKey := ( eType := M_SP_TB_1, asduAddr := 11, objAddr := 101, group := IEC870_GRP_INRO1, lookup := IEC870_LOOKUP_KEY_ALL_ON );
    key3 : ST_IEC870_5_101HashTableKey := ( eType := M_DP_NA_1, asduAddr := 11, objAddr := 200, group := IEC870_GRP_INROGEN, lookup := IEC870_LOOKUP_KEY_ALL_ON );
    key4 : ST_IEC870_5_101HashTableKey := ( eType := M_IT_NA_1, asduAddr := 11, objAddr := 800, group := IEC870_GRP_REQCOGEN, lookup := IEC870_LOOKUP_KEY_ALL_ON );
    
    nError  : UDINT;
END_VAR
IF bLookup THEN
    bLookup := FALSE;
    
    IF ( nError := F_iecLookupTableEntry( key := key1, hTable := hTable ) ) <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecLookupTableEntry(key1) error: %s', 
                    DWORD_TO_HEXSTR( nError, 8, FALSE) );
    END_IF

    IF ( nError := F_iecLookupTableEntry( key := key2, hTable := hTable ) ) <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecLookupTableEntry(key2) error: %s', 
                    DWORD_TO_HEXSTR( nError, 8, FALSE) );
    END_IF
    
    IF ( nError := F_iecLookupTableEntry( key := key3, hTable := hTable ) ) <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecLookupTableEntry(key3) error: %s', 
                    DWORD_TO_HEXSTR( nError, 8, FALSE) );
    END_IF

    IF ( nError := F_iecLookupTableEntry( key := key4, hTable := hTable ) ) <> 0 THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecLookupTableEntry(key4) error: %s', 
                    DWORD_TO_HEXSTR( nError, 8, FALSE) );
    END_IF
END_IF

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.4012.0

PC oder CX (x86, x64, ARM)

Tc2_IEC60870_5_10x (Communication->IEC60870)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)