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) |