FB_IEC870_5_104Slave

Mit einer Instanz des Funktionsbausteins FB_IEC870_5_104Slave kann in der TwinCAT SPS eine IEC60870-5-104 Unterstation (Slave, High-Level) implementiert werden. Eine Instanz des Funktionsbausteins kann nur eine Verbindung zu einem Master aufbauen.
![]() | Wenn Sie redundante Systeme mit zwei oder mehr Verbindungen zum Master realisieren wollen, benutzen Sie bitte den FB_IEC870_5_104SlaveGrp-Funktionsbaustein. |
VAR_IN_OUT
VAR_IN_OUT
hServer : T_HSERVER;
END_VAR
hServer: TCP/IP Server-Handle. Die internen Parameter der Server-Handle-Variable müssen vorher mit der Funktion F_CreateServerHnd initialisiert werden.
VAR_INPUT
VAR_INPUT
protPara : ST_IEC870_5_104ProtocolParams;
sysPara : ST_IEC870_5_101SystemParams;
pAOEntries : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF ST_IEC870_5_101AODBEntry := 0;
cbAOEntries : UDINT := 0;
pInputs : PVOID := 0;
cbInputs : UDINT := 0;
pOutputs : PVOID := 0;
cbOutputs : UDINT := 0;
pMemory : PVOID := 0;
cbMemory : UDINT := 0;
pData : PVOID := 0;
cbData : UDINT := 0;
bEnable : BOOL := TRUE;
END_VAR
protPara: IEC 60870-5-104-Protokolparameter.
sysPara: Systemparameter.
pAOEntries: Adresse der ersten Applikationsobjekt-Datenbankvariablen.
cbAOEntries: Bytegröße der Applikationsobjekt-Datenbankvariablen.
pInputs: Adresse des SPS-Prozessdatenbereichs der Eingänge.
cbInputs: Bytegröße des SPS-Prozessdatenbereichs der Eingänge.
pOutputs: Adresse des SPS-Prozessdatenbereichs der Ausgänge.
cbOutputs: Bytegröße des SPS-Prozessdatenbereichs der Ausgänge.
pMamory: Adresse des SPS-Prozessdatenbereichs der Merker.
cbMamory: Bytegröße des SPS-Prozessdatenbereichs der Merker.
pData: Adresse des SPS-Datenbereichs.
cbData: Bytegröße des SPS-Datenbereichs.
bEnable: Aktiviert/Deaktiviert den Funktionsbaustein (Kommunikation und Verbindung).
Die Adressen können mit dem ADR- und die Bytegrößen mit dem SIZEOF-Operator ermittelt werden.
VAR_OUTPUT
VAR_OUTPUT
system : ST_IEC870_5_104SystemInterface;
eConnState : E_SocketConnectionState := eSOCKET_DISCONNECTED;
eDTState : E_IEC870_5_104DataTransferState := eIEC870_STOPDT;
END_VAR
system: System-Interface. Diese Variable dient anderen IEC-Applikationsfunktionen als Kommunikationsschnittstelle zum IEC-Gerät (hier: Unterstation).
- Membervariable system.device wird z.B. von der F_iecSetAOQuality-Funktion als VAR_IN_OUT-Parameter erwartet.
- Membervariable system.device.errors ist ein Gerätefehler-Fifo. Die registrierten Fehler können von der SPS-Applikation ausgelesen und ausgewertet werden.
eConnState: Status der TCP/IP-Verbindung zum Master.
eDTState: Status des IEC 60870-5-104-Datenaustauschs (STARTDT, STOPDT)
Beispiele (High-Level Interface):
Weitere Beispiele:
Aufruf in FUP:
PROGRAM test
VAR
AODB : ARRAY[0..49] OF ST_IEC870_5_101AODBEntry;
inputs AT%IB0 : ARRAY[0..999] OF BYTE;
outputs AT%QB0 : ARRAY[0..999] OF BYTE;
memory AT%MB0 : ARRAY[0..999] OF BYTE;
data : ARRAY[0..999] OF BYTE;
hServer : T_HSERVER;
server : FB_IEC870_5_104Slave;
bEnable : BOOL := TRUE;
protPara : ST_IEC870_5_104ProtocolParams;
sysPara : ST_IEC870_5_101SystemParams := ( asduAddr := 7 );
eConnState : E_SocketConnectionState;
eDTState : E_IEC870_5_104DataTransferState;
bError : BOOL;
iecError : ST_IEC870_5_101ErrorFifoEntry;
END_VAR
Im folgenden Beispiel wird der Gerätefehler-Fifo zyklisch ausgelesen und die registrierten Fehler ins TwinCAT XAE->"Error List"-Fenster geschrieben.
REPEAT
server.system.device.errors.RemoveError( getError=>iecError, bOk=>bError );
IF bError THEN
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'IEC 60870-5-104 slave error: 0x%s',
DWORD_TO_HEXSTR( iecError.nErrId, 8, FALSE) );
END_IF
UNTIL NOT bError
END_REPEAT
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.4012.0 |
PC oder CX (x86, x64, ARM) |
Tc2_IEC60870_5_10x (Communication->IEC60870) |