Computing">
DT214 - Protocolo de Comunicao Horustech
DT214 - Protocolo de Comunicao Horustech
DT214 - Protocolo de Comunicao Horustech
Horustech
Protocolo de
comunicaçao
Horustech
DT 214
DT 214
Protocolo de Comunicação
Revisão: 09
Horustech
08/03/2021
1 Introdução
• Todos os comandos são iniciados com o caractere “> “, seguido de”?” para consulta e”!”
para resposta da automação.
• Após os caracteres de início de bloco, o protocolo informa o tamanho dos dados, em
hexadecimal.
• O campo de dados é dividido em duas partes, o índice do comando, informado em
hexadecimal de dois caracteres (00...FF), e os parâmetros, que serão de tamanho
variável, de acordo com a informação do cabeçalho.
• Campos denominados “ICOM” são representados em decimal na faixa de 01 a 03,
contendo dois caracteres em qualquer comando/resposta.
• Campos denominados “Bomba” são representados em decimal na faixa de 1 a 4,
representado em um caractere em qualquer comando/resposta;
• Campos “bico” são representados em decimal, de 0 a 99;
• Campos tanque e combustível são representados em decimal, de 0 a 99;
• Campos “Conector” são representados em decimal, na faixa de 1 a 4 em decimal, sendo
apresentado sempre com um caractere;
• Um hexadecimal é representado como dois caracteres, como exemplo: o campo S [2] do
tipo hexadecimal, possui um dado hexadecimal, o campo K [4] do tipo hexadecimal
possui 2 hexadecimais. Exemplos de números hexadecimais '1D', '05', '3F', 'FF'.
• O tamanho do comando é (CCCC) seria quantos caracteres o comando possuí retirando
o seu checksum, exemplo:
Comando: >?000402A1D7
>? – Caractere delimitador e tipo do comando;
0004 – Tamanho calculado
2A1 – Camada de dados, possuí 4 caracteres, então o tamanho do comando é
0004, este tamanho é verificado em decimal, mas quando incluído no
comando é posto em hexadecimal;
D7 – Cálculo do checksum do comando inteiro retirando o caractere delimitador.
2 Estrutura do comando
Todos os comandos são definidos como a figura abaixo, eles consistem em uma camada de
transporte, uma região de dados e um checksum, respectivamente.
>PCCCCX.... KK
1. Camada de transporte
• Delimitador
• P: Tipo do comando:
➢ ?: Pergunta para a automação;
➢ !: Resposta da automação.
• C [4]: Tamanho do campo DATA em hexadecimal.
2. Camada de dados
• X [2...65535]: Dados do comando:
➢ Tipo [2]: Índice do comando;
➢ Parâmetros [0...65532]: Parâmetros auxiliares do comando.
3. Checksum:
• K [2]: Somatório dos valores ACSII dos caracteres do comando, sendo desprezado o byte
mais significativo.
3 Comandos
3.1 Abastecimento
3.1.1 Leitura de Abastecimento
Este comando é utilizado para a leitura de abastecimento finalizado.
• Tamanho: 02 (0x0002)
• Índice: 02 (0x02)
• Estrutura do comando:
>?CCCC02KK
➢ 02 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Este comando retornará até 107 caracteres, conforme demonstração abaixo.
No caso de memória vazia, a resposta terá tamanho dois
• Tamanho: 2 (0x0002) / 107 (0x006B)
• Estrutura da resposta:
>!CCCC02NNNNNNBBCCAATTTTTTLLLLLLPPPPXYZttttddmmyyhhnneeeeeeeeeeEEEEE
EEEEEiiiiiiiiiiiiiiiiIIIIIIIIIIIIIIIIaaaaaaaaKK
➢ 02 [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Índice do abastecimento na memória da automação..................(decimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ C [02]: Código do combustível.................................................................(decimal)
➢ A [02]: Número do tanque fornecedor do bico........................................(decimal)
• Tamanho: 04 (0x0004)
• Índice: 02 (0x02)
• Parâmetro: A1
• Estrutura do comando:
>?CCCC02A1KK
➢ 02 [02]: Índice do comando.............................................................(hexadecimal)
➢ A1 [02]: Parâmetro do comando......................................................(hexadecimal)
• Resposta: Este comando retornará até 118 caracteres, conforme demonstração abaixo.
No caso de memória vazia, a resposta terá tamanho dois
• Tamanho: 08 (0x0008)
• Índice: 08 (0x08)
• Estrutura do comando:
>?CCCC08NNNNNNKK
➢ 08 [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Posição a ser consultada..............................................................(decimal)
• Resposta: Este comando retornará a informação completa do abastecimento solicitado,
totalizando 110 caracteres. Em caso de memória vazia, a resposta terá tamanho zero:
>!0208KK
• Tamanho: Variável 2 (0x0002) / 115 (0x0073)
• Estrutura da resposta:
>!CCCC08NNNNNNBBCCAATTTTTTLLLLLLPPPPXYZttttDDmmyyhhnneeeeeeeeeeEEEEE
EEEEEiiiiiiiiiiiiiiiiIIIIIIIIIIIIIIIIaaaaaaaaKK
➢ 08 [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Índice do abastecimento na memória da automação..................(decimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ C [02]: Código do combustível.................................................................(decimal)
➢ A [02]: Número do tanque fornecedor do bico........................................(decimal)
➢ T [06]: Valor total do abastecimento.......................................................(decimal)
➢ L [06]: Volume total do abastecimento...................................................(decimal)
➢ P [04]: Preço unitário do produto............................................................(decimal)
➢ X [01]: Número de casas decimais do campo total (T[6]).........................(decimal)
➢ Y [01]: Número de casas decimais do campo volume (L[6]).....................(decimal)
➢ Z [01]: Número de casas decimais do campo preço unitário (P[4])..........(decimal)
➢ t [04]: Tempo do abastecimento.............................................................(decimal)
➢ D [02]: Dia do abastecimento..................................................................(decimal)
➢ m [02]: Mês do abastecimento................................................................(decimal)
➢ y [02]: Ano do abastecimento..................................................................(decimal)
➢ h [02]: Hora do abastecimento................................................................(decimal)
➢ n [02]: Minuto do abastecimento............................................................(decimal)
➢ e [10]: Totalizador inicial do abastecimento............................................(decimal)
➢ E [10]: Totalizador final do abastecimento..............................................(decimal)
➢ i [16]: Identificador de frentista.......................................................(hexadecimal)
➢ I [16]: Identificador de cliente..........................................................(hexadecimal)
3.1.4 Incremento
Este comando é utilizado para passar o ponteiro de leitura para o próximo abastecimento.
• Tamanho: 02 (0x0002)
• Índice: 06 (0x06)
• Estrutura do comando:
>?CCCC06KK
➢ 06 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Este comando retornará a posição do ponteiro de leitura e a posição do último
ponteiro a ser lido na memória. Quando não há ponteiro a ser incrementado, a
automação retorna os dois números iguais indicando, a posição lida e a última posição.
• Tamanho: 14 (0x00E)
• Estrutura da resposta:
>!CCCC06nnnnnnNNNNNNKK
➢ 06 [02]: Índice do comando.............................................................(hexadecimal)
➢ n [06]: Posição para a qual o ponteiro foi movido....................................(decimal)
➢ N [06]: Posição do último ponteiro da lista de abastecimentos...............(decimal)
• Exemplo:
TX: >?00020667
RX: >!000E06000179000181B7
• Exemplo quando não há ponteiro a ser incrementado:
TX: >?00020667
RX: >!000E06000181000181B0
3.2 Visualização
3.2.1 Visualização
Este comando é utilizado para leitura dos abastecimentos em andamento.
• Tamanho: 02 (0x0002)
• Índice: 03 (0x03)
• Estrutura do comando:
>?CCCC03KK
➢ 03 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: O comando de visualização retornará oito caracteres para cada bico que
estiver abastecendo no momento da consulta, sendo dois caracteres informando o bico
e seis caracteres informando o valor em dinheiro.
• Tamanho: Variável [2...65353]([0x0002...0xFFFF])
• Estrutura da resposta:
>!CCCC03BBLLLLLLKK
➢ 03 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ L [06]: Valor em dinheiro fornecido no momento da consulta.................(decimal)
• Exemplo:
TX: >?00020364
RX: >!000A0301001222DD
• Exemplo de quando não há abastecimento em andamento:
TX: >?00020364
RX: >!00020346
• Tamanho: 02 (0x0002)
• Índice: 40 (0x28)
• Estrutura do comando:
>?CCCC28KK
➢ 28 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Este comando retornará à informação do total a pagar e identificador de
todos os bicos com abastecimento em andamento no momento da solicitação. Para
cada abastecimento em andamento, a automação irá retornar a estrutura abaixo.
• Tamanho: Variável de acordo com o número de bicos com abastecimento em
andamento.
• Estrutura da resposta:
>!CCCC28BBVVVVVVIIIIIIIIIIIIIIIIKK (V e I = 24 bytes por bico abastecendo)
➢ 28 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número de bico............................................................................(decimal)
➢ V [06]: Volume abastecendo...................................................................(decimal)
➢ I [16]: Código do TAG que liberou o fornecimento...................................(decimal)
• Exemplo:
TX: >?0002286B
RX: >!001A2801001763B32800000000001211
• Exemplo com dois abastecimentos em andamento:
TX: >?0002286B
RX: >!00322803000587B32800000000000104000064B328000000000002B6
• Exemplo de quando não há abastecimento em andamento:
TX: >?0002286B
RX: >!0002284D
3.3 Identfid
3.3.1 Leitura de identificador
Este comando é utilizado para ler o código de identificadores lidos pelos sensores, mas a
automação não sabe o que fazer com ele (ex.: O cartão não está cadastrado na automação).
Quando a automação está trabalhando desta forma, ela coloca os cartões não cadastrados em
um buffer e aguarda algum comando para tomar a providência necessária com os mesmos.
• Tamanho: 02 (0x0002)
• Índice: 12 (0x0C)
• Estrutura do comando:
>?CCCC0CKK
➢ 0C [02]: Índice comando..................................................................(hexadecimal)
• Resposta: Este comando retornará a informação completa da identificação lida no
sensor ou informação de memória vazia. As informações de calendário é do momento
que o cartão foi passado no sensor.
• Tamanho: 40 (0x0028)
• Estrutura da resposta:
>!CCCC0CNNNNNNaabbccddTTTTTTTTTTTTTTTTDDMMHHNNKK
➢ 0C [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Posição da leitura na memória.....................................................(decimal)
➢ aabbccdd [08]: Lista de bicos sob controle do sensor lido.......................(decimal)
o aa: Bico A;
o bb: Bico B;
o cc: Bico C;
o dd: Bico D;
➢ T [16]: Código do identificador........................................................(hexadecimal)
➢ D [02]: Dia................................................................................................(decimal)
➢ M [02]: Mês.............................................................................................(decimal)
➢ H [02]: Hora.............................................................................................(decimal)
➢ N [02]: Minuto.........................................................................................(decimal)
• Exemplo:
TX: >?00020C74
RX: >!00280C00000001000000B3CF6CCFFF1F51E60102110169
• Tamanho: 20 (0x0014)
• Índice: 13 (0x0D)
• Estrutura do comando:
>?CCCC0DTTTTTTTTTTTTTTTTLLKK
➢ 0D [02]: Índice do comando.............................................................(hexadecimal)
➢ T [16]: Código de identificador.........................................................(hexadecimal)
➢ L [02]: Controle........................................................................................(decimal)
o 27: Libera bomba para abastecimento;
o 04: Cliente, não libera bomba para abastecimento;
• Resposta: Este comando retornará à posição do identificador em memória ou um código
de erro caso não tenha sido possível realizar a gravação.
• Tamanho: 24 (0x0018) / 4 (0x0004) / {Erro}
• Estrutura da resposta:
>!CCCC0DNNNNNNTTTTTTTTTTTTTTTTKK
➢ 0D [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Posição em que o identificador foi armazenado..........................(decimal)
➢ T [16]: Código do identificador armazenado....................................(hexadecimal)
>!CCCC0DCDKK
➢ 0D [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?00140DB3280000000000252707
RX: >!00180D000001B328000000000025A5
• Tamanho: 24 (0x0018)
• Índice: 14 (0x0E)
• Estrutura do comando:
>?CCCC0ENNNNNNTTTTTTTTTTTTTTTTKK
➢ 0E [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Posição do identificador na memória..........................................(decimal)
➢ T [16]: Código de identificador a ser deletado.................................(hexadecimal)
• Resposta: Este comando retornará um caractere informando a situação da execução do
comando.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC0ECDKK
➢ 0E [02]: Índice do comando.....................................................................(hexadecimal)
➢ C [01]: Códigos de Status de execução.........................................................(caractere)
➢ D [01]: Código do erro.............................................................................(hexadecimal)
• Exemplo:
TX: >?00180E000001B328000000000025C4
RX: >!00040E00BA
• Tamanho: 08 (0x0008)
• Índice: 15 (0x0F)
• Estrutura do comando:
>?CCCC0FNNNNNNKK
➢ 0F [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Índice da posição.........................................................................(decimal)
• Resposta: Este comando retornará a linha do arquivo de identificadores solicitada com
as informações separadas por “;”.
• Tamanho: Quando encontra o sensor não retorna tamanho e sim a estrutura indicada
abaixo. Em caso de espaço da memória sem cartão, o tamanho será 02 (0x0002).
• Estrutura da resposta em casos que não há identificador no espaço de memória:
>!CCCC0ACDKK
➢ 0F [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
• Tamanho: 08 (0x0008)
• Índice: 16 (0x10)
• Estrutura do comando:
>?CCCC10NNNNNNKK
➢ 10 [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Índice do registro do identificador...............................................(decimal)
• Resposta: Este comando retornará os dados relativos ao identificador em memória ou
um código de erro caso não tenha sido possível encontrar.
• Tamanho: 40 (0x0028)
• Estrutura da resposta:
>!CCCC10NNNNNNCCCCCCCCTTTTTTTTTTTTTTTTDDMMHHmmKK
➢ 10 [02]: Índice do comando.............................................................(hexadecimal)
➢ N [06]: Posição do identificador na memória..........................................(decimal)
➢ C [08]: Código dos bicos ('00' caso não haja tal bico)...............................(decimal)
➢ T [16]: Código do identificador........................................................(hexadecimal)
➢ D [02]: Dia................................................................................................(decimal)
➢ M [02]: Mês.............................................................................................(decimal)
➢ H [02]: Hora.............................................................................................(decimal)
➢ m [02]: Minuto........................................................................................(decimal)
• Exemplo:
TX: >?0008100000028A
RX: >!00281000000201000000B3CF6CCFFF1F51E6010211045C
• Exemplo de espaço de memória vazio:
TX: >?0008100000028A
RX: >!00281000FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFD4
• Tamanho: 06 (0x0006)
• Índice: 23 (0x17)
• Estrutura do comando:
>?CCCC17IITTKK
➢ 17 [02]: Índice do comando.............................................................(hexadecimal)
➢ I [02]: Funcionalidade......................................................................(hexadecimal)
o 5A: Inicia;
o 5B: Finaliza;
o 5C: Apaga identificadores armazenados (comando somente possível com
certificado logado).
➢ T [02]: Controle.......................................................................................(decimal)
o 24: Cliente (Não libera a bomba);
o 27: Frentista (Libera bomba).
• Resposta: Este comando retornará um código de confirmação de execução.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC17CDKK
➢ 17 [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
➢ Limpeza de memória:
TX: >?0006175C274E
RX: >!00041700AD
• Tamanho: 02 (0x0002)
• Índice: 24 (0x18)
• Estrutura do comando:
>?CCCC18KK
3.4 Status
3.4.1 Status
Este comando é utilizado para ler as informações de estado de cada bico no momento da
requisição.
• Tamanho: 02 (0x0002)
• Índice: 01 (0x01)
• Estrutura do comando:
>?CCCC01KK
➢ 01 [02]:Índice do comando..............................................................(hexadecimal)
• Resposta: A resposta do comando STATUS retornará até 101 caracteres, sendo dois
caracteres descrevendo o índice do comando e um caractere para cada bico configurado
na automação, assim, o tamanho da resposta é variável. Bicos não configurados
retornarão um espaço em branco.
• Tamanho: Variável 2 (0x0002) ...101 (0x0065)
• Estrutura da resposta:
>!CCCC01FFFFFFFFKK
➢ 01 [02]: Índice do comando.............................................................(hexadecimal)
➢ F [00...99]: Caractere de estado..............................................................(caracter)
o B: Bico bloqueado;
o L: Bico livre;
o A: Bico Abastecendo;
o F: Bico em falha;
o <SPACE>: Bico não configurado;
o E: Bico em espera;
o P: Bico pronto para abastecer;
o #: Bico Ocupado (outro bico na bomba está abastecendo);
o !: Erro genérico.
• Exemplo:
TX: >?00020162
RX: >!0A01AALB P AKK
• No exemplo acima, o maior bico do cenário é o de número oito.
• Os bicos um, dois e oito estão abastecendo.
• O bico três está livre e o quatro está bloqueado.
• Os bicos cinco e sete não estão configurados na automação.
• O bico seis está pronto para abastecer.
• Tamanho: 02 (0x0002)
• Índice: 18 (0x12)
• Estrutura do comando:
>?CCCC12KK
➢ 12 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Este comando retornará as informações relativas ao equipamento.
• Tamanho: 182 (0x00B6)
• Estrutura da resposta:
>!CCCC12vVV.VV fFF.FF DD/MM/AA B bbbbb E eeee C-NNNNNNNN DD/MM/AA
DD/MM/AA MM:MM:MM:MM:MM:MM III.III.III.III;DD/MM/AA dflt
CCCCCCCC;FIIIHDPT;RRR.RRR.RRR.RRR;ppppp;a;w;QQQ.QQQ.QQQ.QQQ;rrrrr;KK
➢ 12 [02]: Índice do tipo do comando.................................................(hexadecimal)
➢ v [01]: ‘B’ Descritor de versão boot-loader...........................................(caractere)
➢ V [05]: Versão do boot-loader.................................................................(decimal)
➢ <SPACE> [01]: Espaço separador.
➢ f [01]: ‘F’ Descritor de versão do firmware............................................(caractere)
➢ F [05]: Versão do firmware......................................................................(decimal)
➢ <SPACE> [01]: Espaço separador.
➢ DD/MM/AA [08]: Data do firmware........................................................(decimal)
➢ <SPACE> [01]: Espaço separador.
➢ B [01]: Informação da bateria..................................................................(decimal)
o 0: Bateria normal;
o 1: Bateria baixa;
o 2: Bateria em estado crítico (providenciar troca).
➢ <SPACE> [01]: Espaço separador.
➢ b [05]: Tensão da bateria.........................................................................(decimal)
• Tamanho: 06 (0x0006)
• Índice: 05 (0x05)
• Estrutura do comando:
>?CCCC05BBTTKK
➢ 05 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Bico a ser consultado....................................................................(decimal)
➢ T [02]: Tipo de pedido..............................................................................(decimal)
o 01: Litros;
o 02: Valor em dinheiro;
o 03: Preço unitário;
o 04: Completo;
o 05: Identificadores;
o 06: Ponteiros (válido apenas para bico “00”);
o 08: Totalizador de volume, valor e os três preços configurados;
o 09: Valor do preço unitário dos três níveis.
• Resposta: Este comando retornará os valores correspondentes aos totalizadores do
bico. O caractere de tipo define qual informação deve ser lida.
• Tamanho: Variável 4 (0x0004) / 10 (0x000A) / 16 (0x0010) / 24 (0x0018) / 30 (0x001E) /
44 (0x002C)
• Estrutura da resposta:
▪ Erro na resposta de totais (0x0004):
>!CCCC05ECKK
➢ 05 [02]: Índice do comando.............................................................(hexadecimal)
➢ E [01]: Indicador de erro.......................................................................(caractere)
➢ C [01]: Código de erro......................................................................(hexadecimal)
▪ Resposta de totais em volume (0x0016):
>!CCCC05BBTTLLLLLLLLLLKK
➢ 05 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número de bico............................................................................(decimal)
➢ T [02]: Tipo de pedido.............................................................................(decimal)
• Tamanho: 08 (0x0008)
• Índice: 07 (0x07)
• Estrutura do comando:
>?CCCC07BBPPPPKK
➢ 07 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Bico..............................................................................................(decimal)
➢ P [04]: Novo preço (somente números)...................................................(decimal)
• Resposta: Este comando retornará um código informando a situação do pedido.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC07CDKK
➢ 07 [2]: Índice do comando...............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?00080701123499
RX: >!00040700AC
• Tamanho: 11 (0x000B)
• Índice: 50 (0x32)
• Estrutura do comando:
>?CCCC32BBNPPPPPPKK
➢ 32 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ N [01]: Nível de preço...........................................................................(caractere)
➢ P [06]: Novo preço (somente números)...................................................(decimal)
• Resposta: Este comando retornará um código informando a situação do pedido.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC32CDKK
➢ 32 [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?000B320200011112C
RX: >!00043200AA
• Tamanho: 10 (0x000A)
• Índice: 09 (0x09)
• Estrutura do comando:
>?CCCC09BBVVVVVVKK
➢ 09 [2]: Índice do comando...............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ V [06]: Valor pré-determinado................................................................(decimal)
• Resposta: Este comando retornará um caractere informando a situação da execução do
comando.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC09CDKK
➢ 09 [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?000A0901000050FF
RX: >!00040900AE
Atenção: Alguns modelos de bombas não são compatíveis com esse comando, nesse
caso, a bomba será liberada normalmente para abastecimento, porém, o abastecimento não
finalizará no valor previamente definido.
• Tamanho: 36 (0x0024)
• Índice: 38 (0x26)
• Estrutura do comando:
>?CCCC26BBTTTTTTTTTTTTTTTTCAPPPPPPttpRRRRRKK
➢ 26 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número de bico............................................................................(decimal)
➢ T [16]: Código do identificador........................................................(hexadecimal)
➢ C [01]: Tipo do identificador....................................................................(decimal)
o 0: Frentista;
o 1: Cliente;
o 2: Hodômetro.
➢ A [01]: Autorização...............................................................................(caractere)
o S: Sim;
o N: Não.
➢ P [06]: Valor do PRESET (0 = Sem limite)..................................................(decimal)
➢ t [02]: Tempo até retirar o bico................................................................(decimal)
➢ p [01]: Tipo de preset............................................................................(caractere)
o $: Dinheiro;
o V: Volume.
➢ R [05]: Reservado (preencher com 0 (zero))............................................(decimal)
• Resposta: Este comando retornará um código de confirmação.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC26CDKK
➢ 26 [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?00242601B3280000000000120S00100030$000000B
RX: >!00042600AD
• Tamanho: 14 (0x000E)
• Índice: 49 (0x31)
• Estrutura do comando:
>?CCCC31BBVVVVVVVVxnKK
➢ 31 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ V [08]: Valor a ser predeterminado.........................................................(decimal)
➢ x [01]: Tipo de preset...............................................................................(decimal)
o 0: Total a pagar;
o 1: Volume.
➢ n [01]: Nível do valor...............................................................................(decimal)
o 0: À vista;
o 1: Crédito;
o 2: Débito.
• Resposta: Este comando retornará um código de confirmação.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC31CDKK
➢ 31 [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?000E31010000100000BA
RX: >!00043100A9
• Tamanho: 34 (0x0022)
• Índice: 52 (0x34)
• Estrutura do comando:
>?CCCC34BBTTTTTTTTTTTTTTTTCAPPPPPPPPttpnKK
➢ 34 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
➢ T [16]: Código do identificador........................................................(hexadecimal)
➢ C [01]: Tipo do identificador....................................................................(decimal)
o 0: Frentista;
o 1: Cliente.
➢ A [01]: Autorização...............................................................................(caractere)
o S: Sim;
o N: Não.
➢ P [08]: Valor do preset (0 = sem limite)....................................................(decimal)
➢ t [02]: Tempo até retirar o bico................................................................(decimal)
➢ p [01]: Tipo de preset............................................................................(caractere)
o $: Dinheiro;
o V: Volume.
➢ Nível de preço.........................................................................................(decimal)
o 0: Dinheiro ou à vista;
o 1: Crédito;
o 2: Débito.
▪Em modo “B” (bloqueio), ao retirar o bico para abastecimento, a bomba entrará no
estado de “E” (espera), assim, para permitir que esse abastecimento seja realizado é
necessário enviar o comando de modo “A” (autoriza) para que a automação autorize
o bico e após esse abastecimento, o bico voltará ao estado anterior.
▪ Em modo “L” (livre), ao receber uma solicitação do bico para abastecer, a automação
autoriza automaticamente o bico para abastecer.
• Tamanho: 06 (0x0006)
• Índice: 19 (0x13)
• Estrutura do comando:
>?CCCC13BBMMKK
➢ 13 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Bico..............................................................................................(decimal)
➢ M [02]: Modo..........................................................................................(decimal)
o 01: Automação autoriza o bico para abastecimento sempre que solicitado
(auto liberação);
o 02: Automação autoriza o bico para somente um abastecimento;
o 03: Automação configura o bico em modo bloqueado;
o 04: Interrompe o abastecimento no momento do comando (para bombas
que permitem stop);
o 05: Pausa o abastecimento (para bombas que permitem) se for enviado um
comando tipo 2 (autoriza) a bomba volta a despachar;
o 06: Habilita Identificador;
o 07: Inibe identificador;
o 10: Clear, limpa autorização e Códigos de Identificação;
TX: >?00061301012B
RX: >!00041300A9
• Tamanho: 04 (0x0004)
• Índice: 20 (0x14)
• Estrutura do comando:
>?CCCC14BBKK
➢ 14 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número do bico............................................................................(decimal)
• Resposta: Este comando retornará os dados relativos ao bico, conforme configurado no
comando de configuração.
• Tamanho: 12 (0x000C)
• Estrutura da resposta:
>!CCCC14BBIIcbttppKK
➢ 14 [02]: Índice do comando.............................................................(hexadecimal)
➢ B [02]: Número de bico na pista...............................................................(decimal)
➢ I [02]: Canal (1-12)...................................................................................(decimal)
➢ c [02]: Endereço (1-4)............................................................................(caractere)
➢ b [02]: Posição(1-4).................................................................................(decimal)
➢ t [02]: Número do tanque........................................................................(decimal)
➢ p [02]: Código do produto(códigos de tipo).....................................(hexadecimal)
• Exemplo:
TX: >?00041401C9
RX: >!000E14010101000101A0;
• Estrutura de Resposta de Erro:
>!CCCC14CDKK
➢ 14 [02]: Índice do comando.....................................................................(hexadecimal)
➢ C [01]: Códigos de Status de execução.........................................................(caractere)
➢ D [01]: Código do erro.............................................................................(hexadecimal)
3.6 Relógio
3.6.1 Ajuste de calendário
Este comando é utilizado para ajustar as definições de data e hora do equipamento.
• Tamanho: 16 (0x0010)
• Índice: 10 (0x0A)
• Estrutura do comando:
>?CCCC0AYYMMDDddHHNNSSKK
➢ 0A [02]: Índice do comando.............................................................(hexadecimal)
➢ Y [02]: Ano...............................................................................................(decimal)
➢ M [02]: Mês.............................................................................................(decimal)
• D [02]: Dia................................................................................................(decimal)
• d [02]: Dia da semana (01=domingo, 02=segunda, ...).............................(decimal)
• H [02]: Hora.............................................................................................(decimal)
• N [02]: Minuto.........................................................................................(decimal)
• S [02]: Segundos......................................................................................(decimal)
• Resposta: Esse comando retornará um caractere informando a situação da execução do
comando.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC0ACDKK
➢ 0A [02]: Índice do comando.............................................................(hexadecimal)
➢ C [01]: Códigos de status de execução..................................................(caractere)
➢ D [01]: Código do erro......................................................................(hexadecimal)
• Exemplo:
TX: >?00100A120727061549003D
RX: >!00040A00B6
• Tamanho: 02 (0x0002)
• Índice: 11 (0x0B)
• Estrutura do comando:
>?CCCC0BKK
➢ 0B [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Esse comando retornará à informação completa de calendário do
equipamento.
• Tamanho: 16 (0x0010)
• Estrutura da resposta:
>!CCCC0BYYMMDDddHHNNSSKK
➢ 0B [02]: Índice do comando.............................................................(hexadecimal)
➢ Y [02]: Ano...............................................................................................(decimal)
➢ M [02]: Mês.............................................................................................(decimal)
➢ D [02]: Dia................................................................................................(decimal)
➢ d [02]: Dia da semana (01=domingo, 02=segunda, ...).............................(decimal)
➢ H [02]: Hora.............................................................................................(decimal)
➢ N [02]: Minuto.........................................................................................(decimal)
➢ S [02]: Segundos......................................................................................(decimal)
• Exemplo:
TX: >?00020B73
RX: >!00100B1207270615492224
• Tamanho: 06 (0x0006)
• Índice: 26 (0x1A)
• Estrutura do comando:
>?CCCC1AIIcbKK
➢ 1A [02]: Índice do comando.............................................................(hexadecimal)
➢ I [02]: ICOM (01-03).................................................................................(decimal)
➢ c [01]: Conector (A-D)...........................................................................(caractere)
➢ b [01]: Endereço (1-4)..............................................................................(decimal)
• Resposta: Este comando retornará os dados de configuração da ICOM/ conector/
posição solicitados.
• Tamanho: 52 (0x0034)
• Estrutura da resposta:
>!CCCC1ATThhIIbbXYZAaannmmBbbzzxxCccuurrDddsswwReettppKK
➢ 1A [02]: Índice do comando.............................................................(hexadecimal)
➢ T [02]: Caractere de tipo de bomba (Consultar tabela abaixo).........(hexadecimal)
➢ h [02]: Especificação do hardware...........................................................(decimal)
➢ I [02]: Canal de comunicação (padrão CBC)(01-03)..................................(decimal)
➢ b [02]: Endereço Lógico(01-04)...............................................................(decimal)
➢ X [01]: Número de casas decimais do campo total..................................(decimal)
➢ Y [01]: Número de casas decimais do campo volume..............................(decimal)
➢ Z [01]: Número de casas decimais do campo preço unitário....................(decimal)
➢ A [01]: Início de configurações estendidas da posição A.......................(caractere)
➢ a [03]: Número atribuído ao bico da posição A........................................(decimal)
➢ n [02]: Número do tanque atribuído ao bico da posição A.......................(decimal)
➢ m [02]: Código do combustível atribuído ao bico da posição A................(decimal)
➢ B [01]: Início de configurações estendidas da posição B.......................(caractere)
➢ b [03]: Número atribuído ao bico da posição B........................................(decimal)
➢ z [02]: Número do tanque atribuído ao bico da posição B........................(decimal)
➢ x [02]: Código do combustível atribuído ao bico da posição B.................(decimal)
➢ C [01]: Início de configurações estendidas da posição C........................(caractere)
➢ c [03]: Número atribuído ao bico da posição C........................................(decimal)
➢ u [02]: Número do tanque atribuído ao bico da posição C.......................(decimal)
➢ r [02]: Código do combustível atribuído ao bico da posição C..................(decimal)
➢ D [01]: Início de configurações estendidas da posição D.......................(caractere)
➢ d [03]: Número atribuído ao bico da posição D........................................(decimal)
➢ s [02]: Número do tanque atribuído ao bico da posição D.......................(decimal)
➢ w [02]: Código do combustível atribuído ao bico da posição D................(decimal)
➢ R [01]: Início de configurações estendidas de sensores IDF..................(caractere)
➢ e [01]: Tipo de sensor.......................................................................(hexadecimal)
➢ t [01]: Forma de trabalho do sensor.................................................(hexadecimal)
➢ p [01]: Tempo do sensor..........................................................................(decimal)
• Exemplo:
TX: >?00061A01A14A
RX: >!00341A07020101233A0010000B0000000C0000000D0000000R15012043
3.7.2 Diagnóstico
Este comando é utilizado para ler em tempo real o diagnóstico dos bicos configurados. Com
este comando é possível descobrir se o bico está respondendo e qual o estado real da bomba.
• Tamanho: 04 (0x0004)
• Índice: 27 (0x1B)
• Estrutura do comando:
>?CCCC1BCCKK
➢ 1B [02]: Índice do comando.............................................................(hexadecimal)
➢ C [02]: Controle.....................................................................................(caractere)
o 5A: Diagnóstico;
o 5B: Bicos ICOM A;
o 5C: Bicos ICOM B;
o 5D: Bicos ICOM C;
o 5E: Diagnóstico identfid.
• Resposta: O comando retornará uma resposta variável de acordo com o controle que é
passado para o comando.
• Tamanho: Variável de acordo com o número de endereços configurados.
• Estrutura da resposta para o parâmetro 5A:
O comando retornará um conjunto de 5 caracteres para cada lado de bomba
configurado na automação, um informando a situação da bomba, dois com status e dois
com tipo de bomba configurada.
>!CCCC1B5ASIITTKK
➢ 1B [02]: Índice do comando.............................................................(hexadecimal)
➢ 5A [02]: Controle..................................................................................(caractere)
➢ S [01]: Situação do lado da bomba........................................................(caractere)
o R: Respondendo;
o F: Falha;
o ?: Tipo desconhecido;
o !: Tipo não autorizado;
o N: Não configurado;
o 0: Não existe bico.
➢ I [02]: Status da bomba.........................................................................(caractere)
➢ T [02]: Tipo da bomba......................................................................(hexadecimal)
• Exemplo:
TX: >?00041B5AEC
RX: >!001D1B5AR2007F0007N0000N0000F00012A
• Estrutura da resposta para os parâmetros 5B, 5C e 5D
Este comando retornará o mapa de bicos o qual mostra o bico que está atrelado para
cada lado da bomba.
>!CCCC1BXXAABBCCDDKK (AABBCCDD bloco que se repete)
➢ 1B [02]: Índice do comando.............................................................(hexadecimal)
➢ X [02]: Controle (5B,5C,5D)...................................................................(caractere)
➢ A [02]: Bico configurado na posição 0......................................................(decimal)
OBS.: Caso o tipo passado seja “03”, pode ser adicionada a quantidade de eventos
desejadas, após os caracteres “XX” do comando é adicionada a quantidade com 4
caracteres, no entanto o tamanho do comando também mudará, ficando 08 (0x0008).
• Exemplo de leitura de configurações:
TX: >?00041F01DB
RX:DD/MM/AA
HH:NN;Nozzle;Protocol;ICom;Connector;Position;Mode;Hardware;Tank;Fuel;Price;To
tal Comma;Volume Comma;Identifier;Mode;Time
;01;01: GILBARCO ;1;B1;01;94;01:Loop High;00;00: NONE ;1,000;2;3;00: NONE ;0;0;
;02;01: GILBARCO ;1;B2;01;94;01:Loop High;00;00: NONE ;2,000;2;3;00: NONE ;0;0;
#EndOfFile
• Exemplo de leitura de abastecimentos:
TX: >?00041F02DC
RX:
Registro;Bico;Combustivel;Tanque;Total;Volume;Preço;tempo;dia/mes/ano;Hora:min
;EncerInial;EncerFinal;ID Codigo1;ID Codigo2;VolTanque;Check
0000;2;0;0;12,06;15,889;0,759;0009;04/05/20;10:41;00000009,34;00036022,63;000
0000000000000;0000000000000000;00000000;0
0001;1;0;0;17,70;3,187;5,555;0006;04/05/20;10:43;00000129,72;00054043,02;0000
000000000000;0000000000000000;00000000;0
0002;2;0;0;5,47;7,207;0,759;0009;04/05/20;10:44;00036022,63;00036029,84;00000
00000000000;0000000000000000;00000000;0
....
4534;22;0;0;15,00;0,686;21,853;0063;22/05/20;09:22;36091872,82;36091873,50;00
00000000000000;0000000000000000;00000000;0
#EndOfFile
• Exemplo de leitura de 100 eventos:
TX: >?00081F030100A2
RX:
000170;08.04;15/05/20;17:25:16;Pump Date Firmware version;_05_15_00_00_03;
000171;08.04;15/05/20;17:25:19;Identifier Disconnected;_21_00_00_00_03;
000172;08.04;15/05/20;17:26:14;Identifier Reconnected;_21_00_00_00_03;
....
000269;08.04;22/05/20;09:22:09;Pump configuration change;_25_16_00_00_03;
#EndOfFile
• Exemplo de leitura de identificadores:
TX: >?00041F04DE
RX:
• Tamanho: 10 (0x000A)
• Índice: 39 (0x27)
• Estrutura do comando:
>?CCCC27TTIIIIIIKK
➢ 27 [02]: Índice do comando.............................................................(hexadecimal)
➢ T [02]: Tipo de arquivo.............................................................................(decimal)
o '04': TAG Identificador.
➢ I [06]: Índice da memória.........................................................................(decimal)
• Resposta: Este comando retornará a linha solicitada em formato CSV.
• Tamanho: 04 (0x0004)
• Estrutura da resposta:
>!CCCC27TT[CSV]KK
➢ 27 [02]: Índice do comando.............................................................(hexadecimal)
➢ T [02]: Tipo de arquivo.............................................................................(decimal)
o '04': TAG Identificador.
➢ [CSV] [Variável]: Informação solicitada em formato CSV, separado por “;”.
• Exemplo:
TX: >?000A2704000000FD
RX: >!00742704000000; B328000000000001;27: CARD ATTENDANT 1 L; 11; FFFF;
FFFFFFFF;B328000000000001;00,00;00000000;9F
• Tamanho: 02 (0x0002)
• Índice: 37 (0x25)
• Estrutura do comando:
>?CCCC25KK
➢ 25 [02]: Índice do comando.............................................................(hexadecimal)
• Resposta: Este comando retornará um conjunto de caracteres para cada bomba
configurada na automação desde que esta esteja configurada como wireless, contendo
sua situação, RSSI e LQI.
• Tamanho: Variável de acordo com o número de endereços configurados 02 (0x0002) ...
242 (0x00F2).
• Estrutura da resposta:
>!CCCC25SLRKK
➢ 25 [02]: Índice do comando.............................................................(hexadecimal)
➢ S [01]: Situação da bomba.....................................................................(caractere)
o R: Respondendo;
o F: Falha;
o N: Não configurado.
➢ L [01]: LQI [0...F]..............................................................................(hexadecimal)
➢ R [01]: RSSI [0...F].............................................................................(hexadecimal)
• Exemplo:
TX: >?00022568
RX: >!000525r0E34
• Tamanho: 04 (0x0004)
• Índice: 28 (0x1C)
• Estrutura do comando:
>?CCCC1CD9KK
➢ 1C [02]: Índice do comando.............................................................(hexadecimal)
➢ D9 [02]: Controle do comando..............................................................(caractere)
• Resposta: Este comando retornará os números das portas ethernet que estão sendo
utilizadas na automação (portas ocupadas), caso esteja mais de uma porta ocupada, a
resposta terá a mesma estrutura para cada uma delas.
• Tamanho: Variável.
• Estrutura da resposta:
>!CCCC1CrIII.III.III.IIIrRPPPPPrLLLLKK
➢ 1C [02]: Índice do comando.............................................................(hexadecimal)
➢ r [01]: Caractere separador...................................................................(caractere)
➢ I [12]: IP do computador que realizou a solicitação.................................(decimal)
➢ r [01]: Caractere separador..................................................................(caractere)
➢ R [01]: Caractere identificador de porta remota...................................(caractere)
➢ P [05]: Porta remota (porta IP do computador).......................................(decimal)
➢ r [01]: Caractere separador..................................................................(caractere)
➢ L [04]: Porta local da automação.............................................................(decimal)
• Exemplo:
TX: >?00041CD9F4
RX: >!001C1C/192.168.0.173:R58806:L771E4
4 Códigos de erro
Os códigos descritos abaixo são utilizados por todas as respostas do protocolo que possam
conter um erro, esses códigos são numerados de 0 a 16 (0x00 a 0x0F):
• 0: Sucesso;
• 1: Número de bico da posição A já utilizado;
• 2: Número de bico da posição B já utilizado;
• 3: Número de bico da posição C já utilizado;
• 4: Número de bico da posição D já utilizado;
• 5: Erro de resposta da bomba;
• 6: Erro de timeout da bomba;
• 7: Número de bico inexistente;
• 8: Bico abastecendo;
• 9: Modo inválido;
• A: Identificador diferente;
• B: Erro ao apagar identificador;
• C: Erro parâmetro inválido;
• D: Erro certificado inválido;
• E: Erro comando inválido.
• 0: Sucesso;
• E: Erro.
• 15: Identfid;
• 18: I-Button;
• 32: Identfid duplo;
• 2B: Identfid mestre escravo.
• 00: Desabilitado;
• 01: Bomba de combustível;
• 02: Acesso, enviando para o PC cartões não cadastrados;
• 03: Acesso, ignorando cartões não cadastrados;
• 04: Cartão ponto;
• 05: Máquina de lavar.
10 Cálculo de Checksum
Somatório em hexadecimais dispostos em dois caracteres adicionados às linhas de comando
e resposta do equipamento, esse somatório garante que os dados estejam íntegros ao serem
recebidos nas extremidades de comunicação (PC ⇔ Automação).
O cálculo do checksum HRS é realizado com um acumulador, onde são acrescidos os valores
ASCII de cada caractere presente após o caractere de início de bloco nas linhas de comando e
resposta.
Para manter um tamanho fixo de dois caracteres, as casas mais significativas são removidas
do resultado do somatório, até que seu tamanho preestabelecido seja respeitado.
www.companytec.com.br
desenvolvimento@companytec.com.br