Modified: Tuesday, 03-Mar-2015 23:31:15 EET

Sarjaväylä eli RS232 eli COM-portti


Sarjaväylä on kahden tietokonelaitteen väliseen liikennöintiin tarkoitettu laitteisto, jossa siirrettävä data liikkuu bitti kerrallaan 'peräkkäin'. Käännettäessä 8-bittinen rinnakkaismuotoinen data sarjamuotoiseksi hävitään nopeudessa vähintään 8:1, mutta voitetaan laitteiston yksinkertaisuudessa. Kaapelointi muuttuu halvemmaksi ja notkeammaksi. Sarjamuotoista dataa välittäviä väyliä on useita eri tyyppejä. Esimerkiksi RS232, RS422, CAN, I2C, USB, 20mA virtasilmukka, FireWire sekä IrDA. Myös Morsetus on sarjamuotoista tiedonsiirtoa.

PC-koneissa pisimpään käytetty on RS232. RS juontuu sanoista Recommended Standard. Tämä on yksi tapa ilmaista, että tietokoneissa mikään ei ole standardia, paitsi muutos. Yksi esimerkki tästä on RS232-standardin muutos RS232 - RS232A - RS232B - RS232C, jossa on koetettu ottaa huomioon tekniikan kehitys. Näiden versioiden oleellisin merkitys on vaadittujen jänniteikkunoiden muutos kohti pienempiä jännitteitä. Käytännössähän RS232 on nykyisin ainoa PC:n osa, joka tarvitsee negatiivista -12V jännitettä. Laitevalmistajat haluaisivat päästä siitä eroon, kuten myös -5V jännitteestä, koska ne lisäävät tavallaan turhaan virtalähteen monimutkaisuutta ja siten myös hintaa. USB-väylässä näistä jännitteistä on päästy eroon, mutta siinä sivussa on luotu liitäntätapa, joka vaatii erikoiskomponentteja

PC-koneissa on vakiintunut käytäntö, jonka mukaan koneessa oleva RS232-liitin on koiras, kaapelissa naaras. Tämä koskee sekä D9 että D25 -liittimiä ja noudattaa vanhaa sopimusta, jonka mukaan DCE on naaras ja DTE uros. DCE oli tätä sopimusta tehtäessä ylensä modemi ja DTE pääte.
Se toinen, naaraspuolinen, D25-liitin PC-koneessa on 'kirjoitinportti' tai 'Centronics' tai 'LPT-portti'. ÄLÄ MILLOINKAAN KYTKE TÄTÄ PORTTIA SARJAPORTTIIN ! Muodostuva savu sisältää raskasmetalleja.
Sarjaporttia varten on käytetty muunkinlaisia liittimiä. Esimerkiksi Applen vanhemmissa Macintosheissa oli pieni pyöreä liitin. Tarkkaan ottaen se ei ollut RS232 vaan (ilmeisesti) RS422, mutta oikein kytkemällä sitä pystyi käyttämään RS232-porttina. Kaikkein vanhimmissa 'True Blue' IBM-PC-koneissa RS-portti oli naaraspuoleinen. Näitä kortteja ei kuitenkaan enää missään tapaa.

Tästä eteenpäin tarkoitetaan RS232-liitäntää kun puhutaan sarjaväylästä. Samalla rajoitutaan käsittelemään ainoastaan asynkronista tiedonsiirtoa. Toisinsanoen siirrossa ei käytetä erillistä kellosignaalia, vaan vastaanottaja olettaa kaikkien saamiensa bittien olevan saman mittaisia.

Yleisemmin väyliä on kahta päätyyppiä. Toisessa yksi kone ohjaa kaikkea tiedon siirtoa. Englanniksi tälläistä järjestelyä kutsutaan nimellä SINGLE MASTER. Toisessa kukin kone pystyy vuorollaan olemaan herrana (MULTIMASTER).Ohjaavaa konetta kutsutaan HOST ja ohjattava SLAVE. Esimerkiksi USB-väylä on puhtaasti Single Master.
RS232 on ilmeisesti perustunut Single Master -ajatteluun, jossa pääte on ollut ohjaavana osana DTE eli 'Data Terminal Equipment' Väylän toisessa päässä on ollut DCE eli Data Circuit-terminating Equipment tai 'Data Communication Equipment'. Tyypillisesti DCE on ollut modemi.

PC-koneissa sarjaväylää on käytetty liittämään esimerkiksi seuraavia laitteita: hiiri, kirjoitin, modemi sekä erilaiset mittalaitteet. Näistä tosin hiiri sekä modemi liittyvät nykyisin yleisemmin USB-porttiin ja printteri Centronics-porttiin, ellei sekin liity USB-porttiin. Aikaisemmin yleisin käytetty liitin oli D25, jossa oli tilaa kahdelle kaksisuuntaiselle sarjaväylälle kättelysignaaleineen. Nyttemmin on siirrytty PC-koneissa käyttämään D9-liitintä, koska yksi kaksisuuntainen yhteys riittää useimmissa tapauksissa. Sitäpaitsi kättelysignaalejakin on pyritty yksinkertaistamaan. Tällä WEB-sivulla käytetään liittimien nastojen numeroinnissa D9:n mukaisia merkintöjä.
Tällä sivulla käytetyissä termeissä ja laaduissa on jonkin verran sekavuutta. Oleellisin on liikennöintinopeuden merkintä. BAUD on yleisesti käsitetty linjalla liikkuvan signaalin pienimmäksi osaksi. Siis joko stop-, start, parity tai databitti. Merkintä 'b' tarkoittaa bittiä, 'B' tavua. Usein näkee Baudia merkittävän 'Bd' tai 'bd'. Nopeuden laatuna voidaan käyttää Amerikkalaisittain 'Bdps' tai 'bdps' tai Eurooppalaisittain 'bd/s'. Baud ei ole erisnimi vaan johdannainen nimestä Emile Baudot, joten 'bd/s' on ehkä suositeltavin muoto. (Baudot, 1845..1903 patentoi ensimmäisen sarjamuotoisen koodin ja sen kirjoittamiseen tarkoitetun laitteen.)

Linjojen merkinnät

Ohessa on esitelty 4 perustapausta: sekä DTE että DCE portti DB-25 ja DB-9 -liittimillä.

RS232 signaalit PC:n näkeminä

DIR D9 D25
IN 1 DCD (RLSD) 8 Modemi vetää ylös, kun linjayhteys ulospäin on kunnossa (kantoaalto kuuluu)
IN 2 RxD 3 PC:lle tuleva data
OUT 3 TxD 2 PC:n lähettämä data
OUT 4 DTR 20 PC vetää ylös ollessaan jännitteellinen ja toimintavalmis
-- 5 GND 7 Yhteinen maa
IN 6 DTS (DSR) 6 Modemi vetää ylös ollessaan jännitteellinen ja toimintavalmis
OUT 7 RTS 4 PC vetää ylös ollessaam valmis ja halukas lähettämään
IN 8 CTS 5 Modemi vetää ylös ollessaan valmis vastaanottamaan dataa päätteeltä
IN 9 RI 22 Modemi vetää ylös, kun puhelin soi

Taulukko 0.



Taulukko 1.

RS232 on RJ45 (RS-232D)
This is a special case, normally RJ45 is dedicated to twisted pair ethernet !!!
Avoid using this connector with RS232!!!

Pin No. Name Notes/Description
1 DSR/RI Data set Ready/ring indicator
2 DCD Data Carrier Detect
3 DTR Data Terminal Ready
4 GND Signal Ground
5 RD Receive Data
6 TD Transmit Data
7 CTS Clear to Send
8 RTS Request to Send

Suluissa olevat nimitykset ovat vaihtoehtoisia. Vaihtoehtoiset nimitykset johtuvat Ranskalaisten halusta nimetä kaikki asiat oman kielensä mukaisiksi.

Jännitteet lepotilassa

Tulokset omista mittauksista. 'Kirjoittimena' testipalikka. PC:n käynnistyksen jälkeen COMx-portin lähdöt asettuvat seuraavasti: Tx = RTS = DTR = "1" eli -12V.
Kättelylinjat asettuvat RTS = DTR = "0" eli +12V tulostettaessa porttiin, kun handshake = 'NONE'. Tulostuksen jälkeen jännitteet palaavat alkutilaansa.
Mikäli handshake="Xon/Xoff", Win98 tulostaa ryöpyn ja jää odottamaan vastausta tulostimelta. Jonkin ajan kuluttua ruudulle ilmestyy "TIMEOUT" -virheilmoitus ja linjat jäävät tilaan RTS = DTR = "1".

RS232-porttiin ei ole mahdutettu käyttöjänniteliitäntää. Tietyissä rajoissa portista voidaan kyllä ottaa hieman käyttösähköä ulkoisille laitteille, kunhan tiedetään, mitä ollaan tekemässä. 'Standardin' mukaisesti jokaisen nastan pitää kestää määrittelemättömän pituinen oikosulku mihin tahansa signaalinastaan tai maahan. Jokaisen nastan tulee kestää 20mA kuormitus niin, että signaali on vielä määritellyllä alueella.

Koska sarjaportissa on erilliset nastat tulevalle ja lähtevälle datalle, voi liikennöinti olla kaksisuuntaista 'FULL DUPLEX'. Haluttaessa liikenne voidaan rajata siten, että data liikkuu vain toiseen suuntaan kerrallaan 'SIMPLEX'. Simplexiä käytettiin aiemmin modemiliikenteessä.

Käytetyt jännitetasot

Standardin mukaiset jännitetasot on määritelty CCITT V28 sekä EIA RS-232-C standardeissa. Jännitteet eivät ole yksikäsitteiset, vaan on määritelty ikkuna, jossa jännitteen tulee olla. Toisinsanoen on määritelty jännitteen ylärajat sekä välialue, jota ei tunnisteta signaaliksi. RS232C-portin vapaan linjan jännite ei koskaan voi ylittää +/-25V GND-linjaan nähden. Oikosulkuvirta ei ylitä 500mA. Porttipiirien tulee kestää nämä raja-arvot vahingoittumatta.
Transmit Receive
looginen '0', 'space' 5..+15V +3V..+25V
looginen '1', 'mark' -5..-15V -3V..-25V
Taulukko 2. Receiver näkee välin -3V..+3V 'ei kenenkään maana'.


Kuvassa esitetään EIA RS232 signaalilinjan ekvivalentti kytkentä. Co:ta ei ole määritelty standardissa, mutta sen oletaan olevan hyvin pieni ja koostuvan ainoastaan parasiittisista komponenteista. Ro ja Vo on valittu siten, että oikosulkuvirta ei ylitä 500mA. Kaapelin pituutta ei ole määritelty standardissa.

Siirtonopeudet

Sarjaväyläkaapelin suurin sallittu pituus riippuu käytetystä siirtonopeudesta. Standardi määrittelee tämän yksikäsitteisesti: 50 jalkaa tai 2500pF. Tämä raja on ilmeisesti tarkoitettu aikansa suurimmalle siirtonopeudelle 20kBps. Puolittamalla siirtonopeus voidaan pituutta kasvattaa kertoimella 10x. UTP CAT-5 kaapelin tyypillinen kapasitanssi on 17pF/ft, joten suurin kaapelin pituus on 147ft.

Texas instruments on kokeissaan saanut seuraavat tulokset lähettämällä väylälle 65000 'U'-kirjainta (%01010101) ja katsomalla, millä etäisyydellä saatu vaste vielä on virheetöntä. Käytettyä kaapelityyppiä ei lähteessä mainittu.

2400 Baud - 3000m, 4800 Baud - 1000m, 9600 Baud - 500m, 19200 Baud - 50 m.

Yleisin nykyisin käytetty siirtoprotokolla on '8N1' mikä tarkoittaa, että tietoa siirretään paketeissa, joihin sisältyy 8 data-bittiä, ei yhtään (None) pariteettibittiä ja yksi stop-bitti. Kun siirrettävä paketti aloitetaan aina start-bitillä, on paketin kokonaispituus 10 bittiä. nopeudella 9600 baud eli 9600 bittiä sekunnissa siirtyy siis 960 eli 9600/10 kahdeksanbittistä merkkiä. 'Standardisoidut' siirtonopeudet ovat baudeina 50, 75, 110, 134.5, 150, 300, 600, 75/1200, 1200, 2400, 3600, 4800, 7200, 9600, 19200, 38400, 57600, 115200. Uudempien laitteiden ja ohjelmien mukana ovat tulleet tätäkin korkeammat siirtonopeudet n. 1Mb asti. Nämä vaativat kuitenkin yleensä erikoislaitteita.
Nopeusmerkintä 75/1200 tarkoittaa Ranskalaisten Minitel-järjestelmässä käyttöönotettua järjestelyä, jossa asiakaskoneelta verkkoon päin, ylävirtaan, käytettiin 74 bd/s ja alavirtaan 1200 bd/s

Tietoa lähettävän ja vastaanottavan laitteen tulee olla asetetut samalle nopeudelle. Eräissä laitteissa on ollut käytössä järjestelyjä, joissa vastaanotin tunnistaa siirtonopeuden esimerkiksi lyhimmän väylältä saamansa bitin pituuden mukaan. Tätä varten tulee lähetettävän datavirran ensimmäisen merkin bittikaaviossa olla selvä '010' tai '101' -kuvio.
Automaattista nopeuden tunnistusta ei tietääkseni ole sisäänrakennettuna missään UART-tyypissä.

Datapaketti

Toisin, kuin USB:ssä ja LAN:ssa RS232:n datapaketti on hyvin pieni, vain yksi tavu, kun se kehittyneemmissä verkoissa voi olla jopa useita kilotavuja. Tämän ansiosta RS232:a voidaan käyttää yksinkertaisimmissakin prosessoreissa, joissa muistitila on rajattua. Esimerkiski PIC16F84 prosessorilla riittää kaksi 8-bit muistipaikkaa tulevan tiedon käsittelyyn.

Kaksi kuvaa samasta asiasta, RS-väylän datapaketista. Ensimmäisessä jännitetasot on piirretty signalointijännitteiden mukaisesti. Toisessa on keskitytty enemmän signaalien ajastukseen.

Kuvassa oleva datapaketti lähtee putkeen START-bitti edellä ja LSB-bitti seuraavana. START-bitti on '0'. Sitä edeltävän bitin arvoa ei ole määrätty, mutta on sopivaa olettaa, että se on '1', koska STOP-bitti on '1'. STOP- ja START-bittien välimatkaa ei ole määrätty. STOP-bittien lukumäärällä (1, 1.5 tai 2)määrätään kahden data-tavun välinen etäisyys eli se aika, mikä vastaanottajalla on datan käsittelyyn. Stop-bitin pituutta 1.5 käytetään ainoastaan 5-bittisen datatavun yhteydessä.
Vastaanotin tunnistaa tavun alku- ja loppubittien avulla. Mikäli se löytää datavirrasta '0' kun se odottaa '1', se yrittää synkronoitua uudestaan datavirtaan.
Pariteettibitti sijoittuu viimeisen (MSB) ja STOP-bittien väliin.

RS232-liikenne tapahtuu 'NZR' eli 'No Return to Zero'. Toisinsanoen kahden bitin välillä linja ei käy perustilassaan vaan bittijonon '0000' aikana jännite on koko ajan 'space'-tilassa. Vastaavasti '1111':n aikana jännite on koko ajan 'mark'-tilassa.

UART

PC:n emokortilla rinnakkain olevat bitit on aseteltava peräkkäin siirtoa varten. Tarvitaan siirtorekisteri. Lisäksi tarvitaan komponentteja oikean nopeuden valitsemiseksi sekä liikenteen ohjaamiseksi. Tätä varten on käytettävissä UART eli Universal Asynchronous Receiver-Transmitter. Lisäksi tarvitaan komponentit, jotka muuttavat emokortilla käytetyn 5V logiikan mukaiset data -jännitteet RS232-väylän +/-12V jännitteiksi. UART -piirejä on ollut PC:ssä käytössä useaa eri tyyppiä:

8250 Ensimmäinen yleisesti käytetty UART. Ei sisällä scratch-rekisteriä
8250A Parannettu versio 8250:sta. Nopeampi väylä. Ohjelmiston kannalta sama, kuin 16450.
8250B Hyvin samanlainen, kuin 8250 UART.
16450 Käytetty AT-koneissa. Nopeampi väylä, kuin 8250:ssa. Toimii hyvin nopeudella 38.4KBPS.
16550 Ensimmäinen bufferoitu UART. 16B bufferi. Ei toiminut ja korvattiin 16550A:lla.
16550A Yleinen UART paremmilla nopeuksilla 14.4K & 28.8K Modems. FIFO korjattu toimivaksi
16650 32B FIFO, ohjelmoitavat Xon/XOff -merkit Tukee tehonsäästöä
16750 64B FIFO. Texas Instruments:n valmistama.
Taulukko 3.

FIFO-puskuri vähentää prosessorin kuormitusta tiedon siirrossa, koska UART:lle voidaan kerralla siirtää useampia merkkejä lähetettäviksi sekä odottaa, kunnes sarjaväylältä on tullut useampia merkkejä luettaviksi. Joissain tapauksissa tästä saattaa olla haittaakin, mikäli laitteistolta vaaditaan välitöntä vastetta.

DB-9 / DB-25 sovituspalikka

Näitä sovittimia löytyy suoraan kaupan hyllystä, joten niitä harvemmin joutuu itse tekemään. Ongelmallista on, että osa valmiista palikoista on vajaita. Mittaamistani eri valmistajien 15 palikasta kahdesta puuttui CTS-linjan läpivienti. Palikat eivät eronneet mitenkään ulkoisesti muista vastaavista. Tämän linjan puuttuminen näkyy siinä, että modemi ei vastaa PC:ltä tuleviin komentoihin. Modemi on siis kuollut. Kuinkahan monta modemia on aikojen kuluessa heitetty roskiin vastaavan typeryyden takia ?!

Testipalikka

Testipalikan virallinen nimi on Local Loopback adapter. Remote Loopbackilla tarkoitetaan sitä, että vastapään modemi asetetaan loopback-tilaan, jolloin se lähettää meille muuttamattomana takaisin kaiken mitä me sille olemme lähettäneet.
Oheinen kytkentä on kätevä haluttaessa testata sarjaväylän toimivuutta. Juotetaan naaras-D9-liittimeen oikosulut oheisen kuvan mukaan ja työnnetään liitin PC:n testattavaan porttiin. Portin toiminnan voi nyt testata sarjaliikenneohjelmalla, esim Kermit tai Hyperterm. Jopa Windowsin mukana tuleviakin voi käyttää, kunhan saa ne oikein konfiguroitua. Liitäntä kaiuttaa kaikki lähetetyt (TxD) merkit vastaanottolinajlle (RxD).

Kättelylinjat 4,6 ja 8 on kytketty yhteen huijaamaan PC:tä uskomaan että se keskustelee jonkin laitteen kanssa.

Kytkennässä 1 nasta 4 (DTR) tarjoaa nastojen 6 (DTS) ja 8 (DCD) odottamaa jännitetasoa. Kytkennässä 2 nasta 4 tarjoaa jännitteen nastalle 8 ja nasta 7 nastalle 6. Kytkennässä 3 nastat 6 ja 8 saavat jännitteensä nastalta 7. (input -nastat merkitty neliöillä. Koiras-liitin.)


Pin
Signal
Testipalikka 1 Testipalikka 2 Testipalikka 3
(Suositus)
2 RxD in
3 TxD out
4 DTR out
6 DTS in
7 RTS out
8 DCD in

Salakuuntelupalikka

Joskus halutaan katsella, mitä väylällä kulkee, kun kaksi konetta on kytkettynä toisiinsa. Tämä on mahdollista oheisella kytkennällä . Tosin kuuntelijan ruudulla näkyvät sekaisin molempien kuunneltavien koneiden lähetteet. Jos haluttaisiin erottaa ne toisistaan, pitäisi kuuntelukoneessa aktivoida kaksi porttia, joista toisell kuunneltaisiin toista ja toisella toista koneista.

Yleisiä kytkentöjä

On aika turhauttavaa piirtää RS232-väylässä käytettyjä kytkentöjä, sillä melkein mikä tahansa tuntuu olleen mahdollista aikojen kuluessa. Ostettaessa kaupasta valmis kaapeli, on hyvät mahdollisuudet saada jotain, mikä ei sovi paikalleen. Pahimmassa tapauksessa sillä rikkoo koneensa. Ainakin tämän kirjoittajalle on tarjottu D9-D25-adapteria kun olen pyytänyt sarja-rinnakkais-muunninta. Adapteri olisi mekaanisesti sopinut paikkaan, johon sitä tarjottiin, mutta ei jännitteiltään. RS232-väylän +/- 12V olisi taatusti tuhonnut kirjoitinportin +5V -logiikalla toimivat piirit.

Kytkentää rakennettaessa voidaan PC:n huoletta olevan DTE. Kaapelin toisessa päässä oleva laite sen sijaan voi yhtä hyvin olla DTE kuin DCE:kin. Modemi on yleensä DCE, samoin useimmat mittalaitteet, joiden porttiin ei ole tarkoitettu liitettäväksi modemia tai kirjoitinta. Kirjoittimet ovat varsinainen ongelma. Useimmiten käyttämällä alla olevaa DTE-DCE-kaapelia onnistuu kirjoittimelle lähettämään sivun tai kaksi. Erityisesti, mikäli kirjoittimen mekanismi on nopea ja siirtonopeus pieni. Siirtonopeuden kasvaessa kirjoittimen puskuri tulee täyteen, jolloin se ilmoittaa virhetilanteesta lähettävälle laitteelle joko Xon/Xoff-kättelyllä tai jollain mielivaltaisella sähköisellä signaalilla. Toisaalta jo tulostuksen alkaminen on epävarmaa, koska seuraavien asioiden pitää olla oikein: (suluissa hyvä arvaus)[suluissa muita mahdollisia]

-liikennöintinopeus (4800 tai 9600 kirjoittimelle) 
-data-tavun pituus (8, muita harvemmin käytetään) [5,6,7]
-pariteetti (N, 90% tapauksista) [M,S,E,O eli Mark, Space, Even, Odd]
-stop-Bittien määrä (1, 99% tapaksista) [1.5, 2]
-DTE vai DCE (DCE kirjoittimelle)
-kättelysignaalit (käytä simppeli DTE-DCE)
Näiden lisäksi kirjoitin saattaa hylkiä käyttämääsi sivunkuvauskieltä.

Ongelmaa voi lähteä purkamaan jännitemittarilla. Kytketään mittarin toinen johdin nastaan 5 ja mitataan kaikkien nastojen jännitteet. Jos nastan jännite on välillä -3..+3 V, se ei ole OUTPUT-signaali, vaan INPUT nastan jännite. Jos se taas on yli 3V (tai alle -3V), nasta on OUTPUT.
Taulukoimalla mitatut jännitteet ja vertaamalla niitä taulukkoon 1, voidaan jo hieman aavistella tarvittavaa kytkentää. PC:ssä nasta 2:n jännite on välillä -3..+3V. Jos kirjoittimessa on samoin, joudutaan käyttämään DTE-DTE-kaapelointia.
Fiksuimmat suunnittelijat rakentavat koneensa siten, että DTE:ssä käytetään koirasliitintä ja DCE:ssä naarasta. Tähän ei kuitenkaan voi luottaa.

Laitteiden nastoissa olevia jännitteitä voi käyttää hyväkseen asettaakseen inputien jännitteet halutuiksi. Esimerkiksi, jos PC:llä pitää saada DTS(6) 'ylös', eli jännitteeseen +3..+12V, voidaan DTS oikosulkea PC:n nastaan DTR(4). Älä koskaan käytä ulkoisia jännitelähteitä väyläsignaaleiden generointiin, ellet ole varma, että laite on TODELLA erikoinen !

Kuten aiemmin todettiin, RS-portin mikä tahansa nasta saa olla oikosulussa mihin tahansa tai useampiin muihin saman RS-portin nastoihin ilman että se aiheuttaa vahinkoa. Kokeilemalla ei siis porttia saa rikki.

modemille PC-PC
DTE-DCE simppeli DTE-DCE DTE-DTE simppeli DTE-DTE
Taulukko 4.

Yksinkertaisin (simppeli) kaapeli kahden PC:n välille syntyy, kun käytetään edellä esiteltyä testipalikkaa molemmissa päissä ja katkaistaan 2-3 -oikosulut. Palikasta toiseen vedetään kolme johdinta: 2-3, 3-2 ja 5-5 Tämä kytkentä sallii vain Xon/Xoff -kättelyn, joten sillä ei päästä aivan kaikkein nopeimpiin siirtonopeuksiin.

Kommenttina niille, jotka luulevat osaavansa kaiken On olemassa kirjoittimia, jotka käynnistymisensä jälkeen antavat portin nastoista selvät OUTPUT-jännitteet, mutta noin minuutin jälkeen vaihtavatkin nastat INPUT-tilaan, mikäli tiettyihin nastoihin ei ole tuotu haluttua signaalia. Tälläisen kirjoittimen kaapelointi ei onnistu ilman käsikirjaa kuin Hannu Hanhelta.
Samoin eräät mittalaitteet vaihtavat tilaansa DCE - DTE sen perusteella, millaisen laitteen ne kuvittelevat olevan kytketyn porttiinsa.

Kättelyt

Mikäli vastaanottava laite ei ehdi käsitellä saamaansa dataa siinä tahdissa, kuin lähettävä sitä suoltaa, se ilmoittaa tästä, jolloin lähettäjä keskeyttää toimintansa.
Tähän on yleisesti käytössä neljä tapaa:

Xon/Xoff -kättely. Vastaanottaja lähettää Xoff -merkin (^S) kun maha on täynnä ja Xon (^Q), kun sille kelpaa lisää. Tätä voi käyttää edellä kuvatun 'simppeli' kaapelin kanssa

Hardware eli CTS/RTS -kättely. PC asettaa RTS:n merkiksi siitä, että sillä on lähetettävää tietoa. Vastaanottaja asettaa CTS:n kertomaan, että se kykenee vastaanottamaan. Tässä ei voida käyttää 'simppeli'-kaapeleita

DSR/DTR -kättely. Kirjallisuudessa näkee mainittavan myös tälläisen kytkennän, mutta sen toimintaa ei ole selostettu.

None -kättely eli who cares. Kumpikaan laite ei lähetä toiselle mitään kättelyilmoituksia. Tätä käytetään ainoastaan, kun vastaanottaja on KAIKISSA TILANTEISSA riittävän nopea käsittelemään kaiken, mitä sille lähetetään.

Virheentarkistus

RS232-standardi ei sisällä kelvollista virheentarkistusta. Periaatteessa UART-piiri sisältää hardwaren, joka kykenee havaitsemaan väärän pariteetin, mutta jotta tästä olisi hyötyä, sen pitäisi pystyä pyytämään merkin uudelleen lähettämistä tai vähintään pystyä ilmoittamaan tästä käyttävälle ohjelmalle [tätä pitää vielä tutkia]. Yhdellä pariteettibitillä havaitaan mikäli tavussa on virheellisiä bittejä pariton määrä, mutta ei pystytä korjaamaan virhettä. Jos siirrolta vaaditaan lisää luotettavuutta, käytetään ohjelmallista tarkistusta. Yleisimpiin tiedonsiirtoprotokolliin sisältyy mahdollisuus käyttää virheentarkistusta. Laitteisto-ohjauksessa ja tulostuksessa sitä ei yleensä käytetä.

Protokollat

Sarjaväylällä käytetään useita erilaisia yhteensopimattomia protokollia: Kermit, x-modem, y-modem, z-modem, Trellis, Slip, PPP, UUCP... Kaikki nämä olettavat siirtotien olevan kahden koneen välisen, jolloin varsinaista vuonohjausta ei tarvita. Xmodem on half-dublex protokolla jossa tiedostoja siirretään 128 B paketteina, joihin liitetään 1 B tarkistussumma sekä CRC tarkistus. Tiedostonimeä ei lähetetä.
Xmodem-1k käyttää 1 kB paketteja
Xmodem-1k-g lähettää koko tiedoston katkeamattomana datavirtana ja sopii siksi vain virheettömille linjoille.
Ymodem käyttää 128 B tai 1024 B paketteja.
Ymodem-g Lähetyksessä on mukana myös tiedoston nimi, koko sekä luontipäivämäärä.
Zmodem käyttää vaihtuvanpituista pakettia 64 B - 1024 B linjan häiriöiden mukaan. Virheellinen paketti lähetetään uudestaan. Lähetyksessä on mukana myös tiedoston nimi, koko sekä luontipäivämäärä.
Jmodem käyttää 512 B - 8192 B pakettia linjan häiriöiden mukaan. Tiedoston nimeä ei lähetetä.
BiModem Tiedon siirto tapahtuu molempiin suuntiin yhteikaisesti. Datasiirron lisäksi voidaan käydä päätteiden välistä keskustelua
Kermit on tässä esitellyistä hitain menetelmä. Paketin koko on 94 B ja titeto siirretään 7 b tavuina. Kermit on kehitetty alkujaan yliopistojen pääkoneiden ja oppilaskoneiden väliseen liikennöintiin ja siitä on olemassa versioita useimmille konetyypeille.

Sarjaväylälle on erityisesti laitteisto-ohjaukseen sovellettu useitakin (yhteensopimattomia) protokollia, joilla RS232 saadaan toimimaan lähiverkon tavoin. Mikään näistä ei kuitenkaan ole saavuttanut laajempaa suosiota. Lähiverkossa koneet tunnistetaan niille annettujen osoitteiden perusteella. RS232-väylälle ei ole luotu standardoitua osoitejärjestelmää.

Virransyöttö

RS-portin määritelmien mukaan portin kukin Output -puskuri kykenee syöttämään ulospäin 20 mA siten, että signaalit pysyvät vielä määrätyissä rajoissa. Tätä voidaan käyttää hyväksi, mikäli halutaan järjestää ulkoiselle laitteelle käyttöjännite. PC:n sarjaportissa on kolme lähtöä, joten periaatteessa siitä on saatavissa 3 * 20 mA @ 12 V. Käytännössä lähtöjännite ei kuitenkaan ole tämä 12 V ja virtakin pitää olettaa tätä pienemmäksi. Varmuuden vuoksi kannattaa olettaa, että lähtöjännite on standardin alarajan mukainen 5V, koska tämä on normaalia uudemmissa PC-koneissa kustannussäästön nimissä. Käytännössä oheinen kytkentä on todettu toimivaksi esimerkiksi PIC-prosessorien ohjelmointilaitteissa .

Monesti tulee mieleen myös tapaus, jossa halutaan ulkoista laitetta varten järjestää virransyöttö sarjakaapelia pitkin ulkoisella virtalähteellä. Tällöin voidaan turvautua väylän määritelmiin, joiden mukaan väylälaitteiden tulee kestää standardin mukaisten jännitteiden liittäminen sekä lähtö- että tulolinjoihin. Käyttöjännitteen siirtoon voidaan näinollen käyttää RS232-väylän kättelylinjoja, MIKÄLI KÄTTELYNÄ KÄYTETÄÄN Xon/Xoff. Muissa tapauksissa joudutaan suunnittelu suorittamaan tapauskohtaisesti. Itse suosittelisin tutkimaan seuraavan kuvan mukaista kytkentää. Siinä ei oteta mitään kantaa ulkoisen laitteen kaipaamiin kättelysignaaleihin, mutta pääsääntöisesti kättely voidaan muodostaa linjojen 4 ja 7 jännitteestä. Vaaleansininen laatikko on lisäpalikka, jonka kautta ylimääräinen syöttöjännite liitetään linjoille 4 ja 7 tai vain toiseen näistä. Syöttöjännite +U voi tietenkin olla melkein mitä tahansa, mutta suosittelisin pysyttelemään RS232-standardin mukaisissa jännitteissä.

Tämä kytkentä liittyy erääseen omaan rakennelmaani. Kytkennässä on pyritty ottamaan huomioon se, että ennemmin tai myöhemmin kaapelit tulee kytkettyä vääriin paikkoihin.

SUOSITUS
PIN 4 = +5V
Tämä suositus perustuu monien RadioAmatöörien tapaan järjestää jännitesyöttö GPS:lle APRS-laitteissa.
Hankaluutena on se, että jos jännitelähde on DTE-laitteessa, esimerkiksi PC:ssä, jossa on koiraspuolinen liitin, voi syntyä oikosulku Pin4 ja Pin5 välillä liitintä kytkettäessä tai irroitettaessa. Tämä on otettava huomioon virtalähteen suunnittelussa.

+12 V voidaan liittää nastaan Pin1.
Näiden suositusten mukaisesti voidaan piirikortti suunnitella siten, että D9-liittimestä tarvitsee liittää ainoastaan nastat 1-5 DTE-laitteeseen.
( Kuva tulossa, kunhan ehtii)

VAROITUS !
Vaikka RS-portin nastat ovatkin suojattuja saman portin nastoista tulevia jännitteitä vastaan, on portti silti mahdollista saada rikki, mikäli laitteista toinen on väärin suunniteltu tai viallinen.
Mikäli laitteet ovat kytketyt eri pistorasioihin, saattaa RS-porttien välillä olla jännite, joka voi olla vaihto- tai tasasähköä. Parhaiten tämän toteaa mittaamalla porttien nastojen GND(5) -nastojen välisen jännitteen. Luokkaa 0..1V jännite on jopa normaalia. Tätä suurempien kohdalla kannattaa tutkia tilanne huolellisemmin.
Pahimmassa tapaksessa, mikäli jännite-eroa ei voida poistaa tai voidaan olettaa sellaisen esiintyvän esimerkiksi laitetta kuljeteltaessa, pitää käyttää optoerotettua kaapelointia. Sellainen on kuitenkin kallis.


Versiot

EIA RS232 liitännästä on useampia versioita, jotka poikkeavat toisistaan lähinnä signaalijännitteiltään. Alkuperäinen versio esiteltiin vuonna 1962, mutta se tuli julkiseksi vasta 1969 ja sitä uudistettiin vuonna 1972 versioksi RS-232C. Alkuperäinen RS232C ei määritä liitintä, vaan ainoastaan signaalit. Versiossa RS232D määriteltiin käytännössä standardin aseman saanut D-liitin sekä täydennettiin signalointia uusilla testausta helpottavilla signaaleilla. Amerikkalaista RS232C standardia vastaavat Eurooppalaiset (Ranskalaiset) CCITT:n määrittelyt V24 sekä V28. V24 kuvaa liitännän toiminnallisten osien määrittelyt ja V28 liitännän sähköiset ominaisuudet.

EIA-232-D spesifikaatiot
Liitin DTEDB-25 uros
Liitin DCEDB-25 naaras
Maksimi kaapelin pituusKapasitanssi rajoittaa (2500pF max.)
Maksimi siirtonopeus20Kbit/s
Lähettimiä1 lähettäjä
Vastaanottomiä1 vastaanottaja
Linjapuskurin lähtö+-5V min. +-15V max.
Puskurin kuorma3k to 7k ohmia
Ajurin nopeus (slew rate)30V/mikrosekunti
Vastaanottimen resistanssi3k to 7k ohms
Vastaanottimen siirtymäalue+-3VV
Vastaanottimen jännitalue+-30V
>

Viimeisin versio RS232F on vuodelta 1991, jolloin liitännän nimeksi tuli EIA232.

PC:n sarjaportit

Alkuperäistä IBM PC:tä suunniteltaessa suunnittelijat ilmeisesti eivät tienneet, mitä eroa on reuna- ja tasoliipaistulla IRQ:lla, joten he vetivät arpaa siitä, kumpi koneeseen pistetään -asiakas hävisi, tuloksena oli reunaliipaistu. Vielä tässäkin vaiheessa tehty virhe olisi voitu korjata ohjelmallisesti, mutta suunnittelijat eivät ilmeisesti myöskään uskoneet, että laitteeseen koskaan liitettäisiin Joystickiä teknisempää lisälaitetta.
Virhettä korjattiin AT-koneissa lisäämällä emokortille toinen keskeytyksiä käsittelevä 8259-piiri, jolloin saatiin kaikkiaan käyttöön 7+8 keskeytyslinjaa. Lopullinen korjaus tuli vasta PCI-väylän mukana, jossa IRQ-keskeytykset on rakennettu aivan uudella tavalla.

PC:ssä I/O-osoitteita olisi vielä vapaana, mutta IRQ:sta tulee pulaa. Tätä kiertääkseen ovat suunnittelijat käyttäneet monenlaisia menetelmiä. Yksi tapa perustuu siihen, että kaikki koneeseen kytkettävät sarjaväylälaitteet eivät välttämättä ole yhtaikaa käytössä, joten voidaan käyttää yhteistä IRQ-linjaa. Alla oleva taulukko perustuu tähän. Taulukkoon pitää suhtautua varauksella, sillä melkein jokainen ISA-väylän sarjaporttiadapteri ja sisäinen modemi jakaa keskeytykset omalla tavallaan. Ainoat standardoidut portit ovat COM1 ja COM2. Erityisesti on huomattava, että myös esim verkko- ja äänikortti kilpailevat samoista keskeytyksistä.
Toinen tapa on käyttää erillistä prosessoria ohjaamassa useampia sarjaportteja. Nämä kortit ovat kalliita ja tarkoitettuja erikoissovelluksiin.

Oheisessa taulukossa on lueteltu kursorisesti PC:n ISA-väylällä käytettävissä olevat keskeytykset. Tästä puuttuvat VGA-, verkko- sekä äänikortit, joita ei ollut olemassakaan alkuperäistä ISA-väylän arkkitehtuuria suunniteltaessa. RS232 -portin rekistereitä ei käsitellä tässä. Kattava esitys aiheesta löytyy Beyondlogic:n sivuilta
Portti I/O -osoitteet IRQ
COM1 0x3F8 - 0x3FF 4
COM2 0x2F8 - 0x2FF 3
COM3 0x3E8 - 0x3EF 4
COM4 0x2E8 - 0x2EF 3

Hardware interrupt Default use Software interrupt
0 CLK 0x08
1 Keyboard 0x09
2 Secundary PIC cascade 0x0A
3 COM2 and COM4 0x0B
4 COM1 and COM3 0x0C
5 LPT2 / harddisk on the XT 0x0D
6 Floppy disk 0x0E
7 LPT1 0x0F
8 Real time clock 0x70
9 Generates software interrupt 0x0A 0x71
10 - 0x72
11 - 0x73
12 PS/2 mouse 0x74
13 Mathematic co-processor 0x75
14 IDE harddisk 0x76
15 - 0x77

RS232 portin rekisterit

Base Address DLAB Read/Write Abr. Register Name
+ 0 =0 Write - Transmitter Holding Buffer
=0 Read - Receiver Buffer
=1 Read/Write - Divisor Latch Low Byte
+ 1 =0 Read/Write IER Interrupt Enable Register
=1 Read/Write - Divisor Latch High Byte
+ 2 - Read IIR Interrupt Identification Register
- Write FCR FIFO Control Register
+ 3 - Read/Write LCR Line Control Register
+ 4 - Read/Write MCR ModemControl Register
+ 5 - Read LSR Line Status Register
+ 6 - Read MSR Modem Status Register
+ 7 - Read/Write - Scratch Register


Lyhyesti modemeista

Puhelinlinjaa käyttävä modemi tuntuu olevan katoava erikoisuus kotitalouksien siirtyessä nopeampiin kaapeli, ADSL, ISDN yms yhteyksiin. Silti se tulee säilyttämään vielä pitkään merkityksensä esimerkiksi liikennöitäessä sellaisista kohteista, joissa ei ole nopeampia linjoja käytössä.

Modemi on itsenäinen tietokone, joka muuntaa PC:ltä ja puhelinlinjalta tulevat datavirrat toisilleen sopiviksi sille annettujen ohjeiden mukaan. Ohjeet annetaan käytännössä lähes aina Hayes:n käyttöönottaman AT-ohjauskielen mukaisina 'AT-komentoina'.

Modemi voi olla PC:n ulkoinen tai sisäinen. Suurimpana käytännön erona näissä on se, että ulkoisessa olevista merkkivaloista voi helposti nähdä modemin tilan: onko yhteys muodostunut, onko 'luuri koukussa', kulkeeko dataa.
Ulkoinen modemi kytketään (tässä tapauksessa) PC:n RS232-väylään kaapelilla. Sisäinen kiinnitetään koneen sisälle ISA, PCI tai Modem Riser-liittimeen. Tällöin kortilla on ainakin virtuaalinen RS232-väylä, koska kaikki yhteysohjelmat odottavat näkevänsä UART-piirin rekisterit. Todellisuudessa liikennettä tuskin puristetaan kortilla rinnakkaisesta sarjamuotoiseksi ja taas välittömästi rinnakkaismuotoiseksi vain, jotta voitaisiin käyttää normaalia UART-piiriä.

Modemin nopeus ja väylänopeus eivät riipu toisistaan. Modemi puskuroi sekä puhelin- että RS232-väylällä kulkevan datavirran. Lisäksi modemi suorittaa virralle pyydetyt pakkaus- ja virheenkorjaustoimenpiteet. PC:n ja modemin välinen liikenne voi siis tapahtua vaikka 110bd/s vaikka liikennöintinopeus puhelinlinjalla olisi 56kbd/s.

Liikennöintinopeutta parannetaan myös tiedon pakkauksella. Modemeissa tapahtuva pakkaus pystyy parhaimmillaan 8:1 mutta normaalisti 4:1 pakkaukseen käsitellessään tekstitiedostoja. Jos nyt linjanopeus on 56kb/s ja jatkuva pakkaussuhde 4:1, tarvitset 4x56kb/s eli noin 240kb/s yhteyden PC:n ja modemin välille. Käytännössä tälläinen täysvauhtinen datavirta ei ole jatkuvaa, joten 115kb/s riittää, koska modemin sisäinen puskurointi tasaa nopeusvaihteluita. Pakkaussuhteen normaaliarvoksi pitää arvioida jatkuvassa käytössä ja erityisesti kuva- ja ohjelmatiedostoja siirrettäessä n. 1:2 - 1:2.5. Pienillä tiedostoilla pakkauksesta saattaa olla jopa haittaa. Pienet tiedostot kannattaa, mikäli mahdollista pakata yhdeksi isommaksi jo ennen siirtoa, jos niitä on useita. Modemi ei kykene enää pakkaamaan etukäteen pakatua vaan saattaa yrittäessään jopa kasvattaa siirrettävän paketin kokoa. Valitettavasti modemin sisäisen muistin määrää ei osata käyttää mainosargumenttina.

Tiedon pakkaamisella tarkoitetaan yleensä sen tiivistämistä helpommin siirreltäviksi paketeiksi. Tällä saatetaan tarkoittaa sekä useampien pakkaamista yhdeksi isommaksi tai tiedostojen tiivistämistä siten että ne vievät vähemmän tilaa.

Modemien nopeudessa on saavutettu kehityksen tasankovaihe. 56kb/s on täysin riittävä siirrettäessä pienehköjä webbisivuja ja sähköpostia. Tämäkään nopeus on harvoin mahdollinen puhelinlinjojen rakenteellisista heikkouksista johtuen.

Loppukommentti

Vaikka 30v ikäinen RS232 on vanha standardi, jopa esihistoriallinen tietokoneiden mittapuulla, sillä on vielä tulevaisuutta edessään. Sen kehitykseen ei enää uhrata ruutia, koska laitevalmistajat eivät enää pysty myymään siihen uusia lisävarusteita. Se on siinä mielessä saavuttanut kehityksensä lakipisteen. Sen helppo sovellettavuus pitää sen kuitenkin suosittuna erityisesti pienissä, yksinkertaisissa laitteissa.

Tulevaisuudessa on ehkä odotettavissa signaalijännitteiden asettuminen TTL-tasolle 0..5V, jolloin sen soveltaminen edelleen helpottuisi erityisesti kannettavissa ja irroitettavissa laitteissa. Mahdollisesti myös kaapelointi tulee muuttumaan paremmin suojatuksi, mikäli uudet lähes 1MBaud siirtonopeudet yleistyvät.

RS232:n seuraajat RS422, RS432 ja RS485 poikkeavat RS232:sta liitännältään, joten niitä voidaan käyttää korvaamaan RS232:n fyysinen toteutus.

USB ja RS232 eivät korvaa vaan tukevat toisiaan oikein käytettyinä.


MSDOS ja Windows 3.11

Pääteohjelmat

Windows 3.11 ja erityisesti WFW-versio on ensimmäinen, jossa oli sisäänrakennettu tuki 16550(A)-piirille.
KAnnattaa lukea Microsoftin dokumentaatio ( Windows for Workgroups communications driver (SERIAL.386) can also use the transmit buffer (TX) of the 16550 UART. Previous versions of the communications driver use the receive buffer (RX) only. ) kopio .
16550A:ssa tiedonsiirtoa on nopeutettu 16-tavuisilla puskurimuisteilla sekä lähtevälle, että tulevalle datalle. Win3.11:ssa. Win 3.11 sisältää omat pääteohjelmansa nimiltään TERMINAL ja TELNET. Valitettavasti molempien suurin siirtonopeus on 19600 bd. Mikäli siirrettävää on paljon, kannattaa haeskella tehokkaampia ohjelmia. Valitettavasti nämä ovat jo häipymässä historian pimentoihin. Aikoinaan suosittuja ja hyväksi havaittuja olivat erityisesti GLINK, TELIX ja PROCOMM.

TELIX Telix on oikeastaan DOS-ohjelma, eli Windowsin käynnistämisestä on pelkkää haittaa. Graafisten käyttöliittymien poispilaamille käyttäjille ohjelma on hieman työläs opittava, mutta kun siihen tottuu, se toimii hienosti. Itse olen testannut sitä suoralla 3m pitkällä nul-modem-kaapelilla Windows 3.11 ja Windows XP-koneiden välillä nopeuksilla 300bd - 115kbd ilman ongelmia. Tiedostojen siirtoon käytin X, Y ja ZMODEM -protokollia.

Telixiä ei saa toimimaan WinXP:ssä, mutta ei tarvitsekaan. XP:ssä oleva Hyperterm osaa tarvitavat protokollat.
Harmittavin piirre pääteohjelmissa on, että ne eivät kykene siirtämään kokonaisia hakemistopuita, eikä niissä ole ikkunaa, josta voisi valita siirrettävät tiedostot. Tiedostojen nimet joutuu antamaan käsin. Mikäli siis joutuu kopioimaan Win311-koneesa XP:lle kokonaisia hakemistopuita, kannattaa käyttää tiedoston pakkausta, esimerkiksi PKZIP:ä, joka MSDOS:ssa tuottaa standardeja ZIP-tiedostoja myös kokonaisista hakemistopuista.

KÄYTTÖOHJE
Testattu nopeuksilla 19600-115000
Telix on windows-ohjelma, Ikkunoihin hyppääminen aiheuttaa ongelmia

Valikot löytyvät ALT-n, valinnalla, missä n on joku seuraavista:
Aeditor
BDOS output window
CClear screen
DDial
ELocal Echo on/off
FDOS function
GExecute script
HHang up
I
JDOS
KKeyboard definitions
LOpen/close capture file
MMisc, screen resolution
N
Oyleisasetukset, esim hakemistot
PCOMM-asetukset
RReceive file
T Send file
UDOS command
XLopetus
Zohjeet
=Printer log on/off = Ctrl-@
`doorways
EnterWindow
Ctrl-BreakSend BREAK
Shift-TabAdd-LF on/off

Tiedostojen siirto

Viimeisten MSDOS:n mukana tuli turhan vähälle huomiolle jäänyt ohjelmapari: interlnk / intersrv. Kun Intersrv käynnistettiiin toisen koneen CONFIG.SYS:ssä, pystyi toinen kone käsittelemään tuon koneen levyasemia kuin omiaan.

Tämä levyjako toimi myös Windowsissa. Valitettavasti MicroSoft jätti tämän(kin) ohjelman pois NT-pohjaisista käyttöjärjestelmäyritelmistään (NT 3.x, NT 4.0, Win2000, WinXP. Vistasta en tiedä, koska siihen en suostu koskemaan pitkällä tikullakaan, ellei esimies suoranaisesti määrää).

Vastaavia ohjelmia oli muiltakin valmistajilta. Esimerkiksi Winlink kertoi käynnistyessään, millainen komento vastapään koneessa pitää näppäimistöltä antaa, jotta ohjelma pystyy kloonaamaan tarvittavan osan itsestään toiseen koneeseen, jotta yhteys toimisi.

Muita vastaavia ohjelmia olivat esimerkiksi Laplink ja PClinker. PCLinker tosin toimi ainoastaan LPT-portin kautta. Laplink taas loi lpt-porttien välissä käytettävästä kaapelista standardin.


Lähteet

WWW-sivut:
Lammert Bies
Beyond logic
CAMI Research Inc.
Tomi Engdahl
Dr. D. Koren / Tel-Aviv University
Uusia linkkejä:
MAXIM
James E. Lumpp, Jr.

Feel free to send comments:
PTMUSTA at UTU.FI