TCP_CONNECT
Abre uma conexão TCP/IP com um IP e uma porta especificados, usando um socket configurado como cliente TCP, com opção de reconexão automática. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
TCP_CONNECT
+-----------------+
BOOL ----|START EVT|---- BOOL
| |
USINT ----|SOCK CONNECTED|---- BOOL
| |
UDINT ----|IP RESULT|---- UINT
| |
UINT ----|PORT CONN_CNT|---- UINT
| |
BOOL ----|AUTO |
| |
UINT ----|RETRY |
+-----------------+
O bloco necessita de uma transição de subida em START para iniciar a tentativa
de conexão. Sem autoconexão, cada nova tentativa exige uma nova transição de subida.
Com autoconexão (AUTO = TRUE), basta uma transição de subida para que o bloco tente
se conectar periodicamente ao IP e porta destino configurados.
SOCK especifica o canal de comunicação (socket) por um identificador numérico. Os
identificadores pertencem ao namespace HILS (tipo COMM_CHAN_ID da biblioteca
HI_STD):
Label |
ID |
Canal |
|---|---|---|
|
0 .. 7 |
Canais seriais |
|
8 .. 15 |
Sockets TCP/IP (Ethernet 1) |
|
16 .. 23 |
Sockets TCP/IP (Ethernet 2) |
Cada equipamento possui apenas um subconjunto desses recursos; consulte o manual do equipamento para saber quais sockets estão efetivamente disponíveis para conexão TCP/IP.
Se IP e PORT forem iguais a zero, o bloco utiliza os valores configurados nos
campos “Endereço IP” e “Porta” da área “Cliente Remoto Default” da base de setup do
usuário. Para se conectar a outros destinos, informe os valores diretamente em IP e
PORT (ex.: IP 192.168.0.199 = 16#C0A8_00C7; porta 502 = 16#1F6).
Com AUTO = TRUE, se o processo de conexão falhar, o bloco abre uma nova conexão
quando o tempo configurado em RETRY (em segundos) transcorrer.
Um pulso em EVT é gerado sempre que houver alteração no estado de conexão do socket.
Durante esse pulso, RESULT e CONNECTED estão atualizados e podem ser avaliados.
CONNECTED reflete o estado corrente da conexão: quando ativo, há conexão TCP/IP
aberta com o IP e porta. RESULT indica o código de retorno da última interação do
bloco com o driver de comunicação. CONN_CNT contabiliza o número de conexões
realizadas no modo de autoconexão (AUTO = TRUE) e é reinicializado com 0 quando
START for FALSE.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
START |
IN |
BOOL |
FALSE |
— |
Transição de subida inicia a tentativa de conexão com o IP e porta destino. |
SOCK |
IN |
USINT |
9 |
SOCK0_PORT_ID .. ETH2_SOCK7_PORT_ID |
Identificador do socket utilizado na tentativa de conexão. |
IP |
IN |
UDINT |
0 |
— |
IP destino (0 = usa o IP do Cliente Remoto Default). |
PORT |
IN |
UINT |
0 |
— |
Porta destino (0 = usa a porta do Cliente Remoto Default). |
AUTO |
IN |
BOOL |
FALSE |
— |
Habilita a autoconexão (reconexão periódica). |
RETRY |
IN |
UINT |
15 |
s |
Tempo para nova tentativa de conexão quando |
EVT |
OUT |
BOOL |
FALSE |
— |
Pulso indicando alteração no estado de conexão (processo concluído). |
CONNECTED |
OUT |
BOOL |
FALSE |
— |
Estado corrente de conexão do socket (TRUE = conexão aberta). |
RESULT |
OUT |
UINT |
0 |
ver Códigos de retorno |
Código de retorno da última interação com o driver de comunicação. |
CONN_CNT |
OUT |
UINT |
0 |
— |
Contador de conexões realizadas no modo de autoconexão. |
Códigos de retorno
RESULT carrega o código de retorno da última operação. Use os identificadores com o
namespace HILS (ex.: HILS.CO_CONEX_FAIL). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Conexão realizada com sucesso (ou evento de desconexão). |
5 |
GL_INV_PAR |
Socket indisponível no equipamento (parâmetro inválido). |
36 |
RE_INV_CFG |
Socket configurado como UDP ou como servidor (configurar como cliente TCP). |
63 |
CO_CONEX_FAIL |
Falha no processo de conexão (IP/porta indisponíveis no equipamento remoto). |
71 |
CO_CHA_OPE |
Socket já possui conexão ativa com IP/porta diferentes dos configurados. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O socket indicado em
SOCKdeve estar disponível no equipamento e configurado com protocolo de transporte TCP e no papel de Cliente.Com
IP/PORTiguais a zero, o “Cliente Remoto Default” deve estar configurado na base de setup do usuário.
Observações
Uma tentativa de conexão em um socket já ativo com o mesmo IP e porta mantém a conexão corrente (
RESULT= SUCCESS,CONNECTED= TRUE).Uma tentativa de conexão em um socket já ativo com IP/porta diferentes não fecha a conexão corrente (
RESULT= CO_CHA_OPE).Avalie
RESULTeCONNECTEDdurante o pulso deEVT.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
TCP_CONN : HILS.TCP_CONNECT; (* Instancia do bloco de conexao TCP *)
CONN_START : BOOL := FALSE;
AUTOCONNECT : BOOL := FALSE;
STS_CONNECTION : BOOL := FALSE;
PORT_DEST : UINT := 16#29A;
IP_DEST : UDINT := 16#C0A800C7;
END_VAR
(* Exemplo do bloco de abertura de conexao *)
TCP_CONN(
START := CONN_START,
SOCK := HILS.SOCK7_PORT_ID,
IP := IP_DEST, (* IP: 192.168.0.199 *)
PORT := PORT_DEST, (* Porta: 666 *)
AUTO := AUTOCONNECT
(* RETRY - Mantem a entrada com o valor default (15 segundos) *)
);
(* Avalia o resultado da tentativa de conexao *)
IF (TCP_CONN.EVT) THEN
STS_CONNECTION := TCP_CONN.CONNECTED;
IF (TCP_CONN.RESULT = HILS.SUCCESS) THEN
(* Conexao realizada com sucesso *)
ELSE
(* Falha no processo de conexao *)
END_IF;
END_IF;