SCPHI_SERVER
Recebe de um cliente remoto um pacote de dados no protocolo SCP-HI, valida o pacote (CRC e endereço) e executa o comando associado, retornando ao cliente o resultado do processamento com eventuais dados solicitados; o canal utilizado deve estar configurado para protocolo ASCII (sem SOF e EOF). É 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
SCPHI_SERVER
+-----------------------+
BOOL ----|EN ENO|---- BOOL
| |
BOOL ----|START EVT|---- BOOL
| |
UINT ----|COMM_SRC LAST_RESULT|---- INT
| |
UINT ----|COMM_ADDR GOOD_PACKS|---- UDINT
| |
| BAD_PACKS|---- UDINT
+-----------------------+
Quando ativado, o bloco aguarda no canal especificado por COMM_SRC a recepção de um
pacote SCP-HI enviado pelo cliente. Recebido o pacote, seu CRC é validado e, se correto,
verifica-se se o endereço de comunicação do pacote coincide com COMM_ADDR ou com 255
(endereço global do protocolo). Validado o endereço, o comando do pacote é interpretado e
executado, e o resultado é incluído no pacote de resposta enviado ao cliente remoto.
A saída EVT gera um pulso ao final de toda transação endereçada ao equipamento; nesse
instante LAST_RESULT, GOOD_PACKS e BAD_PACKS são atualizados. Pacotes com CRC
inválido ou com endereço de comunicação inválido são ignorados pelo bloco.
Importante
Para operação correta, o canal de comunicação utilizado deve ser previamente configurado para operação com protocolo ASCII (sem SOF e EOF).
O canal em COMM_SRC é indicado por um identificador numérico (definido no tipo
COMM_CHAN_ID da biblioteca HI_STD, namespace HILS):
Identificador |
Faixa de ID |
Tipo de canal |
|---|---|---|
|
0 .. 7 |
Canais seriais COM1 a COM8. |
|
8 .. 15 |
Sockets 0 a 7 da Ethernet 1. |
|
16 .. 23 |
Sockets 0 a 7 da Ethernet 2. |
Nota
Cada equipamento possui apenas um subconjunto dos recursos de comunicação acima. Consulte o manual do equipamento para identificar os canais disponíveis.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
EN |
IN |
BOOL |
TRUE |
— |
Habilita a operação do bloco. |
START |
IN |
BOOL |
FALSE |
— |
Inicia ou reseta a operação do bloco (ativo na transição de subida). |
COMM_SRC |
IN |
UINT |
0 |
0 .. 23 |
Identificador do canal de comunicação utilizado (ver tabela acima). |
COMM_ADDR |
IN |
UINT |
1 |
1 .. 254 |
Endereço de comunicação do equipamento para o protocolo SCP-HI. |
ENO |
OUT |
BOOL |
FALSE |
— |
Saída de habilitação do bloco. |
EVT |
OUT |
BOOL |
FALSE |
— |
Pulso gerado ao final de toda transação endereçada ao equipamento. |
LAST_RESULT |
OUT |
INT |
0 |
RET_CODE |
Código de retorno da última transação (ver Códigos de retorno). |
GOOD_PACKS |
OUT |
UDINT |
0 |
— |
Contador de pacotes processados com sucesso. |
BAD_PACKS |
OUT |
UDINT |
0 |
— |
Contador de pacotes processados com falha. |
Códigos de retorno
LAST_RESULT carrega o código de retorno da última transação (tipo RET_CODE,
namespace HILS). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Transação processada com sucesso. |
6 |
GL_INV_CMD |
Comando inválido ou não reconhecido. |
7 |
GL_UNA_CMD |
Comando não disponível ou não implementado. |
70 |
CO_COM_ERR |
Erro genérico de comunicação. |
81 |
CO_PTC_ERR |
Mensagem com protocolo inválido. |
85 |
CO_CRC_ERR |
Erro de CRC na recepção do frame. |
86 |
CO_INV_DAT |
Dado inválido no protocolo. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
O canal indicado por
COMM_SRCdeve estar previamente configurado para protocolo ASCII (sem SOF e EOF).COMM_ADDRdeve estar na faixa de 1 a 254.
Observações
LAST_RESULT,GOOD_PACKSeBAD_PACKSsão atualizados apenas no instante em queEVTé gerado.Pacotes com CRC incorreto ou endereço de comunicação inválido são descartados sem gerar
EVT.
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
MY_START : BOOL; (* Flag de inicialização do processo *)
SCPHI : HILS.SCPHI_SERVER; (* Instancia do bloco servidor SCP-HI *)
MY_COM_ADDR : USINT := 1; (* end. de comunicacao do equipamento *)
END_VAR
(* aguarda recepção do pacote SCP-HI e trata o mesmo *)
SCPHI(
EN := TRUE, // Habilitação de entrada
START := MY_START, // Inicia uma transacao (ativa na transição de subida)
COMM_SRC := HILS.COM1_PORT_ID, // Identificador do canal de comunicação (COM1)
COMM_ADDR := MY_COM_ADDR // Endereço de comunicacao
);
IF (SCPHI.EVT) THEN
// Gerada transação de comunicacao com o equipamento
IF (SCPHI.LAST_RESULT = HILS.SUCCESS) THEN
// Transaçao realizada com sucesso
END_IF;
END_IF;