ST_IEC870_5_104ProtocolParams

Syntax

TYPE ST_IEC870_5_104ProtocolParams :
STRUCT
    t0           : TIME := T#30s;
    t1           : TIME := T#15s;
    t2           : TIME := T#10s;
    t3           : TIME := T#20s;
    iK           : INT := 12;
    iW           : INT := 8;

    bSFrameACK   : BOOL := TRUE;
    bTESTFRAct   : BOOL := TRUE;
    bDTControlled: BOOL := TRUE;
    bControlDT   : BOOL := FALSE;

    bSTARTDTCon  : BOOL := TRUE;
    bSTOPDTCon   : BOOL := TRUE;
    bTESTFRCon   : BOOL := TRUE;

    eAcceptMode  : E_SocketAcceptMode := eACCEPT_ALL;
    sRemoteHost  : STRING(15) := '';
    nRemotePort  : UDINT := 0;

    APDULength   : BYTE(MIN_IEC870_5_104_APDULEN..MAX_IEC870_5_104_APDULEN) := MAX_IEC870_5_104_APDULEN;
    bThrottleMode: BOOL := FALSE;
    bPackFrames  : BOOL := FALSE;
    bRetainBuffer: BOOL := FALSE;
    bCOTFilter   : BOOL := TRUE;
    cotFilter    : T_IEC870_5_101COTBits := 2#10001111, 7(16#FF);
    eSwitchMode  : E_IEC870_5_104GrpSwitchMode := eIEC870_SWITCHMODE_OFF;
END_STRUCT
END_TYPE

t0 : Zykluszeit für Verbindungsversuche (nur Leitstation).

t1 : Max. Timeout-Zeit für eine Antwort auf ein STARTDTAct-, STOPDTAct- oder TESTFRAct-Frame.

t2 : Spätestens nach dieser Zeit wird ein S-Frame versendet.

t3 : Spätestens nach dieser Zeit wird ein Test-Frame versendet.

iK : Spätestens nach diesem gesendeten APDUs im I-Format, welches nicht quittiert wurde, wird die Verbindung geschlossen.

iW : Spätestens nach dem Empfang von w APDUs im I-Format quittiert der Empfänger den Empfang.

bSFrameACK : Sende S-Frames.

bTESTFRAct : Sende Test-Frames.

bDTControlled : Warte auf STARTDT-, STOPDT-Frame vom Master.

bControlDT : Nur bei der Masterkonfiguration: Sende STARTDT zum Slave.

bSTARTDTCon : Sende STARTDT Bestätigung

bSTOPDTCon : Sende STOPDT Bestätigung.

bTESTFRCon : Sende TESTFR Bestätigung.

eAcceptMode : Legt fest ob Verbindungen zu allen Remote-Clients, oder nur zu Clients mit bestimmter Host- und Port-Adresse zugelassen werden sollen. Default: Akzeptiere alle ankommenden Verbindungen. Auf der Seite der Unterstation funktioniert dies nur bei einer logischen Verbindung.

sRemoteHost : Host-Adresse des Remote-Clients. Bei eAcceptMode = eACCEPT_ALL wird dieser Parameter ignoriert.

nRemotePort : Port-Adresse des Remote-Clients. Bei eAcceptMode = eACCEPT_ALL wird dieser Parameter ignoriert.

APDULength : Maximale Länge der APDU. Defaultwerte:

Max. length of APDU = 255 bytes - 1 start octet - 1 length octet = 253 octets;
Max. length of ASDU = 253 - 4 control octets = 249 octets;

bThrottleMode: Die TCP/IP sockets werden pollend aus der SPS abgefragt. Mit diesem Parameter kann die Anzahl der pollenden Lesezugriffe und damit auch die Systemauslastung reduziert werden, besonders dann wenn nur selten Daten empfangen werden (z.B. Generalabfrage oder Uhrzeitsynchronisationsbefehle).

bPackFrames: Per Default wird mit einem TCP/IP-Send-Aufruf nur eine einzelne APDU verschickt. Wenn Sie diesen Parameter auf TRUE setzen, können Sie die Sende-Performance wesentlich erhöhen und so die Sende-Buffer-Überläufe verringern.

bRetainBuffer: In der Standardeinstellung (FALSE) werden die internen Tc/Rx-Puffer beim Verbindungsabbruch gelöscht. Wenn dieses Flag auf TRUE gesetzt ist dann werden die noch nicht gesendeten ASDU's im internen Sendepuffer nicht gelöscht. Somit ist eine Offline-Pufferung von von ca. 100-200 Messwerten (abhängig von der ASDU-Größe) im RAM-Speicher möglich. Die Station entfernt immer dann die ASDUs aus dem Sendepuffer wenn deren Empfang bestätigt wurde. Bitte beachten Sie, dass die bereits gesendeten aber noch nicht bestätigten ASDUs auch im Puffer verbleiben und nächstes Mal erneut gesendet werden. Möglicherweise empfängt die andere Station dann die Werte zwei Mal. Sie können dieses Verhalten über zwei weitere Parameter: bCOTFilter und cotFilter konfigurieren.

bCOTFilter: Aktiviert/deaktiviert die Filtermaske mit den Übertragungsursachen. Dieser Parameter ist nur dann gültig wenn auch der bRetainBuffer-Parameter auf TRUE gesetzt wurde. Bei jedem neuen Verbindungsaufbau wird intern eine SessionID hochgezählt. Diese SessionID wird immer an die empfangenen und gesendeten ASDUs angehängt. Dadurch können die ASDUs die noch nicht gesendet wurden und im Offline-Puffer verbleiben der alten Verbindung zugeordnet werden. Diese ASDUs können dann mit Hilfe der COT-Maske (cotFilter) gefiltert und verworfen werden (COT = cause of transfer). Dies ist manchmal notwendig wenn der andere Kommunikationspartner die wiederholten ASDUs nicht akzeptiert.

cotFilter: Filtermaske mit Übertragungsursachen (COT = Cause of transfer). Dieser Parameter ist nur dann gültig wenn auch der bRetainBuffer-Parameter und bCOTFilter-Parameter gesetzt wurde. Die Übertragungsursache der zu sendenden ASDUs wird nur dann geprüft wenn deren SessionID nicht zu der aktuellen SessionID passt (d.h. die ASDUs die aus der vorherigen Verbindung stammen). Jedes Bit entspricht einer Übertragungsursache. Die Übertragungsursache wird nur dann überprüft wenn das entsprechende Bit gesetzt wurde.

Die Übertragungsursachen sind auf folgende Weise in den Bits kodiert:

cotFilter[0].7 = eIEC870_COT_UNUSED
cotFilter[0].6 = eIEC870_COT_CYCLIC
cotFilter[0].5 = eIEC870_COT_BACKGROUND
cotFilter[0].4 = eIEC870_COT_SPONTAN
cotFilter[0].3 = eIEC870_COT_INIT
cotFilter[0].2 = eIEC870_COT_REQ
cotFilter[0].1 = eIEC870_COT_ACT
cotFilter[0].0 = eIEC870_COT_ACT_CON
cotFilter[1].7 = eIEC870_COT_DEACT
cotFilter[1].6 = eIEC870_COT_DEACT_CON
cotFilter[1].5 = eIEC870_COT_ACT_TERM

... usw.

Default: Filtern von COT: eIEC870_COT_CYCLIC oder eIEC870_COT_BACKGROUND oder eIEC870_COT_SPONTAN aktiviert.

eSwitchMode : Redundanzgruppe-Umschaltmodus (reserviert).

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.4012.0

PC oder CX (x86, x64, ARM)

Tc2_IEC60870_5_10x (Communication->IEC60870)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)