RS232 seriële nulmodem kabel bedrading
- Nulmodems, een inleiding
- RS232 oorspronkelijk gebruik
- Nulmodem zonder handshaking
- Nulmodem met loop back handshaking
- Nulmodem met gedeeltelijke handshaking
- Nulmodem met volledige handshaking
- Nulmodem layout selectietabel
Nulmodems, een inleiding
Seriële communicatie met RS232. Één van de oudste en meest wijd vespreide communicatie methoden in computerwereld. De manier waarop deze communicatie dient plaats te vinden is vastgelegd in goed gedefiniëerde standaards. Met één uitzondering echter. De standaarden beschrijven het gebruik van DTE/DCE communicatie, de manier waarop een computer zou moeten communiceren met een apparaat als een modem. Ter informatie, DTE betekent data terminal equipment (computers etc.) terwijl DCE een afkorting is van data communication equipment (modems). Een belangrijk gebruik van seriële communicatie op dit moment—een seriële nulmodem configuratie met DTE/DTE communicatie—wordt niet zo nauwkeurig gedefiniëerd, zeker niet wanneer het op flow controle aankomt. De terminologie nulmodem voor de situatie waar twee computers direct met elkaar communiceren komt tegenwoordig zo vaak voor, dat de meeste mensen zich niet meer de betekenis van de term realiseren en dat een nulmodem eigenlijk een uitzondering is en niet de regel.
Vroeger zijn praktische oplossingen ontwikkeld om twee computers met elkaar te laten communiceren over een seriële nulmodem lijn. In de meeste gevallen worden de originele modem signalen hergebruikt om een vorm van handshaking te implementeren. Het gebruik van handshaking kan de maximaal mogelijke communicatiesnelheid verhogen omdat het de computers de mogelijkheid geeft de toevoer van informatie te regelen. Grote hoeveelheden binnenkomende informatie zijn toegestaan op momenten dat de computer in staat is het te verwerken, maar niet als de computer bezig is met het uitvoeren van andere taken. Als geen flow control is geïmplementeerd, dan is communicatie alleen maar mogelijk op snelheden waarbij het zeker is dat de ontvangende zijde de binnenkomende hoeveelheid informatie kan afhandelen, zelfs in de slechtst denkbare situaties.
RS232 oorspronkelijk gebruik
Wanneer we de pinnen van de RS232 connector beschouwen, dan zien we twee pinnen die zeer duidelijk voor flow control bedoeld zijn. Deze twee pinnen zijn de RTS, request to send en de CTS, clear to send. Met DTE/DCE communicatie (computer met modem) is de RTS een uitgang op de DTE en een ingang op de DCE. CTS is het antwoord signaal dat komt van de DCE.
Voordat een karakter gezonden wordt vraagt de DTE toestemming door de RTS uitgang te zetten. Er zal geen informatie worden verzonden, tot de toestemming door de DCE via de CTS lijn gegeven wordt. Als de DCE de binnenkomende gegevens niet kan verwerken, dan zal het CTS niveau laag worden. Een eenvoudig maar bruikbaar mechanisme dat flow control toestaat in één richting. De aanname is namelijk, dat de DTE altijd in staat is binnenkomende gegevens sneller te verwerken dan de DCE ze kan aanleveren. In het verleden was dit zeker waar. Modem snelheden van 300 baud waren gebruikelijk en 1200 baud werd gezien als een hoge snelheids verbinding.
Voor verdere controle op de uitwisseling van informatie hebben beide apparaten de mogelijkheid om hun status door te geven naar de andere kant. Voor dit doel zijn de DTR, data terminal ready en DSR, data set ready signalen aanwezig. De DTE gebruikt het DTR signaal om aan te geven dat het bereid is informatie te ontvangen terwijl de DCE het DSR signaal gebruikt voor hetzelfde doel. Voor het gebruik van deze signalering is niet een klein vraag en antwoord protocol noodzakelijk zoals met RTS/CTS handshaking. De signalen werken elk slechts in één richting.
Het laatste flow control signaal dat aanwezig is in DTE/DCE communicatie is de CD, of carrier detect. Eigenlijk wordt dit niet direct voor de controle van de communicatie gebruikt, maar meer om aan te geven of het modem in staat is om te communiceren met een ander modem. Het signaal geeft aan of er een communicatielink tussen beide modems aanwezig is.
Nulmodem zonder handshaking
Hoe moeten de handshake lijnen gebruikt worden in een nulmodem configuratie? De eenvoudigste manier is om ze helemaal niet te gebruiken. In die situatie worden alleen de datalijnen en het signaal nul-niveau met elkaar kruislings verbonden in de nulmodem communicatiekabel. Alle andere pinnen worden niet aangesloten. Een voorbeeld van een dergelijke nulmodem kabel zonder handshaking kan in de figuur hieronder worden aanschouwd.
Connector 1 | Connector 2 | Functie |
---|---|---|
2 | 3 | Rx ◄ Tx |
3 | 2 | Tx ► Rx |
5 | 5 | Signaalnul |
Compatibiliteit
Als je leest over nulmodems, dan wordt er vaak over deze drie draads nulmodem kabel gesproken. Inderdaad, het is een simpele nulmodem kabel, maar is hij bruikbaar onder alle omstandigheden? Er is een probleem, als één van beide computers de DSR of CD inputs controleert. Deze signalen geven normaal de mogelijkheid van het aangesloten apparaat aan om te kunnen communiceren. Wanneer ze niet verbonden zijn zoals in deze nulmodem kabel zal het signaalniveau echter nooit hoog worden. Dit kan problemen veroorzaken.
Een zelfde probleem kan optreden bij de RTS/CTS handshaking actie. Als de software aan beide zijden goed ontwikkeld is, dan zal eerst de RTS uitgang hoog gemaakt worden waarna een wachtcyclus wordt gestart tot dat een start signaal is ontvangen op de CTS ingang. Hierdoor zal de software gaan hangen omdat geen verbinding op de CTS pin aanwezig is die het signaalniveau hoog kan maken. De enige toegestane methode van communiceren met een dergelijke nulmodem kabel is waarbij alleen data verzonden wordt over de Rx/Tx lijnen.
Dit betekent echter niet dat deze nulmodem kabel daarmee ook waardeloos is geworden. Communicatie links zoals die bijvoorbeeld met het Norton Commander programma mogelijk zijn kunnen van deze nulmodem kabel gebruik maken. Bovendien kan deze nulmodem kabel ook worden gebruikt wanneer met apparatuur gecommuniceerd moet worden die geen modem controle signalen bezitten zoals elektronische meetapparatuur en dergelijke.
Zoals nu waarschijnlijk wel duidelijk is kan met deze eenvoudige nulmodem kabel geen hardware flow control worden gebruikt. De enige manier om flow control te realiseren is door software flow control met XOFF en XON karakters toe te passen.
Nulmodem met loop back handshaking
De eenvoudige nulmodem kabel zonder handshaking is niet compatibel met veel communicatie software. Het grote probleem met deze nulmodem kabel is de mogelijkheid dat de software zich ophangt omdat het de modem controle signalen op de gebruikelijke manier probeert te interpreteren. Dit betekent voor deze nulmodem kabel dat goed geschreven software er slecht mee presteert en slecht geschreven software goed.
Om dit probleem te omzeilen en toch met een eenvoudige nulmodem communicatie kabel met slechts drie lijnen toe te kunnen is een nulmodem kabel layout gedefiniëerd waarmee de software voor de gek kan worden gehouden. Deze kabel is de nulmodem kabel met loop back handshaking.
Connector 1 | Connector 2 | Functie |
---|---|---|
2 | 3 | Rx ◄ Tx |
3 | 2 | Tx ► Rx |
5 | 5 | Signaalnul |
1 + 4 + 6 | – | DTR ► CD + DSR |
– | 1 + 4 + 6 | DTR ► CD + DSR |
7 + 8 | – | RTS ► CTS |
– | 7 + 8 | RTS ► CTS |
Het doel van deze nulmodem kabel is om goed ontwikkelde software te laten denken dat hardware flow control kan worden toegepast terwijl de nulmodem kabel er geen voorzieningen voor heeft.
Compatibiliteit
Beschouw allereerst het DSR signaal (pin 6). Deze ingang geeft aan dat het apparaat aan de andere zijde in staat is om te communiceren. In de nulmodem kabel layout is deze lijn direct teruggelinkt naar de DTR uitgang (pin 4). Dit betekent dat de software niet het ready signaal van de andere zijde ziet, maar zijn eigen. Hetzelfde geldt ook voor de CD ingang (pin 1). De aanname bij dit alles is, dat als de software ontworpen is om de DSR ingang te testen op beschikbaarheid van het andere communicatie apparaat, dat het zeer waarschijnlijk ook de DTR uitgang zal zetten om de eigen status aan te geven. Dit is waar voor tenminste 99% van alle seriële communicatiesoftware. Dat impliceert dat tenminste 99% van alle seriële communicatiesoftware in staat is zijn eigen DSR controle te omzeilen met deze nulmodem kabel.
Dezelfde truc is uitgehaald met de CTS ingang. In de originele toepassing wordt de RTS uitgang gezet waarna op de CTS ingang gewacht wordt op toestemming om te gaan zenden. Door de RTS uitgang (pin 7) te zetten zal de CTS ingang (pin 8) onmiddellijk vrijgave krijgen om te gaan zenden. Er is op die manier niet de mogelijkheid dat de software zichzelf ophangt door uitstaande RTS verzoeken.
Andere belangrijke zaken
De nulmodem kabel met loop back handshaking wordt vaak geadviseerd als de best toepasbare goedkope nulmodem kabel. Maar is hij werkelijk zo goed? De eenvoudige nulmodem kabel zonder handshaking heeft als nadeel dat het goed ontworpen software niet toestaat om er via te communiceren. Software die echter op de hoogte is van de afwezigheid van de handshaking lijnen kan er echter zonder problemen mee presteren.
De nulmodem kabel met loop back handshaking kan worden gebruikt met meer software, maar heeft geen functionele verbeteringen ten opzichte van de eenvoudige nulmodem kabel! De aangesloten apparaten kunnen slechts met software flow control de data flow controleren. Als de software ontworpen is voor hardware flow control, dan zal het nog steeds lijken te werken maar op onvoorspelbare momenten kan dataverlies optreden. Dit betekent feitelijk dat deze nulmodem kabel alleen communicatie toestaat zolang er geen flow control nodig is, maar als de datasnelheid boven de limiet van de ontvangers uitstijgt kan de communicatie plotseling zonder duidelijk aanwijsbare oorzaak stoppen. Hoewel deze nulmodem kabel goedkoop is en gemakkelijk zelf te maken dient hij met zorg te worden toegepast! Ondanks deze waarschuwing blijkt deze nulmodem kabel met succes te kunnen worden toegepast tussen twee Windows 95/98/ME systemen met een Direct Cable Connection.
Nulmodem met gedeeltelijke handshaking
De eenvoudige nulmodem kabel en de nulmodem kabel met loop back handshaking zijn toe te passen, maar er zijn geen voorzieningen voor flow control. Als het absoluut noodzakelijk is om hardware flow control toe te passen, dan is de nulmodem kabel met gedeeltelijke handshaking een alternatief.
Connector 1 | Connector 2 | Functie |
---|---|---|
1 | 7 + 8 | CTS2 + CD1 ◄ RTS2 |
2 | 3 | Rx1 ◄ Tx2 |
3 | 2 | Tx1 ► Rx2 |
4 | 6 | DTR1 ► DSR2 |
5 | 5 | Signaalnul |
6 | 4 | DSR1 ◄ DTR2 |
7 + 8 | 1 | RTS1 ► CTS1 + CD2 |
Compatibiliteit
Deze nulmodem kabel heeft het beste van twee werelden. De mogelijkheid van hardware flow control is aanwezig zonder incompatibel te worden met de originele manier waarop flow controle bij DTE/DCE communicatie is geïmplementeerd. Laten we daarvoor allereerst naar de RTS en CTS lijnen op pin 7 en 8 kijken. Net als bij de loop back nulmodem kabel zijn deze lijnen niet doorverbonden met het andere apparaat, maar worden ze direct op de connector teruggelust. Dit betekent dat RTS/CTS flow control is toegestaan in de software, maar dat het in de praktijk geen functie heeft. Alleen wanneer de software aan de andere zijde het CD signaal op pin 1 controleert zal het RTS signaal de andere zijde bereiken. Dit zal echter alleen het geval zijn met software waarbij die functionaliteit speciaal ingebouwd is.
Belangrijker echter is de kruisverbinding tussen de DSR (pin 6) en de DTR (pin 4) lijnen. Door deze pinnen kruislings te verbinden wordt hun originele functie redelijk goed gesimuleerd. De DTR uitgang wordt gebruikt om het andere apparaat aan te geven dat communicatie toegestaan is. Deze informatie wordt gelezen op de DSR ingang, dezelfde ingang die werd gebruikt voor dat doel in modem communicatie. Door de kruisverbinding kan het DTR signaal worden gebruikt voor simpele flow control. Binnenkomende gegevens zijn toegestaan wanneer de uitgang is gezet en geblokkeerd als het uitgangssignaal afwezig is.
Software die alleen het RTS/CTS protocol ondersteunt voor flow control kan geen gebruik maken van de voordelen van de nulmodem kabel voor gedeeltelijke handshaking. Meestal zal de software echter ook de DSR ingang controleren en in dat geval kan met de nulmodem kabel met gedeeltelijke handshaking de best mogelijke hardware flow control worden bereikt die nog steeds compatibel is met de originele communicatiemethode met modems.
Nulmodem met volledige handshaking
De duurste nulmodem kabel is geschikt voor volledige handshaking. In deze nulmodem kabel zijn zeven aders aanwezig. Alleen het RI en CD signaal zijn niet verbonden. De nulmodem kabel is te zien in de volgende figuur.
Connector 1 | Connector 2 | Functie |
---|---|---|
2 | 3 | Rx ◄ Tx |
3 | 2 | Tx ► Rx |
4 | 6 | DTR ► DSR |
5 | 5 | Signaalnul |
6 | 4 | DSR ◄ DTR |
7 | 8 | RTS ► CTS |
8 | 7 | CTS ◄ RTS |
Compatibiliteit
De nulmodem kabel met volledige handshaking laat niet toe om de ouderwetse manier van flow control toe te passen. Het grote compatibiliteit probleem is de kruisverbinding tussen de RTS en CTS pinnen. Origineel werden deze pinnen gebruikt voor een vraag/antwoord type van handshaking. Wanneer de nulmodem kabel met volledige handshaking wordt gebruikt is er geen verzoek mogelijkheid meer. De lijnen kunnen puur worden gebruikt voor vrijgave van communicatie in één richting.
Het grote voordeel van deze nulmodem kabel is, dat er twee signaalleidingen in elke richting lopen. Zowel de RTS als DTR uitgangen kunnen worden gebruikt om flow control informatie naar het andere apparaat te zenden. Hierdoor kunnen met deze nulmodem kabel grote communicatiesnelheden worden bereikt, mits de software ervoor ontworpen is. Vanwege deze hoge mogelijke snelheid wordt deze nulmodem kabel onder andere toegepast bij Interlink waarmee twee MS-DOS PC’s kunnen worden verbonden.
Dit is het type kabel dat Microsoft aanbeveelt voor de direct cable connection in haar knowledge base artikel. Bij de DB9 connector hebben ze ook een verbinding toegevoegd van DTR naar CD aan beide zijden, maar aangezien ze deze verbinding niet hebben gemaakt voor de DB25 connector versie en er ook geen melding van maken in de begeleidende tekst is het veilig om de CD lijn onbedraad te laten.
Nulmodem layout selectietabel
De juiste nulmodem kabel hangt grotendeels af van de toepassing en de software die ervoor zal worden gebruikt. Als een algemene richtlijn adviseer ik zelf het volgende.
Kabel zonder handshaking | Loop back handshaking | Gedeeltelijke handshaking | Volledige handshaking | |
---|---|---|---|---|
Alleen software flow control | +++ | ++ | + | + |
DTE/DCE compatibele hardware flow control op lage snelheid | – | +++ | ++ | – |
DTE/DCE compatibele hardware flow control op hoge snelheid | – | + | +++ | – |
Hoge snelheid communicatie met speciale software | – | – | ++ | +++ |
Selecteer je nulmodem kabel
De nulmodem kabel met gedeeltelijke handshaking werkt in de meeste gevallen. Bij het ontwikkelen van software die met allerhande soorten nulmodem kabels moet kunnen werken is het het beste om alleen software flow control te implementeren en alle modem controle ingangen te negeren.
All great discoveries
are made by mistake. YOUNG'S LAW
|