Hallo, schon vorweg, ich hab das Forum durchsucht und leider nicht das passende für meine Frage gefunden, ansonsten bitte bescheid sagen, bevors kracht :-) Mein 'Problem': Situation: eine quadratische Fläche, abgedeckt mit kleinen Modulen (ca 4x4cm). Ich möchte eine Kommunikation zwischen den Modulen aufbauen. ALLE module sollen HW mässig gleich sein (Massenproduktion)!!, aber nur einer ist master und kann mit allen einzel kommunizieren. die slaves untereinander müssen das nicht können. Ich hab mir schon überlegt das der master dadurch gekennzeichnet wird, dass man einfach ein zusatz Print auf das Modul steckt. Wahrscheinlich wird auf jedem Modul ein MSP430 vohanden sein. Der master soll zusätzlich die Möglichkeit haben mit einem CAN Bus mit einer Basis zu kommunizieren. Ich freue mich auf Vorschläge ! danke Gruss
kommt drauf an wie schnell das ganze sein soll und wieviele module du ansteuern willst. rs485 geht zB gut auch auf größere distanzen
es sind bis zu etwa 50 module. die geschwindigkeit muss nicht unbedingt sehr gross sein, also rs485 würde passen. ich werd mich mal ein wenig schlau machen über rs485, danke andi
Wieviele Module, welche Distanzen, welche Datenrate, welche Zuverlaessigkeit?
sind bis zu 50 Module, distanzen <10m, zuverlässigkeit ist schwez zu sagen, ist nichts wobeis um leben und tod geht, aber natürlich so gut als möglich. vielleicht noch dazu, die module werden in eine art rahmen gesteckt, also so wenig verkabelung wie nötig erwünscht
>> Ich möchte eine Kommunikation zwischen den Modulen aufbauen.
und mehr sollen diese nicht ?
oder soll an deine Module auch was angeschlossen werden ?
z.B. Sensoren / Aktoren
mehr Info währe sehr hilfreich
na die module selbst haben schon eine funktion, aber die ist nicht relevant bezüglich der kommunikation. die daten, die übertragen werden sollten sind lediglich stromwerte,temperaturen oder ähnliches.
kann mir jemand erklären, wie genau einem slave die einmalige ansprechadresse bei rs485 zugeteilt wird (HW,SW) ? kann das im internet nicht genau finden
Adresse ? Eine Adresse braucht man nur in einem Bussystem sodass sich die slaves unterscheiden. Eine Adresse kann fest sein, irgendwas, eine Serienummer. Oder dynamisch, zur Laufzeit zugewiesen.
Warum nimmst du nicht I2C oder wenns einfacher sein soll RS232? Für deine Distanzen sollte das gehen.
@ zacc :das ganze soll doch als bussystem funktionieren, oder wo siehst du den unterschied, Zacc ? die slaves sollen voneinander unterschieden werden, d.h. der master soll immer wissen von welchem slave die daten kommen @valentin : I2C wäre eine möglichkeit, die ich mir auch überlegt hab, aber der 'nachteil' ist dann, das jede slave-adresse separat per HW vorgegeben werden muss, d.h. jedem modul muss man konventionell vor inbetriebnahme die adresse bekannt geben...
Wenn CAN verwendet wird, wire gerne auch LIN verwendet. Angenommen, jeder Sensor hat eine eindeutige Seriennummer. Diese muß zuordbar sein, z.B. über Taster, oder sonstwie, das kannst du dir nicht sparen, ausser du hast ein protokoll, das auch die Kabellängen usw bei der automatischen Addressvergabe berücksichtigt.
Das mit der der Adresse auf dem Modul geht mit Dippschaltern (oder Lötbrücken). Wenn es an Pins fehlt (für 64 Adressen brauchst du 6 BIT/Pins) noch ein Schieberegister zum Einlesen beim Power-On. Dann als I²C-Bus verschalten und ansprechen. avr
Wenn man einen Positionsbezug zu den Daten haben will, so wird man die Seriennummer, oder sonst eine feste, fest einprogrammierte Nummer nehmen.
Hallo Michi R.
Du willst 50 Module, die jeweils 10 m auseinander liegen über einen Bus
verbinden?
Da kommen wie also auf eine gesamt Länge von 500 m ?
sollen die Module über den Bus auch mit Strom versorgt werden?
RS485 sollte max nur 30 Knoten haben, Protokoll ist bei RS485 nicht
spezifiziert.
I2C geht bei den Strecken nur über einen Bus-Treiber P82B96 oder P82B715
max Adressen pro Strang ca 120 ... ( = 128 - die Reservierten) Länge
hängt von der Kapazität der Leitung ab.
Wie soll den dein Bus verlegt werden als eine Linie mit allen Knoten
oder als Stern mit mehrere Knoten pro Zweig.
>>na die module selbst haben schon eine funktion, aber die ist nicht
relevant bezüglich der kommunikation.
Ist mir neu ! ... ob 1 Byte oder hunderte Byte übertragen werden sollen
haben einen gewaltigen Einfluss auf die Art des Busses und des
verwendetet Protokolls.
Bei I2C wird das über die Start/Stop Sequenz und einen ACK nach jedem
Byte geregelt, langsame Slaves können über das Clock-streching den
Master dabei aus bremsen, max Länge der Frames liegt glaube bei 128
Byte... bin mir aber nicht ganz sicher.
Bei RS485 must Du die Adressierung und das Hand-shaking mit in das
Daten-Paket legen ... die DatenPakete sollten zeitlich unterbrochen
versendet werden, damit ein Slave sich darauf synchronisieren kann, wie
Du das Protokoll gestaltetest ist Dir überlassen, Da mach je jeder was
er will.
Wie willst Du Fehler im Bus vermeiden / beseitigen ? ... z.B. ein Konten
hängt sich auf und blockiert den Bus ?
Warum denn 4x4 cm ... soll die Leiterplatte mit in die Schalterdose ?
@Ralf nein, die ca. 50 Module sind jeweils im abstand von <10m, d.h. die Module sind alle sehr nahe beieinander und die basis dazu hat < 10m abstand. Wie die Stromversorgung zustande kommt, ist noch offen. Z.b. Könnte die kommunikation auch über die speisung geschehen (Asi), doch wie gesagt ist das alles noch offen, ich wollte jediglich auf ideensuche gehen hier. klar ist die Funktion des Moduls bezüglich der Kommunikation nicht gleichgültig, doch wie beschrieben sollen jediglich ströme und temperaturen usw übertragen werden, und das vielleicht alle paar sekunden, alsi die geschwinigkeit des busses ist nicht an erster stelle. Bezüglich Fehler des Busses ist es so, dass wie gesagt alle paar sekunden die daten aktualliesiert werden sollen, also falls ab und zu mal ein fehler passiert ist das nicht allzuschlimm (falls du das damit gemeint hast). die dimension (zb. 4x4) ist eine vorgabe... die Basisstation liefert jeweils die spannung bzw den strom für jedes modul. diese module haben aber zb. alle andere sensorwerte (wie gesagt zb ströme oder temperaturen) und sollen diese jediglich dem master und dieser der station mitteilen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.