TCP_CONNECT
A função deste bloco é abrir uma conexão TCP com um IP e porta especificados.
Bloco
TCP_CONNECT
+-----------------+
BOOL ----|START EVT|---- BOOL
| |
USINT ----|SOCK CONNECTED|---- BOOL
| |
UDINT ----|IP RESULT|---- UINT
| |
UINT ----|PORT CONN_CNT|---- UINT
| |
BOOL ----|AUTO |
| |
UINT ----|RETRY |
+-----------------+
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
FALSE |
Inicia a tentativa de conexão com o IP e porta destino |
|
SOCK |
Entrada |
USINT |
9 |
Socket a ser utilizado para tentativa de conexão |
|
IP |
Entrada |
UDINT |
0 |
IP destino |
|
PORT |
Entrada |
UINT |
0 |
Porta destino |
|
AUTO |
Entrada |
BOOL |
FALSE |
Habilita autoconexão |
|
RETRY |
Entrada |
UINT |
15 |
Tempo em segundos para tentar novamente conexão se AUTO_CON habilitado |
|
EVT |
Saída |
BOOL |
FALSE |
Pulso de processo concluído |
|
CONNECTED |
Saída |
BOOL |
FALSE |
Indica status de conexão do socket |
|
RESULT |
Saída |
UINT |
0 |
Resultado da operação |
|
CONN_CNT |
Saída |
UINT |
0 |
Contador de conexões realizadas |
START
O bloco necessita de uma transição de subida para iniciar a tentativa de conexão. Se não tiver autoconexão configurada, uma nova transição de subida deve ser gerada para que o bloco tente se conectar novamente. Caso haja autoconexão, basta uma transição de subida para que o bloco tente se conectar periodicamente ao IP e porta destinos configurados.
SOCK
O canal de comunicação utilizado é especificado por um identificador (valor númerico) conforme indicado na tabela a seguir:
ID |
LABEL [4] |
Tipo de canal de comunicação [5] |
|---|---|---|
9 |
SOCK1_PORT_ID |
Identificador do socket 1 |
10 |
SOCK2_PORT_ID |
Identificador do socket 2 |
11 |
SOCK3_PORT_ID |
Identificador do socket 3 |
12 |
SOCK4_PORT_ID |
Identificador do socket 4 |
13 |
SOCK5_PORT_ID |
Identificador do socket 5 |
14 |
SOCK6_PORT_ID |
Identificador do socket 6 |
15 |
SOCK7_PORT_ID |
Identificador do socket 7 |
Essa tabela considera até 7 sockets TCP para o canal Ethernet, mas deve-se verificar no equipamento utilizado os canais de comunicação efetivamente disponíveis para conexão TCP/IP.
Cada equipamento possui um sub-conjunto dos recursos de comunicação indicados na tabela acima. Para identificar quais recursos estão disponíveis em um dado equipamento, consulte o manual do mesmo. |
IP e PORT
Caso esses parâmetros sejam configurados iguais a zero, o bloco irá utilizar os valores configurados nos campos “Endereço IP” e “Porta” da área “Cliente Remoto Default” da base de setup do usuário. Caso seja necessário se conectar a mais de um endereço IP ou porta, deve-se configurar nas entradas PORT e IP os valores.
A tabela a seguir apresenta um exemplo de configuração de valores.
Entrada |
Valor |
Valor em Hexa |
IP_DEST |
192.168.0.199 |
16#C0A8_00C7 |
PORT_DEST |
502 |
16#1F6 |
AUTO e RETRY
É possível ativar auto-conexão no bloco mantendo a entrada AUTO igual a TRUE. Se a entrada de auto-conexão estiver ativada e o processo de conexão falhou, o bloco irá abrir uma nova conexão quando o tempo configurado em RETRY transcorrer.
EVT
Um pulso em EVT será gerado sempre que o houver alguma alteração no estado de conexão do socket especificado. Durante este pulso o parâmetro RESULT e o parâmetro CONNECTED estarão atualizados e podem ser avaliados.
CONNECTED
A saída CONNECTED reflete o estado corrente de conexão do socket associado ao bloco. Quando ativa indica que existe conexão TCP/IP aberta do socket com o PORT e IP.
RESULT
A saída RESULT indica o código de retorno da última interação do bloco com o driver de comunicação.
A tabela abaixo apresenta alguns eventos e os respectivos valores das saídas RESULT e CONNECTED associados.
RESULT |
LABEL [6] |
CONNECTED |
Evento |
Observação |
|---|---|---|---|---|
0 |
SUCCESS |
TRUE FALSE TRUE |
Conexão ocorreu com SUCESSO Evento de desconexão Tentativa de conexão utilizando socket com conexão ativa, conexão ativa possui |
Mantém a conexão corrente |
mesmo IP e porta destino configurados no bloco |
||||
5 |
HIS_GL_INV_PAR |
FALSE |
Tentativa de conexão com socket indisponível no equipamento |
|
36 |
HIS_RE_INV_CFG |
FALSE |
Tentativa de conxão utilizando socket configurado como UDP |
Configurar socket com protocolo de transporte TCP |
Tentativa de conexão utilizando socket configurado como servidor |
Configurar socket como Cliente |
|||
63 |
HIS_CO_CONEX_FAIL |
FALSE |
Tentativa de conexão com IP e porta indisponíveis no equipamento remoto |
|
71 |
HIS_CO_CHA_OPE |
FALSE |
Tentativa de conexão utilizando socket com conexão ativa, IP e porta |
Não fecha a conexão |
configurados no bloco diferentes dos configurados na conexão ativa |
Este texto pode ser utilizado como parâmetro pois esta definido no tipo COMM_CHAN_ID disponível na biblioteca HI_STD |
CONN_CNT
A saída CONN_CNT contabiliza o número de conexões realizadas quando o bloco esta no modo de operação com auto conexão (AUTO = TRUE). Este valor é inicializado com 0 quandoo sinal START for FALSE.
Exemplo
Declaração de Variáveis
Nome |
Classe |
Tipo |
Valor Inicial |
|---|---|---|---|
TCP_CONN |
Entrada |
TCP_CONNECT |
|
CONN_START |
Local |
BOOL |
FALSE |
AUTOCONNECT |
Local |
BOOL |
0 |
STS_CONNECTION |
Local |
BOOL |
FALSE |
PORT_DEST |
Local |
UINT |
16#29A |
IP_DEST |
Local |
UDINT |
16#C0A800C7 |
Código ST
// Exemplo do bloco de abertura de conexão
TCP_CONN(
START := CONN_START,
SOCK := SOCK7_PORT_ID,
IP := IP_DEST, // Ip: 192.168.0.199
PORT := PORT_DEST, // Porta: 502
AUTO := AUTOCONNECT
// RETRY - Mantem a entrada com o valor default (15 segundos)
);
// Tenta abrir a conexao
IF (TCP_CONN.EVT) THEN
IF (TCP_CONN.RESULT == SUCCESS) THEN
// Conexão realizada com sucesso
ELSE
// Falha no processo de conexão
END_IF;
END_IF;