F_iecLookupTableEntry
The function F_iecLookupTableEntry checks whether a table entry matching the key already exists.
Syntax
FUNCTION F_iecLookupTableEntry: UDINT
VAR_INPUT
key : ST_IEC870_5_101HashTableKey;
END_VAR
VAR_IN_OUT
hTable : T_HAODBTable;
ENd_VARInputs/outputs
hTable: Application object database handle (hash table handle). The table handle must be initialized once with the function F_iecCreateTableHnd before it can be used.
Return value
Return parameter | Description |
|---|---|
0 | No error. A table entry matching the key exists. |
<> 0 | No table entry was found. Error: IEC60870-5-10x error code |
Sample in ST
The existence of data points in the application database is checked. The associated data points have already been configured as hash table entries. See the description of the function: 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_VARVAR
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_VARIF 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_IFRequirements
Development environment | Target system type | PLC libraries to be linked (category group) |
|---|---|---|
TwinCAT v3.1.4012.0 | PC oder CX (x86, x64, Arm®) | Tc2_IEC60870_5_10x (Communication->IEC60870) |
Inputs