ST_IEC870_5_102TBuffer
Diese Datenstruktur wird beim Datenaustausch (TX/RX-Datenpuffer) über das IEC60870-5-102 Serial Link Interface benutzt.
TYPE ST_IEC870_5_102TBuffer :
STRUCT
eDbg : E_IEC870_5_101FifoDbgFlags :=eIEC870_FIFO_DBG_OFF; (* enable/disable log view hex output *)
eAsduAddrSize : E_IEC870_5_101AsduAddrSize;(* Common ASDU address field size (1..2 octets) *)
asduSize : BYTE := 253; (* max. length of ASDU data ( IEC 60870-5-101/102/103 = 253 octets, IEC 60870-5-104 = 249 octets )*)
mode : DWORD := 0;
dataLink : ST_IEC870_5_101DataLink; (* internal tx/rx buffer *)
ND_STRUCT
END_TYPE
eDbg: Debug-Ausgabe-Parameter.
eAsduAddrSize: Oktetlänge der gemeinsamen ASDU addresse.
asduSize: Maximale Bytelänge der ASDU.
mode: Reserviert, wird zurzeit nicht benutzt. Dieser Wert sollte Null sein.
dataLink: Auf die Elemente dieser Datenstruktur sollte nicht direkt, sondern nur mit einer Instanz des FB_IEC870_5_102TBufferCtrl-Funktionsbausteins zugegriffen werden.
Der TX/RX-Datenpuffer verwendet intern zwei Sende-Fifos und einen Empfangs-Fifo:
- Class 1 Sende-Fifo mit (hochprioren) Daten;
- Class 2 Sende-Fifo mit (niederprioren) Daten;
- Receive-Fifo (für Class 1 und Class 2 Daten);
Die unteren Transportfunktionen der Bibliothek leeren zuerst den Class 1-Fifo und dann den Class 2-Fifo. Die Class 2 Daten werden nur dann versendet, wenn der Class 1-Fifo keine zu versendenden Daten enthält.
Jeder der internen Fifos hat eine feste Größe von 10000 Bytes. Erfahrungsgemäß können in jedem Fifo ca. 200 ASDUs mit einem Informations-Element (Objekt) mit der maximalen Grösse oder ca. 20 ASDUs mit einer Sequence von 100 Informations-Elementen (Objekten) abgelegt werden.
Wenn eine größere Anzahl der zu versendenden oder zu empfangenen Frames zwischengespeichert werden soll (z.B. ~20000), so können diese in externen, vom SPS-Programmierer festgelegten Puffern/Fifos zwischengehalten werden. Die SPS-Applikation kann dann zur Laufzeit die TwinCAT-Sende-Fifos mit den eigenen Fifo-Einträgen nachfüllen oder bei vielen empfangenen Frames den TwinCAT-Receive-Fifo leeren. Eine andere Möglichkeit ist z.B. zwei Puffer zu benutzen und diese abwechselnd zu füllen/lesen und an den Kommunikationsbaustein übergeben.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.10 Build >= 1319 | PC oder CX (x86, ARM) | TcIEC870_5_102Link.Lib |