CAN sinnvoll für meine Anwenung oder was anderes?

Gast #5705003
Lesenswert?

Hallo zusammen,

ich habe ein paar simple Geräte auf ATMEGA328-Basis gebaut. Relays, 
Taster & Leds, funktioniert soweit perfekt.

Nun möchte ich die Geräte miteinander kommunizieren lassen:
Wird an einem beliebigen Gerät X ein Taster gedrückt, soll bevor die 
Relays/Leds geschaltet werden der Status der anderen Geräte 
zurückgelesen werden, und unter umständen ein Befehl an alle Teilnehmer 
gesendet werden bevor Gerät X sein eigentlichen Befehl ausführt.

Die Geschwindigkeit muss wahrscheinlich nicht sonderlich hoch sein, auch 
die Datenmenge wird sehr klein ausfallen (nur der Status der jeweiligen 
Geräte wird ausgetauscht, 2-3 Byte oder so). Distanz zwischen den 
Geräten beträgt max. 20m denke ich.
Die Kommunikationsleitung soll von Gerät zu Gerät weiter geschlauft 
werden ( RJ45-Buchsen: 
https://www.digikey.com/product-detail/en/pulse-electronics-network/E5908-4V0S54-L/553-2266-ND/4868936) 
Die Geräte werden über 12V Steckernetzteile versorgt, intern dann 5V.

Nun meine Frage, ist CAN in diesem simplen Anwendungsfall zweckgemäss, 
oder gibt es einfachere, weniger aufändige Bussysteme, die mit meinen 
Anforderungen klar kommen? (Das ganze geht richtung Multimaster, 
richtig?)

Falls CAN, habe ich geplant den 328 mit einem MCP2515 + TJA1050 zu 
erweitern (anfänglich mit solchen Testmodulen: 
https://www.electrodragon.com/product/mcp2515-can-receiver-breakout-board-spi)

Falls ihr noch weitere Angaben benötigt, einfach melden. Bin noch 
ziemlich neu auf dem Gebiet.

Vielen Dank im Voraus für euren Input.

Gruss Markus
Gast #5705035
Lesenswert?

Generell ist CAN erst einmal ein sehr einfacher Bus. Er ist 
Ereignisorientiert und sendet nur Daten, wenn etwas passiert - das 
spricht in Deinem Fall deutlich für CAN.

Höher eingeordnete Feldbusse wie z.B. ProfiBus oder gar Ethernet laufen 
ständig und es obliegt den jeweiligen Teilnehmern, die Ringdaten 
zyklisch auszuwerten.

Niedrige Baudrate, wenig Datenbandbreite, lange Leitungswege (wobei 20m 
nicht sonderlich viel sind) sowie einfache und störunempfindliche 
Verdrahtung sprechen in diesem fall wirklich für CAN.


Bussysteme die noch weiter unten angesetzt sind wären irgendwas 
differentielles mit RS422 oder RS485 - die sind aber nicht 
Kollisionssicher - deswegen würde ich darauf verzichten.

Ich würde auch CAN verwenden.
...denke daran, dass Du mit CAN (ohne Tricks und Kniffe) max. 8 Byte je 
Telegramm versenden kannst - wenn Dir das ausreicht ist alles gut!
Gast #5705042
Lesenswert?

CAN erfüllt die Anforderungen auf jeden Fall stressfrei.

Machbar ist es sicherlich auch ganz ohne viel extra Hardware z.B. 
seriell oder über I2C, aber dann musst du ein ordentliches Protokoll 
inkl. Kollisionsbehandlung austüfteln.

"Ein paar simple Geräte" klingt für mich nicht so, als wäre der Aufwand 
es gegenüber dem Mehrpreis für CAN es wert, also ich sag auch: CAN 
passt.
Gast #5705209
Lesenswert?

Hallo zusammen,

vielen Dank für eure Rückmeldungen :)

alles klar, CAN!

bez. dem Software-Protokoll bzw. wie die empfangen Daten verarbeitet 
werden und wie das Netzwerk unter den Geräten aufgebaut wird:
Habt ihr irgendwelche Beispiele  Projekte  Links / Stichworte für 
mich, damit ich mich einlesen kann? Weiss noch nicht so recht nach 
welchen Stichworten ich suchen soll.


Was ich denke ich noch brauche ist ein CAN-Datenlogger / Analyzer für 
den PC um zu sehen ob die Kommunikation funktioniert wie gewünscht.
Habt ihr eine Produktempfehlung für einen solchen Datenlogger für mich? 
Sollte nicht allzuteuer sein... :|

Vielen Dank für eure Hilfe!! :)

Gruss Markus
Gast #5705237
Lesenswert?

Markus schrieb:
> Was ich denke ich noch brauche ist ein CAN-Datenlogger / Analyzer für
> den PC um zu sehen ob die Kommunikation funktioniert wie gewünscht.
> Habt ihr eine Produktempfehlung für einen solchen Datenlogger für mich?
> Sollte nicht allzuteuer sein... :|

Da fällt mir spontan der PCAN-USB ein
https://www.peak-system.com/PCAN-USB.199.0.html

Nicht das aller billigste aber auch nicht übertrieben teuer und tut 
einfach.

Gruß
Rainer
#5705254
Lesenswert?

Nicht billig, aber gut: Peak-CAN.
Habe 3 Stück davon, seit ca. 15 Jahren im Einsatz. Kein einziger 
ausgefallen, und auch die diversen Betriebssystemwechsel völlig 
schmerzlos mitgemacht.

Was den Datenaustausch angeht: solange es nichts sicherheitsrelevantes 
ist mach es dir einfach und verzichte auf alle Sonderfälle wie explizite 
Anfrage bestimmter Daten (obwohl das extra vorgesehen ist, remote-frame) 
oder übergeordnetes Protokoll wie CANOpen.
Lass jeden Teilnehmer z.B. alle 20ms seinen kompletten Status 
(Eingänge, Ausgänge, Timer, was auch immer) auf den Bus blasen und 
verlass dich einfach drauf, dass es auch ankommt (wenn elektrisch 
korrekt aufgebaut und die Buslast überschaubar bleibt ist es praktisch 
tatsächlich fehlerfrei, eine theoretische winzige Fehlerrate bleibt 
natürlich).
Passt alles in 8Byte bist du schon fertig. Kannst natürlich je Karte 
auch mehrere IDs verwenden oder auch das 1.Datenbyte als Kennzeichen 
nehmen, was denn die restlichen 7 (oder auch weniger) Byte bedeuten. So 
kann man auf einer ID 256*7Datenbyte unterbringen. Du kannst dich da 
wirklich fast beliebig austoben.
#5705313
Lesenswert?

Hallo

Ja das PCANView kann einigermaße gut mitloggen, ein CAN-Interface ist 
aber immer nötig, wenn's der PC anzeigen soll. Für's PCANView eben eines 
von Peak.
Evtl. kannst Du das für's erste auch schon mal mit einem Oszi 
überprüfen. Z.B. das Picoscope hat ganz brauchbare Interpreter, die den 
Datenstrom dann gleich als CAN-Bytes anzeigen.

Gruß Ulf
Gast #5706221
Lesenswert?

Markus schrieb:
> und wie das Netzwerk unter den Geräten aufgebaut wird:

Im einfachsten Fall wie bei dir sollte die ID den Inhalt der Nachricht 
beschreiben, nicht den Empfänger, Absender oder sonstwas:
ID 0x156: Gemessene Raumtemperatur
ID 0x157: Gemessene Raumluftfeuchtigkeit
ID 0x158: Sollwert Heizungsventil
ID 0x159: Istwert Heizungsventil
ID 0x160: Sollwert Lüfterdrehzahl
ID 0x161: Istwert Lüfterdrehzahl
Jede Komponente schickt periodisch das, was sie zu verkünden hat, und 
lauscht auf die Botschaften, die sie interessieren.

Schlecht ist sowas:
ID 0xc1: Botschaft vom Sensor- an Master-Controller mit diversen Werten
ID 0xc2: Botschaft vom Sensor- an Display-Controller mit diversen Werten
ID 0xc3: Botschaft vom Master- an Lüfter-Controller mit diversen Werten
Dann läuft man nämlich bei jeder kleinen Änderung herum und flasht alle 
Controller neu.
Gast #5706233
Lesenswert?

Markus schrieb:

> Was ich denke ich noch brauche ist ein CAN-Datenlogger / Analyzer für
> den PC um zu sehen ob die Kommunikation funktioniert wie gewünscht.
> Habt ihr eine Produktempfehlung für einen solchen Datenlogger für mich?
> Sollte nicht allzuteuer sein... :|


Raspi mit CAN Shield (oder dem board das du verlinkt hast so umgebaut 
dass der can Controller mit 3,3V läuft) und den can utils

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren