RS485 debugging

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hej,

Jeg er ved at forbinde en PLC og en embedded computer via RS485 og
MODBUS RTU protokollen. DesvE6%rre har jeg ikke haft den helt store
succes med at fE5% tingene til at snakke sammen. Jeg startede med at
forbinde de to enheder (A, B og jord) med et skE6%rmet kabel. PLC92%en er
sat til slave og den anden enhed er sat til master. Jeg sendte sE5% en
forespF8%rgsel fra master92%en, men fik ikke svar og nogle gange et
uforstE5%eligt svar.

Efter dette har jeg forsF8%gt at debugge RS485-forbindelsen med mit
oscilloskop:
http://therkelsen.info/temp/RS485OscilloscopeDebug.pdf

Umiddelbart ser output pE5% skopet fornuftigt ud, men jeg har bemE6%rket
en ting. Hvis jeg sender en enkelt byte af sted, sE5% ser signalet mE5%ske
ikke helt rigtigt ud. Et eksempel fra wikipedia viser, at hvis man
sender 0xd3 afsted, skal output se sE5%dan ud:
http://therkelsen.info/temp/rs485_waveform_0xd3_byte_lsb_first.png

Hos mig ser det sE5%dan ud:
http://therkelsen.info/temp/scope_rs485.jpg
http://therkelsen.info/temp/rs485_prob.avi
AltsE5% nE6%sten magen til bortset lige fra starten af signalet. Er der
noget galt med dette output?

Jeg har desvE6%rre ikke en USB->RS485 konverter til min PC, men det kan
vE6%re, at jeg mE5% anskaffe mig en for at blive klogere pE5% problemerne.
Hvor finder man sE5%dan en til smE5% penge, der virker godt?
Jeg har set en hos ELFA:
https://www.elfaelektronik.dk/elfa3~dk_da/elfa/init.do?item3D%25-791-10&toc =
3D%20674
men den ender i et DB9 han stik, det ville vE6%re rarest med
skrueterminaler, men det kan jeg selvf. selv lave.

Mvh. Kim

Re: RS485 debugging
Den 12.06.2011 22:18, skreiv Kim:
Quoted text here. Click to load it

Du har et "stort problem" ;-)

Den korteste ModBus meldingen er 8 bytes, og 7 bytes som svar. Du har
behov for (les trenger) et minneskop som husker minst 16 bytes.

Du har "lov til" å henge en spion på RS485 linjen. En krets, DS3695 er
billig og bra. Der er ørten varianter av samme kretsen.

Det er lite heldig å måle direkte på 485-bussen. Mål etter at ds3695
haromgjort signalet til vanlig TTL.


Lær deg hvorledes hver byte skall se ut på scoopet, og mål hver byte,
stepp for stepp gjennom hele kjeden. En vanlig feil er å bytte om "A" og
"B" signalene.

HM


Re: RS485 debugging
Quoted text here. Click to load it

Tak for dit svar Harald. Jeg startede med at sende 8 byte modbus
beskeder, men det virkede ikke. Derfor prF8%ver jeg nu det simplest
mulige eksempel og sender blot en enkelt byte. Det er kun for at se,
om signalet ser rigtigt ud og har ikke noget med modbus-protokollen at
gF8%re.
Jeg forventede dette (0xd3):
http://therkelsen.info/temp/rs485_waveform_0xd3_byte_lsb_first.png
men min mE5%lig viser en lille afvigelse i starten:
http://therkelsen.info/temp/scope_rs485.jpg
http://therkelsen.info/temp/rs485_prob.avi
Kan du fortE6%lle mig, om afvigelsen i starten er en fejl/et problem?

Det lyder som en god ide med sE5%dan en spion. Jeg tror ikke, jeg har
ikke byttet om pE5% A og B signalerne. Jeg synes umiddelbart de slides,
jeg fandt pE5% internettet er rimeligt hjE6%lpsomme:
http://therkelsen.info/temp/RS485OscilloscopeDebug.pdf
men jeg kan ikke forklare min "fejl" vha. dem.

Mvh. Kim

Re: RS485 debugging
Den 13.06.2011 09:23, skreiv Kim:
Quoted text here. Click to load it

Jeg vet ikke sikkert hvor jeg skal begynde, men jeg forsøker.

Scopet dit har en kondensator på inngangene. Derfo viser det "0" volt
som hvilesignal, både på "A" og "B" signalet. Mitt profisjonelle scop
har en bryter som velger AC eller DC inngang. Jeg velger DC. Du bør være
klar over denne denne målefeilen.

(Hex)              D3
(Binær)             11010011, og der blir
+ start, par, og stop    011010011p1 = 11 bit
            SDDDDDDDDPS

Dette er teorien. Tegningen:
http://therkelsen.info/temp/rs485_waveform_0xd3_byte_lsb_first.png
viser 10 bit. Pariteten mangler.

Slik leser jeg scoopet, Øverste bilder:
        10110010111
Invertert    01001101000 Det er 11 bit. Jeg finner ingen fornuft i disse
bildene: Dersom startbittet er "1", så skall stopbittet være "0", og
dersom startbittet er "0", så skal stopbittet være "1".

Beklager, men jeg tror transmitteren din er splitter pine gal.

Dette programmet har hjulpet meg. Gratisversjonen.

(Beklager, jeg har ikke mer tid nu.)

HM

Quoted text here. Click to load it


Re: RS485 debugging

Quoted text here. Click to load it

Nej, scopet er ikke AC koblet, for så ville man se det tydeligt. En
485-linje, der er i "tomgang", vil netop lægge sig på en spænding, der
ligger mellem 0V og forsyningsspændingen, præcist som det ses på Kim's
billede.

Quoted text here. Click to load it

Og du anser dermed ikke Tektronix for at være et profesionelt
oscilloscop. Underholdende...

Men selv på et Tek scope kan man vælge AC/DC kobling af kanalerne.

Bo //

Re: RS485 debugging
Den 13.06.2011 19:02, skreiv Bo Bjerre:
Quoted text here. Click to load it

485- Linjen skall termineres, og V+ skall legges høy og V- skall legges
lavt. Dette fordi - - -.
Quoted text here. Click to load it

Jeg har ikke sakt et kløvet ord om Tektronix. Venligst, ikkeinsunier.
Underholdende...
Quoted text here. Click to load it

Vi har masser av fluer i Norge nå. Trenger du noen?

HM

Re: RS485 debugging
Quoted text here. Click to load it

Fordi...

Ifølge standarden er der ikke noget, der tilsiger, at man blander stel
og forsyning ind i begreberne. Nogle er 3.3V forsynede og andre er 5V
forsynede. Man terminrer linjen i begge ender mellem de to tråde i
linjen, med en ohmsk modstand, der svarer til kabelimpedansen. Typisk
120 til 150 Ohm.

En 485 modtager har et indbygget bias på typisk 200mV, der sikrer en
kendt tilstand, når linjen IKKE drives.


Quoted text here. Click to load it

Nå, ja, du antyder ellers helt godt at det scope Kim anvender som
udgangspunkt er AC koblet, fordi det ikke er prof. Men lad det nu hænge.
Og har du ikke humor til at se det sjove, så glem det.

Bo //

Re: RS485 debugging
Den 13.06.2011 22:47, skreiv Bo Bjerre:
Quoted text here. Click to load it

Og derfor kan man ha busen "flytende" i forhold til GND, - i alle fall
frem til neste tordenvær.

Quoted text here. Click to load it

Tenk så mye du kan om dette, - og du er ikke istand til å gi Kim noe hjelp.

Quoted text here. Click to load it

Har du vansker med leseferdigheten? Forsøk å lese et par ganger til.

Quoted text here. Click to load it

Forsøker du på det vi kaller "inteligent humor"? Joda. Man mø øve seg.

Re: RS485 debugging
Quoted text here. Click to load it
 Kim's
Quoted text here. Click to load it

visse modbus devices krE6%ver at der er et sE6%t pull-up/down pE5% linien,
tror
det hedder polarisation i standarden.

Quoted text here. Click to load it

mE5%ske nok kendt men ikke nF8%dvendigvis 'rigtigt'

snip

-Lasse

Re: RS485 debugging
Nu har jeg modtaget RS232->RS485 konverteren og prF8%ver at sende den
samme byte, 0xd3, fra min PC. Mit oscilloskop er sat pE5% udgangens GND/
A/B pE5% RS485 konverteren ligesom beskrevet tidligere og i pdf-
dokumentet. Uden nogen termineringsmodstande ser jeg flg.:
http://therkelsen.info/temp/scope_rs485_pc.jpg
Det er heller ikke, hvad jeg forventede. Jeg har prF8%vet at sE6%tte en
120 ohms modstand mellem A og B, men det E6%ndrer selvf. ikke selve
signalets form.
IfF8%lge manualen til ICPCON i7520 konverteren er dataformatet sE5%ledes:
1 start+8data+1stop+ingen paritet 3D% 10 bit
Endvidere har konverteren en "Self Tuner" som skulle gF8%re fF8%lgende:
"therefore it can detect the baud rate and data format automatically
and control the direction of the RS485 network precisely".

Kan nogen fortE6%lle mig, hvordan jeg pE5% korrekt vis tilslutter denne
ICPCON i7520 rs232->rs485 konverter og mE5%ler med et oscilloskop over
den?
Skal der nogle termineringsmodstande til?
Hvordan skal outputtet se ud pE5% et oscilloskop se ud, nE5%r jeg sender
byte 0xd3?
Jeg forventer umiddelbart stadig at se samme sekvens som:
http://en.wikipedia.org/wiki/EIA-485#Waveform_example

Mvh.
Kim

Re: RS485 debugging
Quoted text here. Click to load it

Der er der kun 7 bit, ingen start og stopbit. Med mindre at start og
stop er samme polaritet som idle state.

Hvad bruger du til at sende med fra PC?

Quoted text here. Click to load it

Det ser det ud til at du allerede har fundet ud af.

Quoted text here. Click to load it

Ja, hvis dine kabler er over 10 meter lange.....




Klaus
--
 Modelbane Europas hjemmeside: http://www.modelbaneeuropa.dk
Modeltog, internet, gratis spambekæmpelse, elektronik og andet:
We've slightly trimmed the long signature. Click to see the full one.
Re: RS485 debugging
Quoted text here. Click to load it

Hvis "1" er lav (øverste kurve) og man læser 'bagfra', så er byten faktisk
til stede. Den første (til venstre) firkant er startbit, så kommer
"11001011" som er 0xd3 bagfra. De sidste 2 bit er lav som det efterfølgende
stykke (idle). Så tilsyneladende er det kun stopbit der mangler.

--
Ulrik Smed
Aarhus



Re: RS485 debugging

Quoted text here. Click to load it

... hmm, stop-bit skal jo forresten være 'idle', den skal bare give et
mellemrum inden næste start-bit. Så den mangler faktisk ikke, man ser den
bare ikke når der ikke kommer en efterfølgende byte.
--
Ulrik Smed
Aarhus



Re: RS485 debugging
Quoted text here. Click to load it

Tak for din analyse. Den fik ogsE5% mig til at indse, at bE5%de 0xd3 og
0x2b bliver sendt korrekt fra RS232->RS485 konverteren.

Re: RS485 debugging
Quoted text here. Click to load it

Et lille testprogram der kF8%rer under Linux, ser omtrent sE5%dan ud:
#define   TestMsgLength   1
ubyte testMsg[TestMsgLength]     3D% ;
fd 3D% open("/dev/ttyUSB0", O_RDWR);
baudrate 3D% B2400;
tcgetattr(fd, &Term);
cfmakeraw(&Term);
cfsetospeed (&Term, baudrate);
cfsetispeed (&Term, baudrate);
tcsetattr(fd, TCSAFLUSH, &Term);
while(1)
{
    write(fd, testMsg, TestMsgLength);
    usleep(100000);
}

Re: RS485 debugging
Jeg glemte paritet, stop bit osv.

Her er eksempel fra hyperterminal, databit: 8, paritet: ingen,
stopbit: 1:
http://therkelsen.info/temp/hyperterminal_ascii_+.jpg
Det ser vist rigtigt ud!

Re: RS485 debugging
Quoted text here. Click to load it

Glemte at skrive, at det nu er ASCII karakteren "+" jeg sender, dvs
0x2b = 00 10 10 11

Re: RS485 debugging
Quoted text here. Click to load it

Hvad er det for et program, du vil anbefale mig?
Mvh. Kim

Re: RS485 debugging
Den 13.06.2011 20:54, skreiv Kim:
Quoted text here. Click to load it
Tegningen:
http://therkelsen.info/temp/rs485_waveform_0xd3_byte_lsb_first.png
Quoted text here. Click to load it

Jeg har brukt det som "sniffeprogram" på RS485, og som avansert
terminalprogram.

HM

Re: RS485 debugging
Quoted text here. Click to load it

Hvilket program?



Klaus
--
 Modelbane Europas hjemmeside: http://www.modelbaneeuropa.dk
Modeltog, internet, gratis spambekæmpelse, elektronik og andet:
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline