TCPDataExchServer, troca de dados TCP (Server)

Lista

Esta página faz parte do Manual de Programação IEC 61131-3. Acesse o índice.

Este bloco de função de executar na tarefa Voltar, gerencia a troca de dados pela rede TCP agindo como um servidor aceitando conexões de nós clientes gerenciados pelo FB TCPDataExchClient. Ativando o FB escuta o servidor na porta definida em Port, o servidor aceita o número simultâneo de conexões de clientes definidos em Connections. em DEDefs é necessário definir o endereço do array de estruturas TCPDEXCHNODEDEFS que identificam os nós escravos que podem se conectar ao servidor.

A gestão da comunicação será gerida através das variáveis ​​na estrutura de dados. Quando um cliente se conecta, ele é procurado no array indicado por DEDefs il NodeID da mensagem recebida e os dois sistemas "ligam" à troca de dados, o bit Active será ativado.

Para enviar dados para o sistema do cliente, o bit deve estar ativado TxData, o bit é redefinido automaticamente no final da transmissão. Se o bit estiver ativo AutoTxD mediante variação dos dados no buffer Tx, os dados são automaticamente enviados para o cliente. Ao receber dados de um cliente, teremos o pouco RxOk ativo para um loop.

Círculo de Informação

Bloqueio de função

CoDeSys: Indisponível

Laboratório de lógica: eLLabDataExchLib

descrição

Enable (BOOL) Comando de ativação do servidor.
SpyOn (BOOL) Se ativo, permite que você espione o funcionamento do FB.
Port (UINT) Porta TCP na qual escutar o servidor.
Connections (UDINT) Número de conexões do FB TCPDataExchClient projetos contemporâneos.
DEDefs (@TCPDEXCHNODEDEFS) Endereço de alocação de matriz de estrutura TCPDEXCHNODEDEFS definição de nós do cliente.
Enabled (BOOL) Bloqueio de funções ativado.
Fault (BOOL) Ativo para um loop em caso de erro de gerenciamento.

Imagem FB TCPDataExchServer

Gatilho espião

Se SpyOn ativo, você pode usar o console espião para verificar o funcionamento do FB. Existem vários níveis de gatilhos.

Níveis de gatilho
Gatilhodescrição
16 00000001 #Rx: Sequências de recepção de quadros.
16 00000002 #Tx: Sequências de transmissão de quadros.
16 40000000 #Er: Erros de execução.

Exemplos

Como usar os exemplos.
O programa gerencia a troca de dados agindo como um servidor que escuta a porta 10000, é possível conectar até 2 dispositivos clientes (consulte o programa de exemplo em Neste artigo) e troque dados entre eles. Os sistemas clientes precisarão enviar dados se identificando com os números de nó 1 e 2.

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]
Esse artigo foi útil?