Codificação BCD

Driver Modicon Modbus

Codificação BCD

Topo  Anterior  Próximo

A Codificação BCD (Binary-Coded Decimal ou Decimal Codificado em Binário) foi originalmente concebida para contornar limitações quanto ao número máximo de dígitos passíveis de serem representados nos formatos mais tradicionais de armazenamento de valores. Formatos como a representação de números reais em ponto flutuante mostram-se normalmente aceitáveis para cálculos matemáticos e científicos. Porém, erros de aproximação causados pela existência de algarismos que não possam ser representados por problemas de overflow ou underflow podem não ser admissíveis em certas aplicações, como em procedimentos financeiros. Para superar este tipo de limitação, foi desenvolvida a codificação BCD, que permite a representação de números até o último algarismo.

Nessa representação, cada algarismo decimal é representado isoladamente em formato binário, sem limitações no que se refere ao número de algarismos.

A tabela a seguir mostra os algarismos decimais e seus valores correspondentes em BCD (valores em binário).

Algarismos decimais em codificação BCD

Decimal

BCD

Decimal

BCD

0

0000b

5

0101b

1

0001b

6

0110b

2

0010b

7

0111b

3

0011b

8

1000b

4

0100b

9

1001b

 

A fim de melhorar a eficiência desta codificação, é comum representar-se dois algarismos por byte. Note que, na tabela acima, cada dígito decimal requer apenas quatro bits, ou meio byte, para a sua representação.

Tal representação com dois dígitos em cada byte é chamada de BCD Comprimido (Packed BCD), e é a representação utilizada por este Driver, ou seja, os pacotes enviados por este Driver com valores BCD utilizam um byte de dados para cada dois algarismos do valor decimal representado. Por isto o campo Size, no caso de tipos de dados BCD, deve ser definido como a metade do número máximo de algarismos representados nos valores a serem lidos ou escritos.

 

Exemplo

Como exemplo, suponha que se pretenda enviar o valor 84 em decimal (0x54 em formato hexadecimal), usando a codificação BCD comprimido em um byte, o formato usado por este Driver.

O primeiro passo é separar os dois dígitos decimais que compõem o valor em sua representação decimal:

·Dígito 1: 8

·Dígito 2: 4

 

Se fossemos enviar o valor ao equipamento sem a codificação BCD, o valor enviado ao protocolo seria o próprio valor 84, que seria representado em formato hexadecimal pelo valor 0x54, ou ainda 01010100b em formato binário.

Usando o formato BCD comprimido, entretanto, representaremos os dois dígitos decimais separadamente em cada metade, ou nibble, do byte a ser enviado:

·BCD: 0x84 ou 10000100b

 

Note que, se interpretássemos por engano este valor 0x84 em formato BCD como um valor em formato hexadecimal sem esta codificação, e este valor fosse convertido para decimal, obteríamos o valor 132, sem significado algum.

A tabela a seguir apresenta mais alguns exemplos de valores decimais entre 0 (zero) e 99 e suas respectivas representações no formato BCD Comprimido em um byte, apresentados nos formatos hexadecimal e binário.

Algarismos decimais em codificação BCD Comprimido

Decimal

Hexadecimal

BCD (Hexadecimal)

BCD (Binário)

10

0x0A

0x10

00010000b

0

0x00

0x00

00000000b

99

0x63

0x99

10011001b

81

0x51

0x81

10000001b

45

0x2D

0x45

01000101b

 
Esta seção da documentação ajudou você a configurar este Driver?
Sim Não
Comentários (opcional):