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_VAR
Inputs/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_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
Requirements
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) |