Hjälp med rs-485, modbus

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Hjälp med rs-485, modbus

Inlägg av buffedlic »

Hej

har en usb->RS-485 adapter från FTDI som jag anslutit till en enhet och försöker kommunicera via modbus.

Jag får svar men varje meddelande börjar och slutar med 00, trodde det var mjukvarumässigt fel men förstått att hårdvara inte är rätt kopplad?!
Har läst mig till att ett motstånd behövs men blir inte klok på hur motståndet kopplas.

Setup idag:

dator_____________________________ enhet
a <----------------------------> a
b <----------------------------> b
gnd <------------------------> gnd

Kod: Markera allt

Ger tex detta svar:  \x00\x04\x01\x01\x01\x90\x84\x00
Vilket bör vara: x04\x01\x01\x01\x90\x84
Tommy_Naseem
Inlägg: 274
Blev medlem: 4 januari 2013, 14:40:06
Ort: Tenhult

Re: Hjälp med rs-485, modbus

Inlägg av Tommy_Naseem »

RS 485 skall väll termineras i varje ände med ett 120 Ohms motstånd om jag inte missminner mig.
Alltså mellan A & B
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Så ett motstånd vid datorn samt ett vid enheten alltså. Är det rätt?
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Hjälp med rs-485, modbus

Inlägg av Icecap »

RS485 som har "långa" kablar behöver ett termineringsmotstånd i varje ända. Deras värde beror på impedansen i TP-paret men 120 Ohm verkar ganska normalt.

Och de ska placeras i var sin ända av slingan, mellan A och B.

Det är inte ovanligt alls att man (speciellt med äldre RS485 drivkretsar) har ett motstånd från VDD till A (eller B?). Sedan ett mellan A och B och till slut ett från B (eller A?) till GND. Detta ger att när ingen sändare på bussen är aktiv kommer DC-nivån att vara "inaktiv" så att man inte får falska startbit, BREAK eller liknande.

Har sett denna koppling i datablad, kolla själv.

Men de "moderna" interface-kretsar har numera lösa detta vid att göra ingången lätt offset.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

hade bara ett 82ohm liggandes, får springa och köpa ett imorgon så jag kan labba vidare.
Förhoppningsvis får jag bort bekymret då :)
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Hjälp med rs-485, modbus

Inlägg av Jan Almqvist »

Jag tycker att meddelandet ser väldigt kort ut, typ bara PDU:n.

Det borde vara vara längre?
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

nejdå allt finns där

x04\x01\x01\x01\x90\x84
id\fc\bc\data\crc\crc\

det konstiga är att jag kan sätta värde till ett eller noll om jag vill men får likväl samma fel som svar.
sitter ett 120ohm motstånd i usb-rs485 stickan som jag använder nu och 82ohm vid enheten. Samma fel, printer till kjell imorgon och köper mig en 120a till.

om inte det hjälper får jag ändra i mjukvaran för att strippa felet...
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Hjälp med rs-485, modbus

Inlägg av lillahuset »

Hur "vänder du bufferten"?

Terminering för modbus på RS485 är väl specifierat. sök efter specen på nätet.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hjälp med rs-485, modbus

Inlägg av TomasL »

Korta avstånd och låga hastigheter behöver i princip inte termineras.
Annars terminerar man med samma resistans som kabelns impedans, vilket normalt för en TP-kabel hamnar någonstans mellan 80 och 150 ohm.

Lite mer info är dock nödvändigt.
Vad för applikation använder du i datorn.
Vilka är inställningarna på serieporten, resp din enhet.
Vad för typ av kabel.
I din skiss, är det du kallar "gnd" egentligen "common" eller är det "gnd"
Vilket protokoll använder du RTU/ASCII?
Vad skickar du till enheten (hela meddelandet, byte för byte).
Vad får du tillbaka (hela svaret Byte för byte).
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Har en tunn installationskabel för alarm mellan datorn och i det här fallet ett ventilationsaggregat. ca 7m.

Datorn är en raspberry pi med usb->rs485 från ftdi. kör 19200baud ingen paritet, 1 stop bit.
här är ett exempel på kommunikation:

Kod: Markera allt

$ ./rstest.py 
minimalmodbus.Instrument<id=0xb6c844e0, address=4, mode=rtu, close_port_after_each_call=True, precalculate_read_size=True, debug=True, serial=Serial<id=0xb6c861d0, open=False>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=2, timeout=0.1, xonxoff=False, rtscts=False, dsrdtr=False)>

MinimalModbus debug mode. Writing to instrument (expecting 6 bytes back): '\x04\x01\x00\x00\x00\x01\xfd\x9f'
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1415278843825.3 ms, minimum silent period: 2.01 ms.
MinimalModbus debug mode. Response from instrument: '\x00\x04\x01\x01\x01\x90\x84\x00' (8 bytes), roundtrip time: 15.6 ms. Timeout setting: 100.0 ms.
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Hjälp med rs-485, modbus

Inlägg av Jan Almqvist »

Det finns produkter som har "dålig" hantering av RS-485 och lägger till en null i slutet. Man kan tänka sej att den även lägger en före? Eftersom inga (?) Modbus RTU telegram börjar med null är det väl bara att ignorera ett eventuellt inledande null?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hjälp med rs-485, modbus

Inlägg av TomasL »

Pröva med realterm på en PC och se om det blir likadant.
Datorn är en raspberry pi med usb->rs485 från ftdi. kör 19200baud ingen paritet, 1 stop bit.
baudrate=19200, bytesize=8, parity='N', stopbits=2
Vilket är det?

Fortfarande:
Vilka är inställningarna på serieporten, resp din enhet.
I din skiss, är det du kallar "gnd" egentligen "common" eller är det "gnd"

Använder själv lite olika varianter på adaptrar med FTDI-kretsar, Har inte sett detta hända på någon av dem.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

tomasL: det är "GND" som jag använder, och har testat med både en och två stopbits, minns dock att ingen paritet automatiskt bör vara två stopbits. Tillverkaren Östberg(heru) vill promt hålla vid att de inte ger någon support för deras modbus endast ett register...

Jan: precis, jag lär få hårdkoda minimalmodbus till att strippa första och sista byten, precis som när man behandlar ASCII svar

EDIT: Precis provat med 120ohm i var ända, samma resultat:

Kod: Markera allt

MinimalModbus debug mode. Writing to instrument (expecting 1000 bytes back): '\x04\x01\x00\x00\x00\x01\xfd\x9f'
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1415306790486.5 ms, minimum silent period: 2.01 ms.
MinimalModbus debug mode. Response from instrument: '\x00\x04\x01\x01\x01\x90\x84\x00' (8 bytes), roundtrip time: 522.6 ms. Timeout setting: 500.0 ms.
Har testat ett tiotal register och alla ger "rätt" värden... Kan ju vara utvecklarna av enheten som implementerat modbus lite galet...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hjälp med rs-485, modbus

Inlägg av TomasL »

Länkar till din adapter och enheter vore bra.
Vad är din enhet satt till, frågade jag tidigare, du har inte svarat än på det.

Har du provat med ett terminalprogram och en vanlig PC?
Till exempel RealTerm.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Enheten har tre val, id, baudrate och enhetsnamn. De är inställda för att matcha mottagaren. Trodde det var underförstårtt så frågan måste ha flimrat förbi obemärk från min sida, ledsen för det Tomas.

Länk:
http://www.ftdichip.com/Products/Cables/USBRS485.htm

Har använt CAS i windows, exakt samma svar.
Skriv svar