PLC - Programovatelné logické automaty
PLC-AUTOMATIZACE - DATA - KÓDOVÁNÍ / DEKÓDOVÁNÍ - BCD KÓDOVÁNÍ Provoz webu zajišťuje:

www.hapesoft.cz

BCD KÓDOVÁNÍ

Charakteristika

BCD (Binary Code Decimal) - binárně kódované decimální číslo. Ve výpočetní technice a elektronických systémech se často používá binární kódování desítkového čísla tak, že každá desítková číslice má přiřazen pevný počet bitů, obvykle 4 Bity (výjimečně 8 Bitů, dříve i např. 6 Bitů). Principielně se jedná o "oříznutý" kód hexadecimální soustavy v rozsahu 4 bity, kdy bitové kombinace, které neodpovídají číslicím 0-9, tedy hodnoty 10-15, jsou buď zakázány nebo mohou být použity pro vyjádření znaménka, chyby, přetečení, polohy desetinné čárky.

Kódování BCD nepatří mezi kódování, které poskytuje zabezpečení kódu.

Použití

BCD kódován se používá v Bytově nebo slovně (word) orientovaných systémů (tj u počítačů a výpočetní technice). Pokud se jedná o nekomprimovaný BCD kód, předpokládá se, že celý Byte eventuelně slovo (word) je použit pro jednu číslici jako takovou, při použití specielního znaku i pro znaménko. Komprimovaný kód BCD je úspornější v tom smyslu, že minimalizuje počet nutných bitů pro zápis jedné číslice, tj. 4 bity (Nibble) pro vyjádření číselné hodnoty 0-9. V tomto případě je možno do jednoho Byte uložit dvě číslice - dekády, tj. dekadicky 00-99, při použití slova (word) až číslice (dekády) čtyři, tj. dekadicky 0000-9999. Praktický způsob kódování se může u různých aplikací lišit (např. při použití doplňku +3).

U PLC systémů je BCD kód využíván pro zadávání jednoduchých číselných hodnot (předvolby) nebo pro číselnou indikaci stavu tam, kde není nutno použít modernější prostředky vizualizace nebo kdy z hlediska obsluhy stroje je toto řešení uživatelsky jednoduché a nenáročné viz obrázek 1.

Obrázek 1
Příklad využití komprimovaného kódu BCD u přepínačů (vstupy) a zobrazení (výstupy).

Pokud jsou číslicové přepínače používány samostatně, každý pro jinou funkci (jednomístná volba), je jejich připojení k digitálním vstupům omezeno pouze pořadím bitů podle jejich váhy a správným zpracováním v programu PLC. Pokud jsou číslicové přepínače použity pro nastavení hodnoty s více číslicemi, více dekád, je nutno zachovat pořadí Nibblů tak, jak je uvedeno, aby bylo možno provést relevantní konverzi z kódu BCD na binární.

Výstupní informace je podle obrázku vyjádřena taktéž v kódu BCD, v tomto případě se předpokládá, že digitální výstupy jsou připojeny sedmisegmentové jednotky obsahují dekodér, který převádí kód BCD na indikační segmenty zobrazovače.

Výhody a nevýhody

Výhodou kódování BCD je přesná reprezentace hodnoty, kdy nedochází k chybě při zaokrouhlování nebo ztrátě nejnižších řádů jako u typu Real. Další předností je snadná konverze do čitelné reprezentace (dřívější displeje).

Ačkoliv je BCD kód relativně nehospodárný z hlediska využití bitů pro reprezentaci velkých čísel, přináší výhodu v úspoře propojovacích signálů u číslicových předvoleb. Podle obrázku 1 je patrné, že pro 4 dekády je potřeba pouze 4 x 4 signálových vodičů a tím i pouze 16 vstupů. V případě číslicových přepínačů s přímým polohovým výstupem, by bylo potřeba 4 x 10 signálových vodičů a tím i 40 digitálních vstupů, což by bylo nehospodárné a je nutno zajistit složitější dekódování hodnoty při zpracování. Stejný princip úspory platí i pro stranu výstupů.

Nevýhodou kódování BCD je velká náročnost (nehospodárnost) na objem bitů při použití nekomprimovaného kódu BCD (i když se snadněji zpracovává) a ani při použití komprimovaného kódu BCD nelze dosáhnout maximálního využití kombinací na daném počtu bitů. Složitější je také zpracování výpočtů ve výpočetní technice než při použití binární soustavy.

Hazardní stavy

Hazardní stav může nastat v případě, že ke vstupům PLC jsou připojeny například číslicové přepínače (0-9), které poskytují binární kódování stavu (polohy natočení). K hazardu dochází při přechodu mezi číslicemi 7 - 8, kdy může dojít k vygenerování hodnoty vyšší než 9 nebo naopak hodnoty 0, a přechod 9 - 0. Toto je způsobeno vlivem nepřesnosti dělícího kotouče, viz obrázek 2. Tyto stavy je nutno ošetřit programově.

Obrázek 2
Kódový kotouč číslicového přepínače v kódu BCD,
v sektoru 0 jsou vyznačeny body snímání kódu,
který se mění podle vzájemného natočení snímačů a kódového kotouče..
 
Poznámka
Výstupy programových čítačů a některých časovačů v PLC používají zpravidla kódování BCD rozsahu 000-999.

Základní vyjádření BCD

Základná vyjádření kódování BCD obsahuje číslice, resp. hodnoty v rozsahu 0 - 9. Jedná-li se komprimovaný kód BCD, je možno v rámci jednoho Byte vyjádřit dvě číselné pozice (viz tabulka 1), resp. u slova (word) pozice čtyři.

  porovnání kódů v rozsahu 8 bitů (Byte)
BCD HEX BIN
nekompri-
movaný
kompri-
movaný
nekompri-
movaný
kompri-
movaný
nekompri-
movaný
kompri-
movaný
00 x0 00 x0 0000 0000 xxxx 0000
01 x1 01 x1 0000 0001 xxxx 0001
02 x2 02 x2 0000 0010 xxxx 0010
03 x3 03 x3 0000 0011 xxxx 0011
04 x4 04 x4 0000 0100 xxxx 0100
05 x5 05 x5 0000 0101 xxxx 0101
06 x6 06 x6 0000 0110 xxxx 0110
07 x7 07 x7 0000 0111 xxxx 0111
08 x8 08 x8 0000 1000 xxxx 1000
09 x9 09 x9 0000 1001 xxxx 1001
0 ... první pozici nelze u nekomprimovaného kódu využít pro vyjádření další číslice, vždy 0
x ... pozice může být u komprimovaného kódu využita pro vyjádření další číslice (0-9dec)
Tabulka 1
Vyjádření číslic v kódování BCD a porovnání s hexadecimální a binární soustavou

Modifikace a doplňky kódu BCD

Desetinná čárka

V roce 1960 zavedla společnost IBM u sálových počítačů modifikaci kódu tak, aby bylo možno určit polohu desetinné čárky v reálném čísle, kdy byl nejvyšší Nibble ze skupiny n Byte vyhrazen pro určení polohy desetinné čárky, tedy poloha čárky + 7 číslic. Alternativou k tomuto řešení je použití pevné desetinné čárky, kdy odpadá nutnost vyjádření její polohy, protože je předem dána.

Záporná čísla v BCD

Dále byly zavedeny znaky pro kladné a záporné číslo odvozené od platebních karet; Chex (credit) (1100bin), tedy kladné (+) a Dhex (debet) (1101bin), tedy záporné (-), pro čísla bez znaménka pak znak Fhex (1111bin). Tyto znaky se ukládají do nejnižšího Nible skupiny n Byte. V systému ILE PRG byl však pro vyjádření kladného čísla použit znak Fhex (1111bin) a Dhex (1101bin) pro záporná čísla. Aby těchto kombinací nebylo málo, lze konverzi čísla Integer na BCD vyjádřit i tak, že nejvyšší Nibble v BCD, stejně jako nejvyšší bit Integer, bude rezervován pro znaménko, potom nejvyšší Niblle obsahuje hodnotu 0hex (0000bin) pro kladné číslo a hodnotu Fhex (1111bin) pro číslo záporné. Těchto modifikací existuje celá řada podle výrobce a i podle aplikace.

Konverze BCD

Konverze BCD na číslo nebo čísla na BCD není nijak obtížná, je však třeba mít na paměti následující:

  • nelze provést konverzi do BCD, pokud počet číslic je větší než počet Nibblů v cílové paměťové oblasti vyhrazených pro uložení číslic
  • nelze provést konverzi z BCD, pokud velikost cílové oblasti neposkytuje dostatečnou velikost pro uložení bitové kombinace podle zvoleného typu konverze
  • nelze konvertovat číslo se znaménkem do BCD, neposkytuje-li konverze specielní znaky pro vyjádření znaménka
  • nelze konvertovat reálné číslo do BCD, neposkytuje-li konverze specielní znaky pro znaménko a polohu desetinné čárky
  • nelze konvertovat takovou kombinaci bitů v rámci Nibblu, vyjadřuje-li kombinace hodnotu vyšší než 9 a nejedná-li se o definovaný specielní znak

Příklady zápisu čísel v BCD

informační jednotka
 Dword
 Word n n+1
 Byte n n+1 n+2 n+3
 Nibble n n+1 n+2 n+3 n+4 n+5 n+6 n+7
 
nekomprimovaný kód BCD se základem Byte
 Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
 Hodnota  0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1
 Dec/Hex 0 9 0 1 0 7 0 7
  celé číslo bez znaménka = 9177 (bez specielních znaků)
 
pouze kladná čísla, komprimovaný kód BCD
 Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
 Hodnota 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1
 Dec/Hex 3 9 5 1 8 7 4 7
celé číslo bez znaménka = 39518747 (bez specielních znaků)
číslo bez znaménka s pevnou desetinnou čárkou (zvoleno 2) = 395187,47 (bez specielních znaků)
číslo bez znaménka s pohyblivou desetinnou čárkou = 9518,747 (Nibble n = poloha desetinné čárky)
 
kladná / záporná čísla, komprimovaný kód BCD
 Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
 Hodnota 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1
 Hex 3 9 5 1 8 7 4 D
celé číslo se znaménkem -3951874 (Nibble n+7 = znaménko)
číslo se znaménkem s pevnou desetinnou čárkou (zvoleno 2) = -39518,74 (Nibble n+7 = znaménko)
číslo se znaménkem a s pohyblivou desetinnou čárkou = -951,874
(Nibble n+7 = znaménko, Nibble n = poloha desetinné čárky)
 
kladná / záporná čísla, komprimovaný kód BCD
 Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
 Hodnota 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1
 Hex F 9 5 1 8 7 4 7
celé číslo se znaménkem -9518747 (Nibble n = znaménko)
číslo se znaménkem s pevnou desetinnou čárkou (zvoleno 2) = -95187,47 (Nibble n = znaménko)
Tabulka 2
Vyjádření číslic v kódování BCD pro různé případy použití specielních znaků.

PLC-AUTOMATIZACE - DATA - KÓDOVÁNÍ / DEKÓDOVÁNÍ - BCD KÓDOVÁNÍ
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.