TCPDataExchServer, TCP-Datenaustausch (Server)

Liste

Diese Seite ist Teil der IEC 61131-3 Programmierhandbuch. Gehen Sie zum Index.

Dieser Funktionsbaustein aus Ausführen in Aufgabe Zurück, verwaltet den Datenaustausch über das TCP-Netzwerk, indem es als Server fungiert, indem es Verbindungen von Client-Knoten akzeptiert, die vom FB verwaltet werden TCPDataExchClient. Durch die Aktivierung der FB lauscht der Server auf dem in definierten Port Portakzeptiert der Server die gleichzeitige Anzahl von Verbindungen von Clients, die in definiert sind Connections. in DEDefs Es ist notwendig, die Adresse des Arrays von Strukturen zu definieren TCPDEXCHNODEDEFS die die Slave-Knoten identifizieren, die eine Verbindung zum Server herstellen können.

Das Kommunikationsmanagement wird über die Variablen in der Datenstruktur verwaltet. Wenn ein Client eine Verbindung herstellt, wird er in dem durch angegebenen Array gesucht DEDefs il NodeID der empfangenen Nachricht und die beiden Systeme "binden" an den Datenaustausch das Bit Active wird aktiviert.

Um Daten an das Client-System zu senden, muss das Bit aktiviert sein TxDatawird das Bit am Ende der Übertragung automatisch zurückgesetzt. Wenn das Bit aktiv ist AutoTxD Bei Änderung der Daten im Tx-Puffer werden die Daten automatisch an den Client gesendet. Wenn wir Daten von einem Kunden erhalten, haben wir das Bit RxOk aktiv für eine Schleife.

Informationskreis

Funktionssperre

CODESYS: nicht verfügbar

LogikLab: eLLabDataExchLib

Beschreibung

Enable (BOOL) Befehl zur Serveraktivierung.
SpyOn (BOOL) Wenn aktiv, können Sie den Betrieb der FB ausspionieren.
Port (UINT) TCP-Port, auf dem der Server abgehört werden soll.
Connections (UDINT) Anzahl Verbindungen von FB TCPDataExchClient zeitgenössische Projekte.
DEDefs (@TCPDEXCHNODEDEFS) Adressstruktur-Array-Zuordnung TCPDEXCHNODEDEFS Definition von Client-Knoten.
Enabled (BOOL) Funktionssperre aktiviert.
Fault (BOOL) Aktiv für eine Schleife bei Verwaltungsfehler.

Image FB TCPDataExchServer

Auslöser ausspionieren

Se SpyOn Aktiv können Sie die Spionagekonsole verwenden, um die Funktion des FB zu überprüfen. Es gibt verschiedene Ebenen von Triggern.

Auslösepegel
AuslösenBeschreibung
16 # 00000001Rx: Frame-Empfangssequenzen.
16 # 00000002Tx: Frame-Übertragungssequenzen.
16 # 40000000Er: Ausführungsfehler.

Beispiele

Verwendung der Beispiele.
Das Programm verwaltet den Datenaustausch, indem es als Server fungiert, der den 10000 - Port überwacht. Es ist möglich, bis zu 2 - Client - Geräte zu verbinden (siehe Beispielprogramm in dieser Artikel) und tauschen Daten zwischen ihnen aus. Client-Systeme müssen Daten senden, die sich mit den 1- und 2-Knotennummern identifizieren.

LogicLab (Ptp171, ST_TCPDataExchServer)
PROGRAM ST_TCPDataExchServer
VAR
    C1RxBuffer : ARRAY[0..7] OF UINT; (* Rx buffer (Client 1) *)
    C1TxBuffer : ARRAY[0..7] OF UINT; (* Tx buffer (Client 1) *)
    C2RxBuffer : ARRAY[0..7] OF UINT; (* Rx buffer (Client 2) *)
    C2TxBuffer : ARRAY[0..7] OF UINT; (* Tx buffer (Client 2) *)
    DEDefs : ARRAY[0..1] OF TCPDEXCHNODEDEFS; (* Data exchange node definitions *)
    TCPServer : TCPDataExchServer; (* TCP data exchange server *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_TCPDataExchServer"
// *****************************************************************************
// The program instantiates a "TCPDataExchServer" FB. Up to 2 connections are
// accepted.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN

        // Set the client 1 definitions.

        DEDefs[0].NodeID:=1; //Node ID
        DEDefs[0].AutoTxD:=TRUE; //Automatic Tx data send
        DEDefs[0].RxBuffer:=ADR(C1RxBuffer); //Rx buffer address
        DEDefs[0].RxLength:=SIZEOF(C1RxBuffer); //Rx buffer length
        DEDefs[0].TxBuffer:=ADR(C1TxBuffer); //Tx buffer address
        DEDefs[0].TxLength:=SIZEOF(C1TxBuffer); //Tx buffer length
        DEDefs[0].TxHeartbeat:=10; //Tx heartbeat time (S)

        // Set the client 2 definitions.

        DEDefs[1].NodeID:=2; //Node ID
        DEDefs[1].AutoTxD:=TRUE; //Automatic Tx data send
        DEDefs[1].RxBuffer:=ADR(C2RxBuffer); //Rx buffer address
        DEDefs[1].RxLength:=SIZEOF(C2RxBuffer); //Rx buffer length
        DEDefs[1].TxBuffer:=ADR(C2TxBuffer); //Tx buffer address
        DEDefs[1].TxLength:=SIZEOF(C2TxBuffer); //Tx buffer length
        DEDefs[1].TxHeartbeat:=10; //Tx heartbeat time (S)

        // Server configuration.

        TCPServer.SpyOn:=TRUE; //Spy command
        TCPServer.Port:=10000; //Peer port
        TCPServer.Connections:=2; //Accepted connections
        TCPServer.DEDefs:=ADR(DEDefs); //Data exchange definitions
    END_IF;

    // -------------------------------------------------------------------------
    // DATA EXCHANGE SERVER
    // -------------------------------------------------------------------------
    // Manage data exchange server.

    TCPServer(Enable:=TRUE); //Manage the server

// [End of file]
War dieser Artikel hilfreich?