RS232 specificaties en standaard
RS232 specificaties, inleiding
Communicatie zoals die gedefiniëerd is in de RS232 standaard is een asynchrone seriële communicatie methode. Het woord serieel betekent dat de informatie bit voor bit wordt verzonden. Asynchroon leert ons, dat de informatie niet op vooraf afgesproken momenten wordt verzonden. Het verzenden van data kan op elk willekeurig moment starten en het is daarbij de taak van de ontvanger om te detecteren wanneer een boodschap start en eindigt. Asynchrone communicatie heeft zowel voordelen als nadelen, die beide worden besproken in de volgende paragraaf.
RS232 bit treinen
De RS232 standaard beschrijft een communicatie methode waarbij informatie bit voor bit wordt verstuurd over een fysiek kanaal. De informatie moet opgedeeld zijn in datawoorden. De lengte van een datawoord is variabel. Op PC’s kan een lengte tussen 5 en 8 bits worden ingesteld. Deze lengte is de netto informatielengte van elk woord. Voor een goede overdracht worden extra bits toegevoegd om synchronisatie en error detectie mogelijk te maken. Het is belangrijk, dat zowel de zender als de ontvanger ingesteld staan op hetzelfde aantal databits. Anders kan de binnenkomende informatie fout worden geïnterpreteerd, of zelfs helemaal niet worden herkend.
Bij synchrone communicatie is een klok of trigger signaal aanwezig waarmee het begin van elke dataoverdracht wordt aangegeven. De afwezigheid van het kloksignaal maakt asynchrone communicatie goedkoper te implementeren. Minder lijnen zijn nodig in de kabel. Een nadeel is, dat de ontvanger op het verkeerde moment met ontvangst kan starten. In dat geval is tijdrovende hersynchronisatie noodzakelijk. Alle gegevens die tijdens die hersynchronisatieperiode worden verzonden gaan verloren. Een ander nadeel is, dat extra bits noodzakelijk zijn in de bit trein om het begin en einde van de nuttige informatie aan te geven. Deze extra bits gebruiken bandbreedte.
Databits worden met een vastgelegde frequentie verzonden, de baudrate. Zowel de zender als de ontvanger moeten geprogrammeerd zijn voor gebruik van dezelfde bitfrequentie. Nadat het eerste bit ontvangen is berekent de ontvanger op welke momenten de volgende databits kunnen worden verwacht. Op die momenten zal de lijn spanning worden bepaald.
Bij RS232 kan de lijnspanning in twee toestanden verkeren. De aan-stand is ook bekend onder de Engelse naam mark, de uit-stand als space. Andere lijn toestanden zijn niet mogelijk. Als er geen gegevens worden overgezonden wordt de lijn in de mark toestand gehouden.
Startbit
RS232 definiëert een asynchrone manier van communiceren. Dit betekent dat het verzenden van een datawoord op elk moment kan beginnen. Het op elk moment kunnen starten levert enkele problemen op aan de ontvangstzijde om te detecteren welk bit het eerste te ontvangen bit van een datawoord is. Om dit probleem op te lossen wordt elk datawoord vooraf gegaan door een signaleringsbit. Dit signaleringsbit, ook bekend als startbit, is altijd herkenbaar aan het space signaal niveau. Omdat de lijn in mark status is als er geen communicatie geschiedt kan het startbit eenvoudig door de ontvanger worden herkend.
Databits
Direct na het startbit worden de databits verzonden. Een bitwaarde 1 zorgt ervoor dat de lijn in de mark status gaat terwijl de bitwaarde 0 wordt gerepresenteerd door de space status. Het minst significante bit wordt altijd als eerste verzonden.
Pariteitsbit
Om transmissiefouten te kunnen detecteren is het mogelijk om aan het eind van het datawoord automatisch een pariteitsbit te laten genereren. De zender berekent de waarde van dit bit aan de hand van de verzonden informatie. De ontvanger voert dezelfde berekening uit en controleert dan of het ontvangen pariteitsbit overeen komt met de berekende waarde. Dit is verder beschreven in een andere paragraaf.
Stopbits
Veronderstel, dat de ontvanger het startbit gemist heeft omdat er op dat moment ruis op de lijn aanwezig was. In dat geval start de ontvangst met het eerstvolgende databit dat een space waarde heeft. Hierdoor wordt verminkte data ontvangen. Een mechanisme moet aanwezig zijn om hersynchronisatie te bewerkstelligen. Om dit te doen is het begrip framing geïntroduceerd. Framing betekent, dat de databits en het pariteitsbit worden omringd door start- en stopbits. De tijdsperiode tussen de start- en stopbits is constant en wordt bepaald door de baudrate en het aantal data- en pariteitsbits. Het startbit wordt altijd aangegeven met het space niveau, het stopbit met mark niveau. Als de ontvanger een andere waarde dan mark detecteert op het moment dat het stopbit had moeten worden ontvangen, dan is daarmee gedetecteerd dat er een framing error heeft plaatsgevonden. Hierdoor wordt een foutconditie in de UART gezet. Vervolgens wordt geprobeerd op nieuw binnenkomende bits te hersynchroniseren.
Om opnieuw te synchroniseren zoekt de ontvanger in de binnenkomende gegevens naar correcte paren van start- en stopbits. Dit werkt, zolang er genoeg variatie is in de bitpatronen van de binnenkomende datawoorden. Als bijvoorbeeld de datawaarde 0 continu verzonden wordt kan echter in het geheel geen hersynchronisatie plaatsvinden.
Het stopbit dat het einde van het data blok aangeeft kan verschillende lengtes hebben. Eigenlijk is het niet een echt bit, maar de minimum periode dat de lijn in de mark stand moet zijn na het einde van elk datawoord. Op PC’s kan deze tijdsperiode worden ingesteld op drie waarden: de tijd benodigd voor 1, 1,5 of 2 bits. 1,5 bits kan alleen worden gebruikt bij datawoorden van 5 bits lengte en 2 bits is alleen toepasbaar voor langere woorden. Een stopbit lengte van 1 bit is toepasbaar bij alle datawoord lengtes.
RS232 fysieke eigenschappen
De RS232 standaard beschrijft een communicatie methode waarmee het mogelijk is om te communiceren onder verschillende omstandigheden. Dit heeft invloed op de maximaal toelaatbare spanningen en dergelijke op de pinnen. In de originele definitie zijn de technische mogelijkheden van die tijd meegenomen. De maximale baudrate die gedefiniëerd is is bijvoorbeeld 20 kbps. Met tegenwoordige elektronica als de 16550A UART zijn maximale snelheden van 1,5 Mbps mogelijk.
Spanningen
Het signaalniveau van de RS232 pinnen kan zich in twee toestanden bevinden. Een hoog bit, ofwel een mark status, wordt aangegeven met een negatieve spanning, terwijl een laag bit of space status herkenbaar is aan een positieve spanning. Dit kan verwarrend overkomen, omdat normaal hoge logische waardes worden gerepresenteerd door hoge spanningen. De spanningslimieten worden in de volgende tabel getoond.
Niveau | Zender grenswaarden (V) | Ontvanger grenswaarden (V) |
---|---|---|
Space status (0) | +5 … +15 | +3 … +25 |
Mark status (1) | -5 … -15 | -3 … -25 |
Ongedefiniëerd | – | -3 … +3 |
Meer informatie over de spanningsniveaus van RS232 en andere seriële interfaces kan worden gevonden in de interface vergelijkingstabel.
Het maximale spanningsniveau dat de computer kan genereren op de poort kan invloed hebben op de maximaal toelaatbare kabellengte en communicatiesnelheid. Als het spanningsverschil te klein is kan dataverminking optreden. Om een voorbeeld te geven, mijn Toshiba laptop heeft een mark spanning van -9,3 V, vergeleken met -11,5 V voor mijn desktop computer. De laptop heeft problemen om te communiceren met Mitsubishi PLC’s in industriële omstandigheden met grote stoorbronnen terwijl er bij de desktop in het geheel geen dataverminking optreedt met gebruikmaking van dezelfde kabel. Dus, zelfs ver buiten de minimaal noodzakelijke spanningsniveaus kan een extra 2 volts een aanzienlijk verschil geven in de communicatiekwaliteit.
Ondanks de hoge spanningen die aanwezig zijn is het niet mogelijk om een seriële poort te beschadigen door kortsluiting. Alleen het aansluiten van externe spanningsbronnen met hoge stromen zal uiteindelijk de driverchips in rook doen laten opgaan. In dat geval zal echter meestal de UART nog steeds niet beschadigd zijn.
Maximale kabel lengtes
Kabellengte is één van de meest besproken onderwerpen in RS232 wereld. De standaard heeft hier een duidelijk antwoord op. De maximaal toegestane kabellengte is 15 meter, of de kabellengte die overeen komt met een capaciteit van 2500 pF. De laatste regel wordt echter vaak vergeten. Dit betekent, dat door gebruik te maken van een kabel met een lage capaciteit het mogelijk is grotere afstanden te overbruggen zonder buiten de limieten van de standaard te vallen. Als bijvoorbeeld UTP CAT-5 kabel wordt toegepast met een typische capaciteit van 57 pF/m, dan is de maximaal toegestane kabellengte 44 meter.
Bij de in de standaard genoemde kabellengte is het mogelijk de maximale communicatiesnelheid te handhaven. Als de snelheid met een factor 2 of 4 wordt verlaagd, dan neemt de maximaal mogelijke lengte dramatisch toe. Texas Instruments heeft een aantal jaren geleden praktische experimenten uitgevoerd om bij verschillende baudrates de maximaal toegestane kabellengte te bepalen. Houd hierbij in het achterhoofd, dat de RS232 standaard oorspronkelijk ontwikkeld is voor snelheden tot 20 kbps. Door het halveren van de maximale communicatiesnelheid neemt de maximaal toegestane kabellengte toe met een factor tien!
Baudrate | Maximale kabellengte |
---|---|
19200 | 15m |
9600 | 150m |
4800 | 300m |
2400 | 900m |
Error detectie
Één manier om fouten te detecteren tijdens de dataoverdracht is reeds besproken. Het is het frame detectie mechanisme waarmee wordt gecontroleerd of binnenkomende databits worden omringd door een paar van start- en stopbits. Voor verdere controle op fouten kan het pariteitsbit worden gebruikt. Het gebruik van dit bit is echter niet noodzakelijk. Als het optreden van fouten zeldzaam is (zoals bij het communiceren met een intern modem) of als een protocol op hoger niveau wordt gebruikt voor error detectie en correctie (Z-modem, RAS, etc) kan de communicatiesnelheid worden verhoogd door de pariteitsmogelijkheid die op de UART aanwezig is niet te gebruiken.
Pariteit is een eenvoudige manier om een datawoord te coderen waarbij een mechanisme aanwezig is om fouten in de informatie te detecteren. De methode zoals die bij seriële communicatie gebruikt wordt voegt één bit toe aan elk datawoord. De waarde van dit bit hangt af van de waarde van het datawoord. Het is noodzakelijk, dat zowel de zender als de ontvanger hetzelfde algoritme gebruiken om de waarde van het pariteitsbit te berekenen. Anders kan de ontvanger fouten detecteren die in werkelijkheid niet aanwezig zijn.
Even pariteit
Eenvoudig gezegd kan het pariteitsbit op twee manieren worden berekend. Wanneer even pariteit wordt toegepast zal het aantal verzonden hoge informatiebits altijd even zijn. Als het aantal bits met logische waarde één in het datawoord oneven is, dan zal een logische één als pariteitsbit worden toegevoegd. Anders zal een logische nul worden gebruikt.
Oneven pariteit
Het oneven pariteitssysteem lijkt op het even pariteitssysteem, maar in dit geval is het aantal hoge bits altijd oneven.
Nadelen van het pariteitssysteem
Een pariteitssysteem dat gebruik maakt van één bit voor elk datawoord is niet in staat om alle voorkomende fouten te detecteren. Allen fouten waarbij een oneven aantal bits is veranderd zullen worden gedetecteerd. Het tweede probleem is, dat er geen mogelijkheid is om na te gaan welk bit fout is verzonden. Waar nodig moet een protocol op hoger niveau worden gebruikt om de zender de verminkt ontvangen informatie opnieuw te laten verzenden. Daarom worden op datalijnen met storing vaak andere detectiesystemen toegeoast die kunnen verzekeren dat de ontvangen informatie werkelijk foutloos is aangekomen. Deze systemen werken meestal niet op enkele datawoorden, maar op groepen van woorden. Bekende systemen zijn:
- Hamming codering
- CRC16 cyclic redundancy check
- CCITT-16 cyclic redundancy check
- CRC-DNP cyclic redundancy check
- CRC32 cyclic redundancy check
1998 | Application Note 83 uitgegeven door Dallas Semiconductor—nu samen gegaan met Maxim—waar in gemakkelijk leesbare (Engelse) taal alle aspecten van de RS-232 interface beschreven worden. | Maxim |
2004 | Application Report SLLA067A gepubliceerd door Texas Instruments over allerhande praktische natuurkundige aspecten van hedendaagse interfacesystemen, inclusief een grafiek waarin lijnlengte en communicatiesnelheid tegen elkaar zijn uitgezet. | Texas Instruments |
Imagination is more important than knowledge...
ALBERT EINSTEIN
|