Hjälp med rs-485, modbus

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
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 »

Jag kanske inte riktigt hänger med men jag kan inte låta bli att fundera på följande:
* När en RS485-enhet ska sända ska sändaren slås på. Innan dess är bussen "flytande" då alla enheter lyssnar.
* Tx ska slås på en kort stund innan det ska sändas.
* Om DC-nivån motsvarar en startbit innan Tx aktiveras kan detta ge en falsk startbit till en i övrig "tom" byte.
* Om DC-nivån sedan återgår till "startbit" efter avslutat sändning kan man ganska sannolikt få en "tom" byte där med.
* På "gamla" drivkretsar är detta - efter vad jag har sett i datablad - inte ovanligt. Därför har man et terminering som dels ska släcka eko i ledningen pga. impedansproblem och dels lägga ett "inaktivt" DC-nivå på A & B. Detta betyder att man behöver 3 motstånd i varje ända som terminering.

Jag påstår inte att detta är problemet - men det kan vara värd att kolla att det inte är DC-problem när bussen är "flytande".
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Intressant! Jag har sett lösningar med tre motstånd, men då har ledningen vart matad med tex 5v. Jag har ingen separat matning på min linje.

Funkar det med tre 120ohm i var ända mån tro!?
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 »

Med 3 st 120 Ohm får du en impedans på 40 Ohm så det känns tveksamt!
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Ska tillägga att jag endast har grundläggande kunskaper i ellära :)
Datasystem och programmering är jag hemma med däremot.

Helst vill jag ju hitta vart "felet" i min krets ligger. Att hårdkoda för att ta bort "skräp" ur svaret är för lätt :)
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 »

buffedlic skrev: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.
Snälla, kan du inte börja svara på frågorna istället.
VILKA ÄR inställningarna i din slav. Det finns inget som är underförstått.
Länk till slavens datablad
Vilken av FTDI's "kablar" använder du och hur är den konfigurererad?

Vad är CAS i windows.

När det gäller RS485 finns det oftast två "GND", en som är GND, dvs jord och en som är common, dvs återledaren.
på din kabel verkar det som att man benämner återledaren som GND, men är det samma i din slavenhet? Eller har du som brukligt både GND och common på den?
LÄNKAR!
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 »

Utan korrekt terminering och biasing kan kan får konstiga fenomen men jag undrar om inte null före och efter telegrammet är något som tillkommit med flit, kanske med goda avsikter.

En bra telegrammottagare ska kunna hantera detta.
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 »

buffedlic skrev:Intressant! Jag har sett lösningar med tre motstånd, men då har ledningen vart matad med tex 5v. Jag har ingen separat matning på min linje.

Funkar det med tre 120ohm i var ända mån tro!?
'

Man använder i bland tre motstånd för att fixera DC-nivåerna, ett motstånd mot matning, ett mot common och ett mellan ledarna.
Jag tror dock inte detta är ett problem i detta fallet.
Mer troligt att ditt pytonscript eller dina inställningar är felaktigt.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Jan Almqvist skrev:Utan korrekt terminering och biasing kan kan får konstiga fenomen men jag undrar om inte null före och efter telegrammet är något som tillkommit med flit, kanske med goda avsikter.

En bra telegrammottagare ska kunna hantera detta.
Jag lutar åt det hållet jag med. första x00 kan också förklaras med att en del implementerat enhetsid med två byte för att förmå fler enheter på samma bus.

Tomas:

Dator:
Raspberry pi
Ftdi usb, http://www.ftdichip.com/Products/Cables/USBRS485.htm
Driver: default ftdi laddat i kernel
Anslutningar: A, B, GND, VCC, 120om pin1, 120ohm pin2
Inställningar:
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)>

Enhet:
Anslutningar: A, B, GND
Instälningar
ID: 4, Baudrate: 19200, Enhetsnamn: "" (tomt)

Kod för testning

Kod: Markera allt

#!/usr/bin/env python

import minimalmodbus
import sys
minimalmodbus.CLOSE_PORT_AFTER_EACH_CALL = True
minimalmodbus.STOPBITS = 2

instr = minimalmodbus.Instrument('/dev/ttyUSB0', 04) #port, slaveadress

#instr.serial.echo = False
instr.serial.timeout = 0.1
instr.precalculate_read_size = True
instr.debug = True
instr.serial.baudrate = 19200
print instr
i = 0
c = 0
while i < 1:
    try:
        #temp = instr.read_register(2, 1, 4, signed=False)
        temp = instr.read_bit(0, functioncode=1)
        print 'OK!'
        print temp
        i = 100
    except ValueError:
        c = c + 1
        print 'Error'
        print c 
        i = 1
    except IOError:
        c = c + 1
        print 'Error'
        print c
        i = 1

Windows test

http://www.chipkin.com/products/softwar ... s-scanner/
Samt ett excelark som beräknar crc för svaren, för att se att svaren faktiskt var korrekta.

Ger samma svar som i linux, alltid 00 i början och slut.

SLUTSATS

Hårdvaru fel: min krets saknar något eller har fel failsafe. De konsekvent felaktiga svaren kan tala emot...
Mjukvaru"fel": Kan vara två bitars ID samt störning i slutet. Utvecklarna för enheten kan ha lagt in 00 i början och slut som ett finurligt trick för att lösa något?!?! Eller har de missförstått hur modbus implementeras?!!?
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 »

Null i slutet kan vara en fusklösning som används om man inte lyckas stänga av RS-485 drivern vid rätt tidpunkt. Det är en dålig lösning. Undvik.

Att null i början skulle vara en utökad adress håller jag för osannolikt. Man kan inte ha fler än 34 enheter på RS-485.
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

http://www.simplymodbus.ca/faq.htm#2Byte
How does 2-byte slave addressing work?

Since a single byte is normally used to define the slave address and each slave on a network requires a unique address, the number of slaves on a network is limited to 256. The limit defined in the modbus specification is even lower at 247.

To get beyond this limit, a modification can be made to the protocol to use two bytes for the address. The master and the slaves would all be required to support this modification. Two byte addressing extends the limit on the number of slaves in a network to 65535.

By default, the Simply Modbus software uses 1 byte addressing. When an address greater than 255 is entered, the software automatically switches to 2 byte addressing and stays in this mode for all addresses until the 2 byte addressing is manually turned off.
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 »

Där ser man.

Men försöker du att adressera en slav med adress högre än 256 och vilken byte-ordning gäller?

Little-endian eller big-endian?

Att slaven ska svara med 2-byte adress om du skickar 1-byte har jag svårt att tro.
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 »

Fortfarande vad är det för slavenhet, länk?
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

Har du en poäng i. Att sätta värden i enheten funkar ju.

Kan vi utesluta hårdvarufel?!?
Kan vi påstå att de som utvecklat enheten gjort en fullösning?!?

Länk till register förteckning.
http://se.ostberg.com/a023b937-88f6-4fd ... aa6fc6373d
buffedlic
Inlägg: 22
Blev medlem: 6 november 2014, 20:19:25

Re: Hjälp med rs-485, modbus

Inlägg av buffedlic »

TomasL skrev:Fortfarande vad är det för slavenhet, länk?
Se föregående, Heru 100s ec A från Östberg
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 »

Ingen länk till produkten.
Skriv svar