F_iecInitAOEntry
![F_iecInitAOEntry 1:](Images/gif/984883211__en-US__Web.gif)
The function F_iecInitAOEntry configures the application objects (single points, double points, measured values...) in the application database as linear table entries. The table element (array element) to be configured must be transferred to the function as a VAR_IN_OUT function parameter.
Syntax
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 : UXINT := 0;
bitOffs : UDINT := 0;
END_VAR
VAR_IN_OUT
dbEntry : ST_IEC870_5_101AODBEntry;
END_VAR
Inputs
eType: Application object type, ASDU identifier (e.g.: M_SP_NA_1 for single-point or M_DP_NA_1 for double point).
objAddr: Object address, freely selectable.
group: Object group configuration flags. A description of all group flags can be found here. The flags can be combined with an OR operation. Not all combinations are meaningful!
multiplier: Basic cycle time multiplier for cyclic/periodic data transfer. 0 = deactivated. The basic cycle time can be configured via the tPerCyclicBase parameter in the system parameters.
ioMapType: TwinCAT PLC process data area. This parameter defines the mapping for the TwinCAT PLC and IEC application object process data.
byteOffs: TwinCAT PLC process data byte offset (x86 platform => 32 bit, x64 platform => 64 bit).
bitOffs: TwinCAT PLC process data bit offset.
Sample in ST
In the following sample some data points are configured as linear table entries.
eType | objAddr | group | multiplier | ioMapType | byteOffs | bitOffs |
---|---|---|---|---|---|---|
M_SP_NA_1 | 100 | IEC870_GRP_INRO1 | 0 | MAP_AREA_MEMORY | 100 | 0 |
M_SP_TB_1 | 101 | IEC870_GRP_INRO1 | 0 | MAP_AREA_MEMORY | 101 | 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
MAX_TABLE_IDX : INT := 49;
END_VAR
PROGRAM P_iecInitAOEntry
VAR_IN_OUT
AODB : ARRAY[1..MAX_TABLE_IDX] OF ST_IEC870_5_101AODBEntry;
END_VAR
VAR
bInit : BOOL := TRUE;
nError : UDINT;
END_VAR
IF bInit THEN
bInit := FALSE;
IF ( nError := 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[1] ) ) <> 0 THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecInitAOEntry() error: %s',
DWORD_TO_HEXSTR( nError, 8, FALSE ) );
END_IF
IF ( nError := F_iecInitAOEntry ( eType := M_SP_TB_1,
objAddr := 101,
group := IEC870_GRP_INRO1,
multiplier := 0,
ioMapType := MAP_AREA_MEMORY,
byteOffs := 101,
bitOffs := 0,
dbEntry := AODB[2] ) ) <> 0 THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecInitAOEntry() error: %s',
DWORD_TO_HEXSTR( nError, 8, FALSE ) );
END_IF
IF ( nError := 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[3] ) ) <> 0 THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecInitAOEntry() error: %s',
DWORD_TO_HEXSTR( nError, 8, FALSE ) );
END_IF
IF ( nError := 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[4] ) ) <> 0 THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'F_iecInitAOEntry() 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) |