Forum: Haus & Smart Home Gartensteuerung und CAN


von Matthias K. (gidarrnmatze)


Lesenswert?

Hallo zusammen,

ich versuche mich momentan am CAN-Bus.
konkret geht es mir um den Identifier und die Datenbytes.
Ich möchte die Bewässerung und Beleuchtung unseres Gartens 
automatisieren und habe mir dazu folgendes überlegt:

- einheitliches Protokoll
- einfach erweiterbar
- CAN-Knoten sollen günstig sein (Knoten mit Atmega8 und MPC2515 
funktioniert bereits)

Ich benötige folgende Grundtypen an Nachrichten:
- Übertragen von Systemeinstellungen (z.B Uhrzeit, Messintervall)
- Rückmeldungen von Knoten über Zustände der Aktoren und Sensoren
- Befehle für Sensoren (z.B. Messungen) und Aktoren (z.B. Licht)
- Heartbeats

Ich möchte gern den 11-stelligen Identifier verwenden und hätte das so 
aufgeteilt:

Identifier:
Bit 10 - 7 Grundtyp der Nachricht
 - 0x1 ist Einstellen System
 - 0x2 ist Rückmeldung/Ergebnisse
 - 0x3 ist Befehl
 - 0x8 ist Heartbeat

Bit 6 - 0 Sende/EmpfängerAdresse des Knotens (Abhängig ob Befehl oder 
Rückmeldung)


Datenbyte 1
 - Bit 7
   0 = Sensor bzw Taster
   1 = Aktor z.B Ventil, Pumpe, Relais
 - Bit 6 - 0 Adresse des Sensors/bzw. Aktors

Datenbyte 2
 - Zustand (Ein/Aus)
 - Messwerte

Szenario 1:
Knoten 3 misst Temperatur mit Sensor 2 und diese soll im EEProm des 
Knoten 1 gespeichert werden.

Knoten 3 schickt folgende Daten auf den Bus:
Identifier: 010 0000 0011 (Rückmeldung, Sendeadresse)
Datenbyte 1: 0 000 0010 ( Bit 7 = Sensor, Sensoradresse ist 2)
Datenbyte 2: messdaten

Diese werden vom Knoten 1 nun empfangen und können eindeutig zugeordnet 
werden.

Senario 2:
An Knoten 2 wird der Taster betätigt darauf hin soll Lampe 1 an Knoten 1 
angeschalten werden.
Identifier 0011 0000 0001 (da jetzt Befehl ist Bit 6-0 der Empfänger)
Datenbyte 1: 1 000 0001 (Aktor, Nr 1)
Datenbyte 2: 0000 0001 (Zustand Ein)

Knoten 1 schickt jetzt folgende Meldung:
Identifier 0010 0000 0001 (da Rückmeldung ist Bit 6-0 jetzt 
Sendeadresse)
Datenbyte 1: 1 000 0001 (Aktor, Nr 1)
Datenbyte 2: 0000 0001 (Zustand Ein)

Wie findet ihr das Konzept? Hättet ihr Vorschläge zur Verbesserung?

Danke Euch :-)

von Markus (Gast)


Lesenswert?

> Hättet ihr Vorschläge zur Verbesserung?

An diesen Standard anlehnen:

CANopen.
. http://de.wikipedia.org/wiki/CANopen
. http://www.can-cia.org/

von Matthias K. (gidarrnmatze)


Lesenswert?

Nun ja vielen Dank für den Tipp.
Ich hab mir das schon angesehen, nur verstehe ich da leider Bahnhof.
Weiß leider garnicht wie ich da herangehen soll....
Meines Erachtens ist canopen auch zu oversized für meinen Zweck.

von Alex (Gast)


Lesenswert?


von maveric00 (Gast)


Lesenswert?

Hallo,

na, dann schmeiß ich doch auch noch 'mal meinen Hut in den Ring:

https://github.com/maveric00/HomeCANtrol

Benutzt zwar einen extended Identifier (um die Adressierungsart von KNX 
besser annähern zu können), die paar Bits machen aber keinen 
Unterschied, was die Bustlast angeht.

Ist auch alles vorhanden, was man als Basis so benötigt: Sensor-Knoten 
(passend für UP-Dosen), Relais-Knoten (für Hutschiene), 
LED-Treiber-Knoten, CAN-Ethernet-Gateway (naja, kann schon etwas mehr: 
WLAN, 2*Ethernet, 2*CAN, RS485, RS232; Linux-Betriebssystem, 2TE 
Hutschienengehäuse, ~2 Watt Stromaufnahme). Software für alle Elemente 
im Quelltext, inkl CAN-Gateway und einer Controller-Software ink. 
Web-Server.

Einfach auch mal in der Wiki nachsehen, da habe ich mein Protokoll 
beschrieben.

Schöne Grüße,
Martin

von Matthias K. (gidarrnmatze)


Lesenswert?

Hallo zusammen,
vielen Dank für Eure Tipps und Links.

ich bin auf diesem Gebiet noch absoluter Newbie.

Die wichtigste Motivation bei diesem Projekt ist auf jeden Fall der 
Lerneffekt.
z.B. wie entwickelt man das System. Wie Abstrahiert man die Modelle.
und wie wird es dann konkretisiert.

Also der Faktor Zeit ist erstmal ausgeklammert. :-)

Ich habe mir das Can @ Home Projekt eingesehen und wenn ich richtig 
verstanden habe, gibt einmal eine Ereignisgesteuerte Kommunikation 
(Broadcast z.B Thermometer oder Lampe ist an) und einmal eine 
Zielgerichtete (z.B Taster soll Lampe xy anschalten).

Dann wurden verschiedene Botschaftstypen definiert: z.B.
DDO Read, DDO write, DOR....

Ich möchte mich erst den DDOs widmen:
Das ganze funktioniert mit der extended ID (29 Bit)
5 Bit Botschaftstyp, 8 Bit Sender, 8 Bit Empfänger, 8 Bit DataObjektType 
= 29 Bit

Wenn ich nun z.B einen Taster konstruiere, werden diesem dann diese 
Zuordnungen fest implementiert? Also das ich diese festen Ziel IDs z.B. 
im EEProm hinterlege und wenn ich den Taster drücke, werden diese auf 
den CAN Bus gelegt?

Vielen Dank Euch :-)
Grüße
Matthias

von Frank K. (fchk)


Lesenswert?

Matthias Kugler schrieb:

> Wenn ich nun z.B einen Taster konstruiere, werden diesem dann diese
> Zuordnungen fest implementiert? Also das ich diese festen Ziel IDs z.B.
> im EEProm hinterlege und wenn ich den Taster drücke, werden diese auf
> den CAN Bus gelegt?

entweder so (dann musst Du den Taster irgendwie konfigurieren), oder per 
Codierschalter, wo Du die Hexadresse der zugehörigen Lampe einstellst. 
Das mit den Codierschaltern ist natürlich einfacher zu implementieren, 
erfordert aber mechanischen Zugriff auf jeden Knoten.

Geschickter ist es, jeden Knoten mit einer einzigartigen Seriennummer 
auszustatten, wo man dann sagen kann:
<Konfiguriere> <SN=0000124567b4ee> <Start>
<Konfiguriere> <ID=63>
<Konfiguriere> <Ende>

Wenn Du es einfach haben willst: DS2401 Silicon Serial Number. Jeder 
Chip hat seine eigene Seriennummer.
PS: Wenn Du es noch einfacher haben willst: PIC18F26K80. Enthält eine 
deutlich verbesserte Version des MCP2515 plus einen 8 Bit Prozessor und 
ist platzsparender und billiger als Mega8 plus separatem MCP2515.

fchk

von Helmut H. (der_andere)


Lesenswert?

Stimme Frank uneingeschränkt zu, warum so kompliziert, ein PIC, der CAN 
kann, ein 18B20 als Temperaturfühler kann sowieso nicht schaden und der 
hat eine einzigartige Seriennummer.

Geht alles auf eine einseitige Platine, passt in die normalen 
Schalterdosen.

Was Martin, CAN@home, hcan usw geschaffen hat, will ich nicht kaputt 
reden, Respekt.

von Matthias K. (gidarrnmatze)


Lesenswert?

Vielen Dank für Eure Antwort.

Mit PIC's habe ich noch nichts gemacht, aber es gibt immer ein erstes 
Mal. :-)
ich kuck mir den mal an.

Danke für den Tip mit dem DS2401...was es nicht alles gibt :-)

Das verstehe ich nicht:
><Konfiguriere> <SN=0000124567b4ee> <Start>
><Konfiguriere> <ID=63>
><Konfiguriere> <Ende>

Die SN wäre dann Ziel? Dies würde aber doch bedeuten, ich hätte nur 
immer einen Festen Adressaten pro Nachricht...

Eine Seriennr. könnte ich dich auch Softwareseitig implementieren, dann 
muss ich halt schauen, das die eindeutig ist oder?

von Frank K. (fchk)


Lesenswert?

Bei CAN ist es so, dass jeder Knoten alles hört und selber ausfiltert, 
was ihn interessiert. Jetzt definierst Du, dass jeder Knoten auf die ihm 
zugewiesene ID und auf eine Broadcast-ID (z.B. 0) hört. Damit kannst Du 
jeden Knoten adressieren, egal ob er eine ID hat oder nicht.

Du schickst eine Broadcast-Message mit dem Befehl "Konfigurationsmodus 
an" und der eineindeutigen Seriennummer ins Netz. Damit sollte nur der 
passende Knoten in den Konfigurationsmodus wechseln, alle anderen 
sollten ihn verlassen. Dann schickst Du Deine Konfigurationsdaten per 
Broadcast und zum Schluss "Konfigurationsmodus aus".

So die Idee.

Genauso könntest Du Deine Geräte am Bus ermitteln. Broadcast 
"Identifikation senden", und dann sollten alle Geräte sich mit ihrer 
Seriennummer melden.

Eine eineindeutige Seriennummer kannst Du auch in die vorletzte Page des 
Flashs (die letzte enthält die Config Words beim PIC) schreiben. Dann 
musst Du aber Buch führen, und daran denken, dass das Flash beim 
Neuprogrammieren komplett gelöscht wird. Eine Silicon Serial Number wäre 
da eine Lösung. Gibts auch mit EEPROM- oder OTP-Speicher. Es gibt von 
Microchip auch SPI-EEPROMs mit vorprogrammierter MAC-Adresse - da musst 
Du aufpassen, dass Du die nicht versehentlich löscht. Die Onewire-Dinger 
sind in dieser Hinsicht idiotensicher.

fchk

von Juergen H. (harms)


Lesenswert?

Ich habe eben und endlich eine Beschreibung meines schon lange laufenden 
Projektes (Haus- und Gartensteuerung mit einem Can Bus) halbwegs fertig 
bekommen - auf englisch, aber mit vielen Bildern - das wesentliche 
sollte mit rudimentaeren Englisch Kenntnissen erraten werden koennen. 
Das Dokument liegt auf

http://cui.unige.ch/~harms/CanSite/CanSite.html

Die Beschreibung in dem Dokument ist im wesentlichen als Anregung 
gedacht fuer jemanden, der auch so etwas machen moechte - Anregung was 
man machen kann und wie man es machen kann.

Juergen

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.