ST_IEC870_5_101TBuffer
Ab der Produktversion: TwinCAT PLC Library IEC60870-5-104 Unterstation v2.0.6 / IEC60870-5-101 Unterstation v2.0.2 und höher.
Diese Datenstruktur wird beim Datenaustausch (TX/RX-Datenpuffer) über das IEC60870-5-104/101 Transport Interface benutzt.
TYPE ST_IEC870_5_101TBuffer :
STRUCT
eDbg : E_IEC870_5_101FifoDbgFlags :=eIEC870_FIFO_DBG_OFF; (* enable/disable log view hex output *)
asduFmt : ST_IEC870_5_101AsduFmtParams; (* ASDU frame format parameters *)
asduSize : BYTE := 0; (* max. length of ASDU data *)
mode : DWORD := 0; dataLink : ST_IEC870_5_101DataLink; (* internal tx/rx buffer *)
bOverwrite : BOOL := FALSE;(* TRUE = Overwrite oldest entry, FALSE = don't overwrite *)
END_STRUCT
END_TYPE
eDbg: Debug-Ausgabe-Parameter.
asduFmt: ASDU-Formatparameter.
asduSize: Maximale Bytelänge der ASDU.
mode: Reserviert, wird zur Zeit 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_101TBufferCtrl-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. Dies dürfte für die meisten Anwendungen ausreichen, weil die Anzahl der Frames die einmalig verschickt, werden können durch die iK und iW-Protokollparameter begrenzt wird. Erfahrungsgemäß können in jedem Fifo ca. 200 ASDUs mit einem Informations-Element (Objekt) 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.
bOverwrite: Implementiert ab IEC870-5-104 Slave Library v3.0.14 und höher. Aktiviert/deaktiviert das Überschreiben der ältesten Meldungen im Sendepuffer bei der Überschreitung der max. zulässigen Puffergröße. Dieser Parameter sollte nur im Offline-Mode aktiviert werden (d.h. wenn die Verbindung unterbrochen wurde) und wenn Offline-Datenspeicherung zusätzlich über den bRetainBuffer-Parameter in den Protokollparametern (ST_IEC870_5_10xProtPara) aktiviert wurde. Im Online-Mode (d.h. wenn der Datentransfer gestartet wurde) sollten keine älteren Meldungen überschrieben werden (sonst fehlen möglicherweise einige Zwischenwerte).
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.10.0 Build >= 1301 | PC oder CX (x86) CX (ARM) | TcIEC870_5_101.Lib |