seriële communicatie.

Gestart door conducteur, 30 mei 2013, 21:03:53 PM

conducteur

Ik dacht dat ik al geantwoord heb, maar moet bij ongeluk vergeten hebben om op 'verzenden' te duwen. Dus nog één keer


Waarom ik geen acad. bachelor doe vragen ze mij ook altijd op infodagen op hogescholen als ik info vraag voor prof. bachelor.
Ik doe een prof. bachelor voor een aantal redenen
-Op aanraden van school, blijkbaar zijn er weinig iw'ers die direct slagen.
-Prof. bachelor is meer elektronica-gericht: geen chemie en andere vakken die mij veel minder interesseren...
-Ik denk dat het voor mij beter is om niet direct met het moeilijkste te starten, maar dan liever een jaartje meer te doen
-In Oostende zijn de grote meerderheid van de masters in elektronica... zij die een schakeljaar gedaan hebben en via professionele dat bereikt hebben.


En nu terug naar i²c, rs485, can, ....
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

MickeyMouse

Citaat van: conducteur op 01 juni 2013, 10:14:46 AM
...
-Prof. bachelor is meer elektronica-gericht: geen chemie en andere vakken die mij veel minder interesseren...

Klopt als een bus, maar de wiskunde, chemie, fysica ed geven een serieus grotere basis waar je wel eens (onrechtstreeks) kunt mee te maken krijgen. En ja, dit zijn ook wel de vakken die het wat moeilijker maken, maar dit is enkel in de eerste 2 jaren, als dit nog is als voeger...

Geert

MickeyMouse

Citaat van: Havoc op 30 mei 2013, 21:50:12 PM
...
RS-485 is enkel een electrische interface er is niets dat zegt hoe je daar data mee moet oversturen. Het is een verbetering van RS-422. Het is een electrisch signaal dat van een zender naar een of meerdere ontvanger(s) gaat. Hoeveel ontvangers hangt af van welke belasting de ontvangers op de bus hebben. De standaard ontvanger heeft 1 load en dan kunnen er 32 ontvangers op de bus. Er zijn echter nieuwere chips en die kunnen 1/2, 1/4 of 1/8 loead zijn. Dan kunnen er resp 64, 128 of 256 ontvangers op 1 bus.

De bus werkt met symmetrische spanning maar niet gebalanceerd!!!. Er zijn 2 uitgangen (A en B genoemd) die steeds een tegenovergesteld niveau hebben. Als de ene hoog is, is de andere laag en omgekeerd. Er is dus om goed te zijn steeds een GND verbinding nodig tussen de elementen op de bus. De ontvanger heeft echter met een verschil van 200mV genoeg om te weten of het 1 (A>B) of 0 (B>A) is. De zender stuurt echter steeds minstens 1.5V verschil uit. Er zijn dus heel lange verbindingen mogelijk. Omdat de snelheid ook hoog kan zijn (tot 40Mbps) is een impedantie gekontroleerde bus noodzakelijk. Dit is normaliter 120 Ohm (perfect voor ethernet kabel) en beide einden moeten getermineerd zijn. In goede omstandigheden is tot 1km kabel mogelijk maar dan heb je maar 100kbps meer.
...
In mijn electronica-verleden ooit nog eens een domoticasysteem ontwikkeld voor een klant (hw, firmware & pc-sw) met een 8051-afgeleide controller.
Communicatie gebeurde via RS-485 met 256 ontvangers op de bus aan een snelheid van 345kb/s.
Op die snelheid hebben we testen gedaan en we raakten makkelijk 4km ver, wel met goede twisted pair kabel. In praktijk werd een limiet van 1km aangeraden door ons.
Door de symmetrische spanning en de twisted pair kabel is RS-485 redelijk bestand door storingen van buitenaf...
Nadeel aan RS-485 is dat je best niet in ster werkt maar doorlust,

Geert

Havoc

Ik kan Geert enkel gelijk geven: die vakken zijn misschien minder aantrekkelijk en moeilijk maar wat je er later uithaalt is niet te onderschatten. Als je in de elektronica zit krijg je zeker te maken met chemie (corrosie, compatibiliteit van materialen), sterkteleer (je gaat die dingen moeten inbouwen), fysica (elke grootheid die je wil meten) etc. En wat nog veel erger is: klanten die in die vakgebieden bezig zijn. Op dat moment kunnen meepraten, op zijn minst elementair begrijpen waar het over gaat is echt waardevol.

Ik ben zelf vanuit de natuurkunde bij elektronica terechtgekomen. Klanten apprecieren het als ze niet eerst een dag je moeten uitleggen wat hun toestel nu eigenlijk doet/meet/moet besturen. Of als je vanuit zo'n standpunt een probleem kan zien aankomen. Trek je niet teveel aan van "men zegt dat er niet veel slagen". Toen ik vroeg of het niet beter was om eerst een extra jaar voorbereidende wiskunde te gaan volgen voor ik naar natuurkunde ging heb ik 2x het antwoord gekregen dat de beste voorbereiding op het eerste jaar natuurkunde het eerste jaar natuurkunde was. Ik heb ze gelijk moeten geven...

En die sterkteleer kan je echt wel gebruiken! Kan je berekenen hoeveel hout en staal je onder je baan moet steken om te voorkomen dat ze meer dan 0.58mm doorbuigt als jij er op gaat staan met een boormachine in de hand :D

Heb je nog vragen over i2c or rs-485?
Met vakantie voor onbepaalde duur.

Steam.N

Zelfde mening !
Je bouwt nú je kennis-basis op.
En er zijn er al zó velen, die in die "moeilijke" vakken geslaagd zijn.
Waarom zou het bij jou niet lukken, als je je er voor inzet ?
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

conducteur

Kunnen we nu verder gaan over seriële communicatie technieken?


Wat ik al bijgeleerd heb.


Bij I²C heb je dus twee datalijnen, die hoog gehouden worden door twee pull-up weerstanden. Hierdoor is de communicatieafstand vrij 'beperkt'. Hier is de communicatie ook strikt geregeld. Johan had in reactie 2 een link geplaatst maar die blijkt dood te zijn. Data verzenden begint en eindigt met een start- en stopbit. Na elke verzonden byte zend de ontvanger een soort bevestiging.


RS 485 werkt ook met twee draden, waarbij het signaal op de ene draad het inverse is van de andere. Lange afstanden overbruggen is geen probleem. De communicatie moet je min of meer zelf 'uitvissen'. Er bestaan wel 'protocollen' die van rs-485 gebruik maken.


Het grootse probleem is dat dit nog geen programma oplevert....

Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Havoc

Je hebt gelijk ivm die link. http://www.google.com/url?sa=t&rct=j&q=i2c+standard&source=web&cd=1&ved=0CCwQFjAA&url=http%3A%2F%2Fwww.nxp.com%2Fdocuments%2Fother%2F39340011.pdf&ei=QniqUY7JMYHsO67_gbAK&usg=AFQjCNEuAwuGNjurPtsdvjIdq3OlNQMI7A zou moeten werken. Sorry, ik had ze niet getest.

CiteerRS 485 werkt ook met twee draden, waarbij het signaal op de ene draad het inverse is van de andere.

Dat is niet echt correct. Elke verbinding van RS-232 gebruikt 2 draden. Dus als je een protocol uitdenkt dat bvb clock en data nodig heeft, dan heb je bij RS-485 VIER draden nodig. Twee voor klok en twee voor data. Eigenlijk vijf draden want je hebt ook nog massa nodig. Een voorbeeld is als je SPI wil gebruiken over lange afstand en daarvoor RS-485 gebruikt. Dan heb je eigenlijk 7 draden nodig: 2x klok, 2x MOSI, 2s MISO en GND.

Je kan zonder problemen een UART uitgang met RS-485 verbinden ipv RS-232. Als je de eenvoudigste versie zonder klok en handshake gebruikt heb je enkel RX en TX. Dan zet je RX en TX om naar RS-485 signalen ipv RS-232 signalen en je kan honderden meters ver gaan ipv enkele tientallen meters.

CiteerHet grootse probleem is dat dit nog geen programma oplevert....

Inderdaad...
Met vakantie voor onbepaalde duur.

Gerolf

Je doelt met het verschil tussen 485 en 232 op signaalniveaus, vermoed ik.

Ik dacht dat RS485 bedoeld was om met meer dan twee te communiceren (één master, verschillende slaves),
en dat je met RS232 alleen tussen twee entiteiten communiceert.

Die IPS in je vorige post, bedoel je daar ISP mee?
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

conducteur

Elke module in RS 485 kan data zenden en ontvangen;
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum

Gerolf

Citaat van: conducteur op 02 juni 2013, 09:46:38 AM
Elke module in RS 485 kan data zenden en ontvangen;

Ja, natuurlijk. "slave" wil niet zeggen "alleen luisteren", maar: spreken als je mag van de "master"  ;)
Voor zover ik me herinner gaat de master het rijtje slaves af, vraagt of ze iets te zeggen hebben, en geeft dan eventueel toestemming.
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

doomslu

Citaat van: Gerolf op 02 juni 2013, 10:02:39 AM
Citaat van: conducteur op 02 juni 2013, 09:46:38 AM
Elke module in RS 485 kan data zenden en ontvangen;

Ja, natuurlijk. "slave" wil niet zeggen "alleen luisteren", maar: spreken als je mag van de "master"  ;)
Voor zover ik me herinner gaat de master het rijtje slaves af, vraagt of ze iets te zeggen hebben, en geeft dan eventueel toestemming.
Je bent goed thuis in dergelijke zaken, Gerolf...  ::)
luc    * MODEL RAILROADING IS FUN *

Gerolf

 ;D  ;D Ieder zijn hobby  ;D  :-X
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Havoc

CiteerVoor zover ik me herinner gaat de master het rijtje slaves af, vraagt of ze iets te zeggen hebben, en geeft dan eventueel toestemming.

Dat heeft strikt gezien niets met RS-485 te maken. RS-485 beschrijft enkel het signaal niveau, de manier van de bus organiseren etc. Hoe data gecommuniceerd wordt tussen de verschillende elementen (het protocol) daar zegt RS-485 niets over. Ook niet welke connectoren je moet gebruiken bvb.

Wat Gerolf beschrijft is een systeem master-slave met polling: er is een master die vraagt (polt) of er iemand iets te zeggen heeft, dan beslist de master wie er iets te zeggen heeft, en de master laat dan de slave zijn data sturen (of haalt ze zelf op). Modbus bvb werkt zo.

CiteerElke module in RS 485 kan data zenden en ontvangen;

Dat kan, maar dat hoeft niet. Het is perfect mogelijk om gewoon 1 zender te hebben en verschillende ontvangers die nooit iets terugsturen. Bvb denk aan een nummerdisplay bij de beenhouwer. Een centrale cpu die alles regelt en enkele domme displays die gewoon een nieuw nummer binnenkrijgen.

RS-485 zegt ook niets of het enkel master-slave is, multi-master, of de lijnen bi-directioneel zijn of niet. Het is enkel hoe electrisch een en ander werkt en hoe het moet werken om compatibel te zijn. Electrisch compatibel, want als je een Modbus toestel op een Profibus hangt dan is dat electrisch misschien in orde maar van datacommunicatie gaat er niet veel in huis komen.

CiteerDie IPS in je vorige post, bedoel je daar ISP mee?

Ik zie nergens IPS of ISP staan, enkel SPI. SPI is een eenvoudig protocol dat net als I2C gebruikt wordt voor communicatie tussen chips. Tegenwoordig iets minder maar het wordt nog wel gebruikt als het sneller dan I2C moet gaan. Een toepassing is bvb configuratie eeproms en DAC/ADC. Dan kan je tot 80MHz en hogere klok gebruiken.

Bij SPI is er steeds 1 master. De master controleert de klok en chip select. Als een slave geselecteerd wordt, dan klokt de master de data naar buiten op de MOSI lijn (master-out, slave-in) en tegelijk klokt de slave zijn data buiten op MISO (master-in, slave-out). Er is een variant waarbij er maar 1 datalijn is waarove eerste de master zijn data stuurt en daarna de slave zijn stuk. Als er maar in 1 richting data moet gaan en er is niet echt behoefte aan een protocol, een simpel shift register is dan genoeg.
Met vakantie voor onbepaalde duur.

MickeyMouse

Inderdaad!! Het is gewoon softwarematig redelijk wat ingewikkelder om multimaster te implementeren op RS-485 gezien er geen aparte RX- en TX-lijn is en dus niet kan verzenden en ontvangen tegelijkertijd.
Men moet dan minstens de zelf uitgestuurde data controleren of je die zelf terug correct ontvangt, zoniet wil het zeggen dat een andere module ook net was beginnen zenden. Beiden moeten dan een random tijd van de bus gaan en opnieuw proberen.
In single master is dit heel wat simpeler: een module antwoord pas op vraag van de master, wat niet wil zeggen dat niet eender welke module 'vragen' kan stellen aan eender welke andere module, de master moet dan iedere module, via een commando, iedere module even toelating geven om iets op de bus te gooien.
Hangt er van af wat je nodig hebt natuurlijk...

Eerste wat je best maakt als je met 485 begint is wat wij vroeger 'de luistervink' noemden. Dit is een module die luistert naar alle andere modules maar nooit zelf zend. De data die deze module ziet kun je dan zichtbaar maken op eoa terminal. Ideaal om te zien welk gebabbel er allemaal op de bus gebeurd...;D


Geert

Klaas Zondervan

Citaat van: MickeyMouse op 02 juni 2013, 14:47:01 PM
Men moet dan minstens de zelf uitgestuurde data controleren of je die zelf terug correct ontvangt, zoniet wil het zeggen dat een andere module ook net was beginnen zenden. Beiden moeten dan een random tijd van de bus gaan en opnieuw proberen.
Dat is precies de werkwijze van Loconet.