Forum: Mikrocontroller und Digitale Elektronik 2 RS485 umschalten / automatisch conf. eines Sensors im Feld


von Joel Linn (Gast)


Lesenswert?

Grüß euch,
wir planen in Zukunft neue Sensortechnologie einzusetzen die über eine 
MODBUS Schnittstelle anstatt einer 4..20mA Schnittstelle funktioniert.

Früher war es möglich bei Sensordefekt einfach den Sensor zu wechseln 
oder mit anderen zu tauschen. In Zukunft ginge das nicht, wir müssten 
dem Kunden jeden Austauschsensor zuvor auf die richtige Adresse 
programmieren. Auch gehe ich davon aus, dass die Kunden auf die Idee 
kommen werden bei defekt weniger wichtige mit wichtigeren Sensoren zu 
tauschen, was hohe Finanzielle Schäden verursachen kann....
Die Kunden sind idR nicht qualifiziert, deswegen möchte ich auf jeden 
Fall solche Situationen ausschließen.


Idee :
In jeder Anschlussbox an der die Sensoren mit Steckern angeschlossen 
werden, eine kleine Platine (mit Atmega8 oä.) unterzubringen, die 
zunächst den Sensor vom Bus getrennt hält und die Adresse im Sensor 
programmiert. (Adresse ist dem uC vorher selbst 
einprogrammiert/"gejumped" worden bei Montage der Anlage). Ich gehe 
natürlich davon aus das die Elektronik den Sensor deutlich überlebt.
Ist die Adresse programmiert kann der Sensor mit dem Bus bzw. der SPS 
verbunden werden. Praktischerweise sollte die Platine dann auch per 
MODBUS erreichbar sein um evtl. Diagnoseinformationen bereitzustellen 
(kein Sensor verbunden, Sensor antwortet nicht, etc...).

Es gibt also zwei Modi:
1. Verbindung zwischen Sensor(Slave) und uC(Master)
2. Verbindung zwischen Sensor(Slave), uC(Slave) und SPS(Slave)

Um die Impedanz des Bus nicht in den Keller zu drücken war meine erste 
Idee zwei RS485 Treiber (zb. LT1785) "Rücken an Rücken" zu betreiben, 
also jeweils RO und DI zu verbinden und im Modus 1 einen Treiber 
auszuschalten.
Im zweiten Modus dann aber beide Treiber aktivieren. Allerdings muss 
dann TXD/RCV am uC gedreht werden.


Fragen :
1. Mit welcher Schaltung kann ich TXD/RCV am uC drehen / welcher uC kann 
das von hause aus?
2. Wenn ich die zwei Treiber Rücken an Rücken betreibe, bekomme ich dann 
eine Rückkopplung (zweidraht RS485 ), sodass die Signale reflektiert 
werden?
3. Wenn JA, welcher alternative Aufbau bietet sich an, ohne das die 
Busimpedanz sich verschlechtert, bzw. weiter 32 Geräte betrieben werden 
können? (Der Sensor kann 32 Geräte treiben, der LT1785 bis zu 128)

von Michael K. (Gast)


Lesenswert?

Pin Programming.
Jede Position hat die Adresse im Stecker über Brücken kodiert.
So übernimmt der Sensor bei Power On automatisch seine Adresse.

Wenn Du nur wenig Pins frei machen kannst dann geht das auch über 
Widerstände und einer AD Auswertung.
Ein 10bit Wandler sollte mit hinreichender Genauigkeit 32 Werte klar 
unterscheiden können.

von Oliver R. (orb)


Lesenswert?

Wenn Du schon eine 'Sockelelektronik' einsetzen willst, warum gibst Du 
nicht der die Adresse und läßt sie für alle Sensoren auf einen 
Startdardadresse übersetzen? Dann kann man die Sensoren wieder beliebig 
wechseln und der Bus sieht jemeils einen Telnehmer.
Das wird z.B. bei Brandmeldeanlagen gern so gemacht,

von Joel Linn (Gast)


Lesenswert?

Danke für die schnellen Antworten.

Pin Programming.
Wäre eine Möglichkeit aber auf die Elektronik des Sensors selbst habe 
ich wenig bis keinen Einfluss.

Addresse Übersetzen.
Ich bin mir nicht sicher ob das die Komplexität nicht erhöht. Ich müsste 
dann einen uC mit zwei UARTs haben(?) der quasi die MODBUS Telegramme 
durchschleift und die Adresse austauscht, die Checksum prüft und 
ebenfalls ändert. Ich wollte FreeModbus verwenden, das wäre dann 
wahrscheinlich nicht mehr so einfach möglich, da dann zwei Instanzen 
laufen müssten. Allerdings hätten sich auch meine ursprünglichen Fragen 
erübrigt.

von Bernd K. (prof7bit)


Lesenswert?

Joel Linn schrieb:
> wir planen in Zukunft neue Sensortechnologie einzusetzen die über eine
> MODBUS Schnittstelle anstatt einer 4..20mA Schnittstelle funktioniert.

Wie wärs stattdessen mit IO-Link? Da bleibt die Topologie weitgehend wie 
früher, jeder Sensor hängt sternförmig an seinem eigenen Port am IO-Link 
Master, nur die Kommunikation ist digital. Du kannst Du den Sensor 
einfach austauschen weil er keine eigene Adresse hat, Hauptsache er wird 
wird wieder in den richtigen Port gestöpselt.

von ge-nka (Gast)


Lesenswert?

Joel Linn schrieb:
> anstatt einer 4..20mA Schnittstelle funktioniert.

Ich dachte sowas hat man schon erfunden, HART im Multidropbetrieb. 
Mehrere Sensoren an einer 4mA Schleife die gleichzeitig als 
Energiequelle dient.

von Joel Linn (Gast)


Lesenswert?

Joel Linn schrieb:
> Wäre eine Möglichkeit aber auf die Elektronik des Sensors selbst habe
> ich wenig bis keinen Einfluss.

Die Auswahl der Sensoren ist begrenzt. So auch meine Möglichkeiten.

von Nosnibor (Gast)


Lesenswert?

Also physisch den Bus umzuschalten nur um ausgetauschte Sensoren zu 
konfigurieren kommt mir reichlich umständlich vor. Die Vorteile vom Bus 
(einfachere Verkabelung) hat man damit schon fast wieder aufgegeben. Das 
muß doch auch irgendwie per Software/Protokoll gehen.

Z.B. könnte der Kunde, nachdem er einen Sensor ersetzt hat der 
Zentrale/SPS irgendwie bescheidgeben: "Sensor 17 getauscht". Dann wird 
die Zentrale versuchen, den Sensor anzusprechen; es kommt keine Antwort; 
das ist OK. Dann muß die Zentrale den unkonfigurierten Sensor ansprechen 
und ihm die Adresse 17 zuweisen, fertig. Das setzt natürlich voraus, daß 
man immer nur einen Sensor gleichzeitig tauscht, bzw. nach jedem 
gewechselten Sensor an der Zentrale die Konfiguration vornimmt. Und 
unkonfigurierte Sensoren müssen mit dem normalen Busprotokoll erreichbar 
sein, z.B. unter einer default-Adresse.

von Frank K. (fchk)


Lesenswert?

Joel Linn schrieb:

> wir planen in Zukunft neue Sensortechnologie einzusetzen die über eine
> MODBUS Schnittstelle anstatt einer 4..20mA Schnittstelle funktioniert.

weshalb? Verfügbarkeit? Weniger Verkabelung?

Ich habe gelesen, dass die Sensoren fertige Zukaufteile sind.

Was ist mit der Zentrale? Ist das auch ein fertiges Zukaufteil, oder 
machst Du die selber?

Was für Sensoren sind das (Link)?

fchk

von Schaulus Tiger (Gast)


Lesenswert?

Joel Linn schrieb:

> Addresse Übersetzen.
> Ich müsste dann einen uC mit zwei UARTs haben(?)
das wäre nun wirklich kein Problem
> der quasi die MODBUS Telegramme durchschleift und die Adresse
> austauscht, die Checksum prüft und ebenfalls ändert.

> Ich wollte FreeModbus verwenden

Warum? Der Übersetzer muss doch nichts über den Inhalt des Frames 
wissen, nur, dass das erste Byte die Adresse ist und wie man das Ende 
des Frames findet. Die Anzahl der Datenbytes hat doch auch einen festen 
Platz im Frame? Und wenn nicht, muss er eben die Bytes um 2 verzögert an 
den Sensor weitergeben; er muss dann per Time-Out das Ende erkennen, 
bevor er die originalen CRC-Bytes weitergibt.

Man könnte auch die gleiche Übersetzer-Hardware verwenden und die 
Adresse des Sensors trotzdem umprogrammieren (auf die Adresse des 
Übersetzers). Dann könnte er die Frames 1:1 weiterleiten, aber nur die 
mit seiner Adresse. Dadurch gibt es keine Antwort, wenn jemand Sensoren 
vertauscht. Im dem Fall könnte der Übersetzer alle Adressen 
durchprobieren und den Sensor umprogrammieren.

Was davon einfacher ist, hängt wohl davon ab, wie einfach sich die 
Sensor-Adresse umprogrammieren lässt.

von Bernd K. (prof7bit)


Lesenswert?

Oder ich würde einfach mal beim Sensorhersteller anrufen und fragen wie 
sowas bei anderen Kunden in der täglichen Praxis üblicherweise 
gehandhabt wird, Du bist ja sicher nicht der erste der sich diese Frage 
stellt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.