F_iecInitAOEntry
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.
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
Eingänge
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 (x86 Plattform => 32 Bit, x64 Plattform => 64 Bit).
bitOffs: TwinCAT SPS-Prozessdaten-Bit-Offset.
Beispiel in ST
Im folgenden Beispiel werden einige 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_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
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.4012.0 |
PC oder CX (x86, x64, ARM) |
Tc2_IEC60870_5_10x (Communication->IEC60870) |