PLC bogen/Tal og data
TAL OG DATA
[redigér]Emner:
- Talsystemer: binær, octal, decimal og hexadecimal.
- Binær regning: addition, subtraktion, og boleanske operatorer.
- Kodede værdier: BCD og ASCII
- Fejl detektering: prioritet, gray kode, og checksum
Mål:
- At have kendskab til tal systemerne binær, octal og hexadecimal
- At være i stand til at omregne imellem talsystemer
- At forstå 2s negative tal
- At være i stand til at kode/afkode ASCII og BCD værdier
- At have kendskab til grundlæggende fejl detekterings teknikker
Indledning
[redigér]Base 10 (decimal) tal udviklede sig naturligt, da de originale udviklere (sandsynligvis) havde 10 fingre, eller 10 cifre. Overvej nu logiske systemer, som kun har ledninger der kan være tændte eller slukkede. Når man tæller med en ledning er der kun cifrene 0 og 1, det giver et base 2 talsystem. Talsystemer til computere er ofte baseret på base 2 tal, men base 4, 8, 16 og 32 bruges ofte. Figur 13.1 viser en liste over talsystemer, et eksempel på hvordan der tælles i de forskellige talsystemer er vist i figur 13.2.
Base | Navn | Data enhed |
2 | Binær | Bit |
8 | Octal | Nibble |
10 | Decimal | Digit |
16 | Hexadecimal | Byte |
- Figur 13.1 Tal systemer
Decimal | Binær | Octal | Hexadecimal |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | a |
11 | 1011 | 13 | b |
12 | 1100 | 14 | c |
13 | 1101 | 15 | d |
14 | 1110 | 16 | e |
15 | 1111 | 17 | f |
16 | 10000 | 20 | 10 |
17 | 10001 | 21 | 11 |
18 | 10010 | 22 | 12 |
19 | 10011 | 23 | 13 |
20 | 10100 | 24 | 14 |
- Figur 13.2 Tal i Decimal, Binær, Octal og Hexadecimal
At ændre tallets base ændre ikke på dens værdi, kun hvordan den skrives. Matematikkens basale regler gælder stadig, men mange begyndere vil føle sig desorienterede. Dette kapitel dækker de basale emner der er nødvendige for at bruge de mere komplekse programmerings instruktioner senere I bogen. Dette vil inkludere de grundlæggende talsystemer, omregning imellem talsystemer, og nogle data orienterede emner.
Numeriske værdier
[redigér]Binær
[redigér]Det mest fundamentale talsystem I computere er det binære. Et enkelt binær ciffer (et bit) svare til tilstanden af en enkel ledning. Hvis spændingen på ledningen er høj er bit værdien 1, og hvis der ikke er en spænding er værdien 0. Hvis der bruges to eller flere ledninger tilføjer de hver et nyt ciffer. Hvert binært tal har en tilsvarende digital værdi. Figur 13.3 viser hvordan man omregner et binært tal til det tilsvarende decimale tal. Læs cifrene fra højre. Den mindst betydende ciffer er 1, og den er i den 0’te position, for at omregne det til et tilsvarende decimal tal skal tal basen (2) opløftes til positionen nummeret, og multipliceres med cifferet. Ved det mindst betydende ciffer er det let. Det mest betydende ciffer, med værdien 1 på den sjette position, omregnes med tal basen opløftet til potensen 6 og multipliceret med ciffer værdien 1. Denne metode kan også bruges til at omregne andre tal systemer til decimal.
Binær tal: | 1 | 1 | 0 | 1 | 0 | 0 | 1 | |
Tilsvarende Decimaltal: | ||||||||
= | 64 | |||||||
= | 32 | |||||||
= | 0 | |||||||
= | 8 | |||||||
= | 0 | |||||||
= | 0 | |||||||
= | 1 | |||||||
105 |
Figur 13.3 Omregning af et binært tal til et decimal tal
Decimalt tal kan omregnes til binære tal ved division, som vist i figur 13.4. Ved denne teknik begyndes med at dividere decimaltallet med basen i det nye talsystem. Brøkdelen efter decimaltallet giver det mindst betydende ciffer i det nye tal, når det multipliceres med tal basen. Det hele tal divideres nu igen, og det fortsættes til det hele tale er nul. Denne metode virker også til omregning af andre talsystemer.
Start med decimal tallet 932 | Multiplicer delen efter kommaet med basen, her 2 da det er binær | ||||||||
= | 466 | ,0 | = | 0 | |||||
Omregn til binær (base 2) | = | 233 | ,0 | = | 0 | ||||
= | 116 | ,5 | = | 1 | |||||
= | 58 | ,0 | = | 0 | |||||
= | 29 | ,0 | = | 0 | |||||
= | 14 | ,5 | = | 1 | |||||
= | 7 | ,0 | = | 0 | |||||
= | 3 | ,5 | = | 1 | |||||
= | 1 | ,5 | = | 1 | |||||
= | 0 | ,5 | = | 1 | |||||
Færdig | Det binære tal er: 1110100100 |
- Denne metode virker også med andre tal baser, nævneren og tallet der multipliceres med skal ændres til det nye tal base.
- Figur 13.4 Omregning fra decimal til binær
De fleste større lommeregnere kan omregne imellem tal baser. Men det er vigtigt af forstå hvordan der omregnes imellem tal baser.
Binære har tre basale former - et bit, et byte og et ord (eng. Word). Et bit er et enkelt binær ciffer, et byte er otte binære cifre, og et ord er 16 cifres. Der er vist et byte og et ord i Figur 13.5. Læg mærke til at ved begge tal er det mindst betydende (Least Significant Bit – LSB) ciffer på højre side af tallene, og i ordet er der to byte, den til højre er det mindst betydende byte.
Byte | Ord | ||||||
MSB | LSB | MSB | LSB | ||||
01101011 | |||||||
mest betydende byte | mindst betydende byte |
- Figur 13.5 Byte og ord
Binære numre kan også repræsentere decimaler, som vist i figur 13.6. Omregningen til og fra binær er den samme som den tidligere viste teknik, bortset fra at cifrene til højre for kommaet er decimaler.
- Binær 101,011
- decimal
- Figur 13.6 Et binært decimalt tal
BCD (Binært Kodet Decimal)
[redigér]Binært kodede decimal (BCD) tal bruger fire binære bit (et nibble) til hvert ciffer. (Note: dette er ikke et base tal system, men repræsentere kun decimal tal). Det betyder at et byte kan indeholde to cifre fra 00 til 99, hvor det i binært vil kunne indeholde fra 0 til 255. Et separat bit skal bruges til negative tal. Denne metode er meget populær når tal skal bruges til indgang eller udgang fra en computer. Et eksempel på et BCD tale er vist i figur 13.16, i eksemplet er der fire cifre, der skal derfor bruges 16 bit. Læg mærke til at det mest betydende ciffer og bit begge er i venstre side. BCD tallet er det tilsvarende binære tal for hver ciffer.
1 | 2 | 6 | 3 | Note: | Dette eksempel viser fire cifre i to byte, hex værdien vil også være 1263 | |
0001 | 0010 | 0110 | 0011 |
- Figur 13.16 Et BCD kodet tal
De fleste PLC’er gemmer BCD tal I ord, det tillader værdier imellem 0000 og 9999. De har også funktioner til at omregne til og fra BCD. Det er muligt at regne med BCD tal, det er ualmindeligt, men når det er nødvendigt har de fleste PLC’er funktioner til at udføre udregningerne. Men når du laver udregninger bør du undgå BCD og bruge integrer matematik i stedet. Vær opmærksom på hvor dine tal er BCD værdier og omregn dem til integer eller binære værdier før der udføres nogen udregninger.
Karakterkoder
[redigér]ASCII (American Standard Code for Information Interchange)
[redigér]Når man arbejder med ikke numeriske værdier eller data kan man bruge ren tekst karakter og sætninger (strings). Hvert karakter gives en unikt identitet der kan bruges til at gemme og behandle data. ASCII (American Standard Code for Information Interchange) er et meget brugt karakter kode system, vist i Figur 13.17, tabellen indeholder de basale skrevne karakterer, nogle speciel karakterer, og nogle kontrol koder. Hvert enkelt har et unikt tal, for eksempel bogstavet A, det genkendes af de fleste computere når de ser nummeret 65.
decimal | hex | binær | ANCII | decimal | hex | binær | ANCII |
0 | 0 | 00000000 | NUL | 64 | 40 | 01000000 | @ |
1 | 1 | 00000001 | SOH | 65 | 41 | 01000001 | A |
2 | 2 | 00000010 | STX | 66 | 42 | 01000010 | B |
3 | 3 | 00000011 | ETX | 67 | 43 | 01000011 | C |
4 | 4 | 00000100 | EOT | 68 | 44 | 01000100 | D |
5 | 5 | 00000101 | ENQ | 69 | 45 | 01000101 | E |
6 | 6 | 00000110 | ACK | 70 | 46 | 01000110 | F |
7 | 7 | 00000111 | BEL | 71 | 47 | 01000111 | G |
8 | 8 | 00001000 | BS | 72 | 48 | 01001000 | H |
9 | 9 | 00001001 | HT | 73 | 49 | 01001001 | I |
10 | A | 00001010 | LF | 74 | 4A | 01001010 | J |
11 | B | 00001011 | VT | 75 | 4B | 01001011 | K |
12 | C | 00001100 | FF | 76 | 4C | 01001100 | L |
13 | D | 00001101 | CR | 77 | 4D | 01101101 | M |
14 | E | 00001110 | S0 | 78 | 4E | 01001110 | N |
15 | F | 00001111 | S1 | 79 | 4F | 01001111 | O |
16 | 10 | 00010000 | DLE | 80 | 50 | 01010000 | P |
17 | 11 | 00010001 | DC1 | 81 | 51 | 01010001 | Q |
18 | 12 | 00010010 | DC2 | 82 | 52 | 01010010 | R |
19 | 13 | 00010011 | DC3 | 83 | 53 | 01010011 | S |
20 | 14 | 00010100 | DC4 | 84 | 54 | 01010100 | T |
21 | 15 | 00010101 | NAK | 85 | 55 | 01010101 | U |
22 | 16 | 00010110 | SYN | 86 | 56 | 01010110 | V |
23 | 17 | 00010111 | ETB | 87 | 57 | 01010111 | W |
24 | 18 | 00011000 | CAN | 88 | 58 | 01011000 | X |
25 | 19 | 00011001 | EM | 89 | 59 | 01011001 | Y |
26 | 1A | 00011010 | SUB | 90 | 5A | 01011010 | Z |
27 | 1B | 00011011 | ESC | 91 | 5B | 01011011 | [ |
28 | 1C | 00011100 | FS | 92 | 5C | 01011100 | yen |
29 | 1D | 00011101 | GS | 93 | 5D | 01011101 | ] |
30 | 1E | 00011110 | RS | 94 | 5E | 01011110 | ^ |
31 | 1F | 00011111 | US | 95 | 5F | 01011111 | _ |
32 | 20 | 00100000 | mellemrum | 96 | 60 | 01100000 | ` |
33 | 21 | 00100001 | ! | 97 | 61 | 01100001 | a |
34 | 22 | 00100010 | " | 98 | 62 | 01100010 | b |
35 | 23 | 00100011 | # | 99 | 63 | 01100011 | c |
36 | 24 | 00100100 | $ | 100 | 64 | 01100100 | d |
37 | 25 | 00100101 | % | 101 | 65 | 01100101 | e |
38 | 26 | 00100110 | & | 102 | 66 | 01100110 | f |
39 | 27 | 00100111 | ' | 103 | 67 | 01100111 | g |
40 | 28 | 00101000 | ( | 104 | 68 | 01101000 | h |
41 | 29 | 00101001 | ) | 105 | 69 | 01101001 | i |
42 | 2A | 00101010 | * | 106 | 6A | 01101010 | j |
43 | 2B | 00101011 | + | 107 | 6B | 01101011 | k |
44 | 2C | 00101100 | , | 108 | 6C | 01101100 | l |
45 | 2D | 00101101 | - | 109 | 6D | 01101101 | m |
46 | 2E | 00101110 | . | 110 | 6E | 01101110 | n |
47 | 2F | 00101111 | / | 111 | 6F | 01101111 | o |
48 | 30 | 00110000 | 0 | 112 | 70 | 01110000 | p |
49 | 31 | 00110001 | 1 | 113 | 71 | 01110001 | q |
50 | 32 | 00110010 | 2 | 114 | 72 | 01110010 | r |
51 | 33 | 00110011 | 3 | 115 | 73 | 01110011 | s |
52 | 34 | 00110100 | 4 | 116 | 74 | 01110100 | t |
53 | 35 | 00110101 | 5 | 117 | 75 | 01110101 | u |
54 | 36 | 00110110 | 6 | 118 | 76 | 01110110 | v |
55 | 37 | 00110111 | 7 | 119 | 77 | 01110111 | w |
56 | 38 | 00111000 | 8 | 120 | 78 | 01111000 | x |
57 | 39 | 00111001 | 9 | 121 | 79 | 01111001 | y |
58 | 3A | 00111010 | : | 122 | 7A | 01111010 | z |
59 | 3B | 00111011 | ; | 123 | 7B | 01111011 | { |
60 | 3C | 00111100 | < | 124 | 7C | 01111100 | | |
61 | 3D | 00111101 | = | 125 | 7D | 01111101 | } |
62 | 3E | 00111110 | > | 126 | 7E | 01111110 | r arr. |
63 | 3F | 00111111 | ? | 127 | 7F | 01111111 | l arr. |
- Figur 13.17 ASCII Karakter table
"PLC bogen/Tal og data" er en del af wikibogen: PLC bogen | ||
Forrige side: PLC sekvens | Næste side: PLC hukommelse |