Deze website maakt gebruik van zogeheten cookies. Klik op [OK] om deze melding te verbergen. Klik hier om meer informatie te lezen over de gebruikte cookies.
P O L Y T E C H . N U
Click here fore my surplus stuff sale!!!
Nederlands

serial port/RS232

Nederlandse seriele poort
inleiding
Naar aanleiding van een gesprek met een collega heb ik het plan opgevat om een artikel te schrijven over de seriële poort met bijbehorende achtergrondinformatie. De seriële poort, ook wel aangeduid als de RS232 poort, is naar huidige maatstaven "hopeloos" verouderd maar (b)lijkt de tijd te hebben overleefd. De kracht zit waarschijnlijk in de "eenvoud" en redelijk universeel worden ingezet.

geschiedenis
Het RS232 protocol is in 1969 gepubliceerd door Electronic Industries Association (EIA, sinds 1997 Electronic Industries Alliance) en in de jaren '80 populair geworden voor communicatie tussen een computer en een telefoon modem. Later is de muis aangesloten op de COM poort. Later is de muis (en toetsenbord) aangesloten op een "eigen" PS2 poort en ondertussen is USB de standaard voor dergelijke randapparatuur. In beginsel is de COM poort betrekkelijk traag en grote data hoeveelheiden leveren problemen op waardoor voor hogere data snelheden uitgeweken is naar alternatieven. Voor "eenvoudige" communicatie is de COM poort nog steeds in gebruik.

RS232 protocol
De seriële poort wordt ook wel COM poort of RS232 poort genoemd. Doorgaans wordt hetzelfde bedoeld, maar de definities liggen iets genuanceerde. De poort heet formeel de "COM poort" zoals COM1 omdat er meerdere COM poorten mogelijk zijn en deze genummerd worden beginnend bij 1. Het protocol dat wordt toegepast is het RS232 protocol. In dit protocol staan afspraken hoe de data moet worden verwerkt. Het doel hiervan is dat alle fabrikanten de COM poort ontwerpen zodat deze allemaal met elkaar kunnen communiceren.
De letters RS in RS232 staan voor het Engelse Radio Standard of Recommended Standard. Officieel heet het protocol nu ANSI/EIA/TIA-232-F omdat in het begin van de jaren '90 het beheer van de RS-standaarden overgenomen is door ANSI/EIA/TIA. De RS232 norm bestaat dus formeel niet meer, maar de term RS232 is nu nog wel gebruikelijk.

digitale informatieoverdracht
In een digitaal systeem zoals een computer of logische chips werken uitsluitend met enen en nullen ofwel hoog en laag signalen. Bij seriële communicatie is een "logische" één tussen -3...-15 Volt en een "logische" nul is tussen +3...+15 Volt. (Tussen -3...+3 Volt is dus geen geldige spanning!) In rust is er dus standaard een positieve spanning aanwezig. Het voordeel hiervan is dat als er een positieve spanning gemeten wordt bij de ontvanger, dat de kabel verbonden is. Gevoelsmatig is een logische één ook een positieve spanning en een logisch nul een negatieve spanning, maar dat is dus in de praktijk niet zo!

TTL communicatie
De signalen van (bijvoorbeeld 4000/7400) chips zijn 0 of +5 Volt. De bits zijn hiermee niet compatibel met een seriële verbinding. Voor communicatie met CMOS chips is daarom een converter nodig omdat deze een "logische" één hebben bij 5 Volt en een "logische" nul bij 0 Volt. Wanneer de bit snelheid en samenstelling gelijk is, kan een seriële poort communiceren met een chips of andere gelijkwaardige logica mits de spanningen worden geconverteerd. Yaesu radiozendontvangers (zoals de FT-817, FT-857 en FT-897) hebben bijvoorbeeld een TTL data poort aanwezig waarmee met gekoppelde apparatuur zoals een pc kan worden gecommuniceerd mits de signaalniveaus overeenkomstig zijn. Een +12 V bitje moet 0 V worden en -12 V bitje moet +5 V worden voor conversie van serieel naar TTL en omgekeerd. De meest nette methode is met een MAX232 chip (met vier tantaal condensatoren) dat op 5 Volt werkt en alle signalen netjes converteert. Het is in sommige gevallen ook mogelijk om gebruik te maken van een eenvoudige schakeling met weerstanden of een transistor met een paar weerstanden. De uitvoering van de schakeling is afhankelijk van de gewenste “richting” en dergelijke. Bij een duplex verbinding adviseer ik altijd een MAX232 chip en bij een simplex verbinding kan een enkele transistor praktischer zijn zoals bijvoorbeeld van een seriële GPS ontvanger naar een TTL chip. Hieronder staat een grafische weergave van de verschillende spanningen voor TTL en seriele signalen voor dezelfde digitale informatie.

image


Hieronder staat een schermafdruk van een Rigol DSA1054Z met een gedecodeerd serieel GPS signaal. Zo is te zien hoe de pulsen er uit zien voor een NMEA data signaal van een GPS ontvanger.

image


parallel of seriële communicatie
Eerdere datacommunicatie (afgekort datacom) poorten waren parallel waardoor er voor elk bitje een "eigen" draad was. Een parallelle (printer)poort heeft onder andere bijvoorbeeld acht data draden voor acht bits. En daarnaast nog extra draden voor de klokpuls en dergelijke. Het voordeel ten opzichte van de seriële poort is dat bij elke klokpuls acht keer meer informatie verzonden kan worden. Het nadeel is dat er veel meer draden nodig zijn en daarmee grotere stekkers en dikkere kabels. In de praktijk is gebleken dat de data snelheden via een seriële poort dusdanig groot is dat dit geen beperking oplevert en seriële de parallelle poort heeft "overleefd". Conversie van parallel naar serieel en omgekeerd is met logische chips wel mogelijk.

bidirectioneel
De COM poort is bidirectioneel. Dit betekent dat de poort zowel kan zenden evenals ontvangen. Weliswaar via een "eigen" zend en "eigen" ontvang draad, maar deze kunnen tegelijk actief zijn.

simplex en duplex
Er zijn drie soorten verbinding van toepassing. Een simplex verbinding is een verbinding waarbij de data in één richting gaat. Bijvoorbeeld van een GPS ontvanger naar een microcontroller. “Terug praten” van de microcontroller naar de GPS is soms niet interessant waardoor één draad voor een simplex verbinding volstaat. Wanneer er “terug gepraat” moet worden is een duplex verbinding nodig met twee draden; één voor zenden en één voor ontvangen. Bij een half duplex verbinding kan informatie worden ontvangen en gezonden, maar niet tegelijk. Bij een full duplex verbinding kan er tegelijk worden gezonden en ontvangen, dit is de snelste methode voor dataoverdracht.

datasnelheid / baudrate
De snelheid (baudrate) van de poort wordt uitgedrukt in het aantal karakters dat per seconde kan worden verzonden. Wanneer één karakter 8 bits nodig heeft en er 2.400 bits per seconde (bps) worden verzonden, dan is de snelheid 300 baud. Een gebruikelijke snelheid is 1.200 baud voor communicatie met eenvoudige hardware. 4.800 baud is de gebruikelijke snelheid voor seriële GPS ontvangers. 9.600 baud is een gebruikelijk snelheid tussen een computer en een (radio) modem.
De maximale datasnelheid is redelijkerwijs 115 kbps. Het aantal karakters dat verstuurd kan worden hangt dus af van de bit samenstelling. Bij een acht bit systeem komt dit neer op (de theoretische waarde van) 14.375 baud. In de praktijk is de baudrate een veelvoud van 150. Dus 150, 300, 600, 1.200, 2.400, 4.800, 9.600 enzovoort. Er zijn snellere varianten gemaakt onder de naam ESP, maar dit is in de praktijk weinig toegepast.

(afwezigheid van) klokpuls
In tegenstelling met de parallelle poort is er geen klokpuls aanwezig om de zender en de ontvanger te synchroniseren. Hiermee dient de zender en de ontvanger wel "gesynchroniseerd" te worden door de bit snelheid en de bit samenstelling op elkaar af te stemmen. Wanneer de ontvanger een start-bit ontvangt begint de interne "klok" te lopen en kan het tempo van de ontvangen bits worden bepaald voor juist ontvangst. Doordat de lengte van de bit reeks bekend is, kan de data stroom bij elk "brokje data" worden gesynchroniseerd. Ook als de "interne klok" van de zender en ontvanger niet helemaal gelijk loopt, levert dit geen problemen op omdat het door de tussentijdse synchronisatie geen problematische afwijking oplevert.

bit samenstelling
Het aantal data bits kan variëren. In de praktijk is het aantal bits (vrijwel) altijd zeven of acht bits. Er is altijd een start bit aanwezig (ten behoeve van synchronisatie). Het aantal stop bits kan naar wens ingesteld worden, maar is doorgaans 1. Er kan ook een pariteit bit worden toegevoegd om de integriteit (verlies van data) vast te kunnen stellen. In de praktijk wordt dit weinig gebruikt omdat de data integriteit vaak goed genoeg is voor de beoogde toepassing. In de praktijk werkt de verbinding goed, of helemaal niet. Vaak wordt de instelling van een poort aangeduide met bijvoorbeeld 4800/N-8-1 of 4800 N,8,1 waarbij 4800 de baudrate is, de N staat voor no (geen) pariteit bit, acht data bits en één stop bit. In dit laatste geval zijn er tien bits nodig om één byte (acht bits) te versturen dus is “maar” 80 % van de bits daadwerkelijk informatie. Als de ASCII tabel wordt gehanteerd kan er zo één karakter per byte/set bits worden verstuurd.

hardware buffer
Om 8-bit informatie om te zetten heeft een apparaat UART (Universal Asynchronous Receiver/Transmitter) hardware nodig. Om de prestaties van een apparaat niet te veel te belasten is er vaak een buffer aanwezig van ongeveer 14 byte om ontvangen informatie op te kunnen slaan. Het apparaat kan op een gewenst moment de buffer uitlezen om vervolgens de informatie te kunnen verwerken.

25-pen en 9-pen sub-d bus
De oorspronkelijke connector voor de COM poort is een 25-polige (male) sub-d connector. (Deze leverde vaak verwarring op met de "female" 25-polige LPT printerpoort.) Later is de 9-polige "male" sub-d connector gebruikt als COM poort. De pen nummering van de 25-polige connector en de 9-polige connector komen niet overeen, dus de pen nummers moeten geconverteerd worden om de juiste pennen met elkaar te kunnen verbinden. Let dus ook op bij het bedraden van een kabel. Bij het communiceren tussen twee computers is bijvoorbeeld een “cross cable” nodig waarbij tussen pennen twee en drie een kruislingse verbinding nodig is. In de norm staan 20 signaalverbindingen opgegeven. In de praktijk zijn de massa, TX en RX draad relevant en de overige draden zijn vaak niet nodig. Vandaar dat er later vaak de kleinere DB-9 connector gebruikt is in plaats van de DB-25. Weer later is de RF-45 connector gebruikt, maar de pint aansluitingen hiervan zijn (helaas) niet eenduidig…



pen aansluiting
functie
signaal
pin number (DB-25)
pin number (DB-9)
massa
GND
7
5
verzonden data
TD (TxD)
2
3
ontvangen data
RD (RxD)
3
2
data gereed
DTR (data terminal ready)
20
4
data ontvangen
DSR (data set ready)
6
6
verzoek tot zenden
RTS (request to send)
4
7


handshake
Aanvankelijk is de seriële poort ontworpen met een “handshake” om vast te stellen of er een integere dataverbinding tot stand kan komen. Met een request to send en clear to send kon gecontroleerd worden of de datasnelheden op elkaar waren afgestemd. In de praktijk wordt dit nauwelijks meer gebruikt.

DTE en DCE
Er is onderscheid gemaakt tussen de zender en de ontvanger. De zender is doorgaans de computer (DTE; data terminal equipment) en de ontvanger is van oorsprong veelal een modem (DCE; data communication equipment).

voordelen en andelen
De kracht van de seriële poort is mede door de eenvoud. Er zijn maar drie draden nodig voor zenden en ontvangen van data.
Waarbij de 9-polige sub-d connector "vroeger" één van de kleinste connectoren was, is het naar huidige maatstaven een grote connector. Bij kleine apparaten is dit daarom nauwelijks bruikbaar. Ook de snelheid is betrekkelijk beperkt voor de grote hoeveelheden data die anno 2017 moeten worden verwerkt. De communicatie over grotere afstanden is helaas ook beperkt. Er is een afgeschermde kabel nodig om verstoring tegen te gaan en de maximale afstand is relatief beperkt. Een (niet afgeschermde twisted pair) CAT 5 UTP verbinding kan over grotere afstanden tot 100 Mb/s halen waardoor een COM poort niet bruikbaar is.

toekomst
De toekomst van de COM poort is betrekkelijk onzeker. Er zijn anno 2017 veel snellere en kleinere oplossingen voor datacommunicatie. Maar omdat de COM poort een van de meest eenvoudige en universele poorten is, (b)lijkt er nog bestaansrecht voor de COM poort. Mijn voorspelling is dat de COM poort nog lang zal bestaan. In het bijzonder bij eenvoudige communicatie met bijvoorbeeld hardware of waar grote mate van betrouwbaarheid nodig is.

software
In oudere Windows versies was Hyperterminal geïnstalleerd dat goed werkt als terminal programma voor communicatie via de seriële poort. Helaas is deze software niet meer standaard en alternatieve (gratis) software zoals "Putty" of "Puttytel" volstaat prima. Na het selecteren van de gewenste data snelheid en bijbehorende parameters kan er informatie worden verstuurd en ontvangen.

poort testen
Een seriële poort is eenvoudig te testen door pennen 2 en 3 met elkaar door te verbinden. De uitgezonden data van pen 3 wordt hiermee doorgestuurd naar pen 2. Door in de terminal tekst te typen, wordt de uitgezonden informatie zichtbaar op het scherm. Let er wel op dat de "echo" uit staat. Met "echo" blijft de uitgezonden informatie ook op het scherm staan. Als je dan "Test" typt, dan verschijnt er "TTeesstt". Als er geen informatie terug komt, dan is het aannemelijk dat er iets mis is met de seriële poort. Komt de informatie wel terug, dan werkt de poort naar behoren.

USB naar RS232 converters
Helaas worden er sinds omstreeks 2004 steeds minder computers uitgerust met een seriële poort. Fysiek grotere computers hebben vaak nog wel een seriële poort op het moederbord, maar is al niet eens meer naar buiten doorgevoerd. De seriële poort is op een laptop bijna nauwelijks niet meer te vinden. Uitsluitend is de seriële poort nog op de dure laptops te vinden, maar dat is vaak economisch niet interessant voor niet-professioneel gebruik. Gelukkig zijn er USB naar RS232 omzetters. De eerdere generaties waren (zijn?) niet altijd even betrouwbaar, maar de huidige heb ik geen problemen meer mee. Het vinden van de juiste driver kan wat moeite opleveren, maar als er geen driver is loont het de moeite om de "Prolific 2032" driver te gebruiken van het internet. Volgens mij zijn deze converters allemaal op één chip/ontwerp gebaseerd en de genoemde driver werkt bij mij tot nu toe altijd.
Let er wel op dat doorgaans alleen de pennen 2 (RX), 3 (TX) en 5 (GND) zijn aangesloten en de CTS, RTS en soortgelijke pennen niet meer aangesloten zijn. In vrijwel alle gevallen zijn alleen pennen 2, 3 en 5 maar nodig, dus zal op een uitzondering na geen probleem opleveren.