ElipseDocsDocumentação
PDF

Configuração dos Comandos ASCII

Os comandos ASCII são montados com o objetivo de enviar ou extrair dados dos pacotes de comunicação em conformidade com o protocolo de um equipamento. Para cada formato de envio e de recepção, associa-se um índice, ou ID. No comando podem existir quaisquer números ou letras em formato ASCII, fixos ou com campos variáveis. Para criar campos variáveis, a regra geral é utilizar o formato %Nt, conforme descrito na tabela a seguir.

Formatos disponíveis para comandos ASCII

Formato Descrição
% Símbolo identificador de campo variável. Caso a mensagem precise enviar um caractere % (porcentagem), utilize o valor "%%"
N (opcional) Número de caracteres ou formatador. Se o campo é um número real, N pode ser um número real, como por exemplo 5.2, indicando cinco ou mais algarismos na parte inteira e mais dois algarismos na parte fracionária
t Tipo de dados. Os valores possíveis são d: Decimal com sinal, u: Decimal sem sinal, x: Hexadecimal, f: Número real, b: Binário (valor binário do caractere), s: String (caracteres de qualquer tipo), t: Texto (somente caracteres que podem ser impressos, ou seja, cujo código ASCII é maior ou igual a 32 ou 20h) ou n: Interpreta o valor decimal no formato BCD

NOTA

Para os tipos de dados s (String) e t (texto) existem os subtipos @ e #, que podem ser utilizados quando se deseja extrair somente uma porção de uma String ou de um texto:

  • Utilize o símbolo @ para identificar um caractere especial como delimitador inicial da String

  • Utilize o símbolo # para identificar um caractere especial como delimitador final da String. Também é possível definir este caractere especial com notação hexadecimal, utilizando o símbolo h seguido de mais dois caracteres que representam o código ASCII em hexadecimal

  • Utilize o formato %s para extrair uma String completa

  • Utilize o formato %@g#;s para extrair uma substring do caractere g até o caractere ; (ponto e vírgula)

  • Utilize o formato %@h02#h03s para extrair uma substring do caractere 2 até o caractere 3

  • Os caracteres delimitadores dos símbolos @ e # não são parte da extração dos dados que representam a substring do formato %s

Podem ser inseridos ou verificados também os caracteres especiais /r (carriage return), /n (line feed) e qualquer outro caractere especial no formato /hXX, inserindo os caracteres / (barra) ou \ (barra invertida) seguidos de r, n ou h diretamente na mensagem TX ou RX. A inserção ou comparação é realizada diretamente com os caracteres especiais /r (13), /n (10) ou /hXX, onde XX representa um caractere especial em formato hexadecimal de dois dígitos.

Também é possível definir qual é o byte inicializador da recepção dos dados, qual é o byte terminador da recepção dos dados e se estes bytes devem ou não ser parte da extração dos dados, conforme as opções listadas a seguir:

  • [xx: Define qual é o byte que inicializa a recepção dos dados, em que xx está em notação hexadecimal e está incluído na extração dos dados
  • ]xx: Define qual é o byte que termina a recepção dos dados, em que xx está em notação hexadecimal e está incluído na extração dos dados
  • (xx: Define qual é o byte que inicializa a recepção dos dados, em que xx está em notação hexadecimal e não está incluído na extração dos dados
  • )xx: Define qual é o byte que termina a recepção dos dados, em que xx está em notação hexadecimal e não está incluído na extração dos dados

Adicionalmente, para as respostas RX que utilizem os bytes terminadores ]xx ou )xx e se houver a necessidade de descartar alguns bytes que vêm logo a seguir, é possível acrescentar um parâmetro para indicar a quantidade de bytes que devem ser descartados por este Driver após ter recebido este byte terminador, com o objetivo prático de efetuar uma limpeza do buffer de recepção dos dados.

Para utilizar o parâmetro de descartar os últimos n bytes, utilize a expressão "*nn" logo após o parâmetro que define o byte terminador de recepção de dados, ou seja, ]xx*nn ou )xx*nn, em que nn está em notação decimal e representa a quantidade de bytes que são recebidos e descartados por este Driver.

As tabelas a seguir contêm exemplos de utilização de comandos ASCII.

Exemplo de utilização

ProtocoloObjetivoConfiguração
TX: <STX>query<ETX>
RX: <STX>1200<ETX>
Enviar o comando query a um equipamento e extrair o valor numérico da resposta• ID: 1 (um)
• TX: /h02query/h03
• RX: (02%u)03
• N1/B1: 0 (zero, envia e recebe comando)
• N2/B2: 1 (um, ID do comando)
• Read Tag: 1200

O pacote TX é montado para enviar o comando query conforme a estrutura do protocolo de um equipamento, ou seja, utilizando "/h02" (byte STX 0x02) + "query" + "/h03" (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%u" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %u extrai os dados no formato numérico sem sinal.

Exemplo de utilização

ProtocoloObjetivoConfiguração
TX: $memory13<CR><LF>
RX: $34.45<CR><LF>
Enviar o comando memory mais a posição de memória a um equipamento e extrair o valor numérico da resposta• ID: 1 (um)
• TX: $memory%u/r/n
• RX: (24%f)0D*1
• N1/B1: 1 (um, valores TX)
• N2/B2: 1 (um, ID do comando)
• Write Tag: 13
• N1/B1: 0 (zero, envia e recebe comando)
• N2/B2: 1 (um, ID do comando)
• Read Tag: 34.45

O pacote TX requer a configuração de uma posição de memória. Para isto é montado o pacote TX com a inserção de um campo variável %u, a ser definido via escrita do Tag com o parâmetro N1/B1 igual a 1 (um, valores TX). Após preencher o campo variável %u com um valor numérico, neste exemplo o valor 13, pode-se finalmente transmitir o pacote TX ao equipamento no formato "$" + "memory" + "13" + /r (byte CR 0x0D) + /n (byte LF 0x0A).

O pacote RX é montado com o formato "(24" (inicializador não incluso "$") + "%f" + ")0D*1" (terminador não incluso CR 0x0D + descarte do byte LF 0x0A que vem a seguir), em que o parâmetro %f extrai os dados no formato numérico real.

Exemplo de utilização

ProtocoloObjetivoConfiguração
TX: #GetData<CR><LF>
RX: #12;452;75<CR><LF>
Enviar o comando #GetData a um equipamento e extrair três valores numéricos da resposta• ID: 1 (um)
• TX: #GetData/r/n
• RX: (23%u;%u;%u)0D*1
• N1/B1: 0 (zero, envia e recebe comando)
• N2/B2: 1 (um, ID do comando)
• Read TagBloco:
• Elemento 1: 12
• Elemento 2: 452
• Elemento 3: 75

O pacote TX é montado para enviar o comando GetData conforme a estrutura do protocolo de um equipamento, ou seja, utilizando "#" + "GetData" + /r (byte CR 0x0D) + /n (byte LF 0x0A).

O pacote RX é montado com o formato "(23" (inicializador não incluso "#") + "%u" + ";" + "%u" + ";" + "%u" + ")0D*1" (terminador não incluso CR 0x0D + descarte do byte LF 0x0A que vem a seguir), em que são extraídos os três formatos %u através de um Tag Bloco com três Elementos, um para cada formato %u.

Exemplo de utilização

ProtocoloObjetivoConfiguração
TX: <STX>DeviceName<ETX>
RX: <STX>Personal Computer
<ETX>
Enviar o comando DeviceName a um equipamento e extrair o valor no formato String da resposta• ID: 1 (um)
• TX: /h02DeviceName/h03
• RX: (02%s)03
• N1/B1: 0 (zero, envia e recebe comando)
• N2/B2: 1 (um, ID do comando)
• Read Tag: "Personal Computer"

O pacote TX é montado para enviar o comando DeviceName conforme a estrutura do protocolo de um equipamento, ou seja, utilizando /h02 (byte STX 0x02) + "DeviceName" + /h03 (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%s" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %s extrai os dados no formato String.

Exemplo de utilização

ProtocoloObjetivoConfiguração
TX: <STX>DeviceName<ETX>
RX: <STX>Personal Computer
<ETX>
Enviar o comando DeviceName a um equipamento e extrair uma substring do valor da resposta• ID: 1 (um)
• TX: /h02DeviceName/h03
• RX: (02%@r#as)03
• N1/B1: 0 (zero, envia e recebe comando)
• N2/B2: 1 (um, ID do comando)
• Read Tag: "son"

O pacote TX é montado para enviar o comando DeviceName conforme a estrutura do protocolo de um equipamento, ou seja, utilizando /h02 (byte STX 0x02) + "DeviceName" + /h03 (byte ETX 0x03).

O pacote RX é montado com o formato "(02" (inicializador não incluso STX 0x02) + "%@r#as" + ")03" (terminador não incluso ETX 0x03), em que o parâmetro %@r#as extrai uma substring entre o caractere inicial "r" e o caractere final "a" do valor "Personal Computer", resultando na substring "son".