Forum: Mikrocontroller und Digitale Elektronik AVR CAN Teinehmer gezielt ansprechen


von Marco (Gast)


Lesenswert?

Hallo alle zusammen

Was den CAN-Bus angeht, stehe ich noch ganz ganz weit am Anfang. Ich 
habe noch  einige Verständnisprobleme mit der Abarbeitung von Anfragen. 
Bsp. Bus mit mehreren Knoten , die alle eine Temperatur Messen können. 
Beim I2C war es ja so, da habe ich gesagt "Start-Adresse,lesen - was 
will ich lesen-Stop". Und dann hat ja genau der adressierte Teilnehmer 
seine Info zurückgesendet.

Wie läuft denn das nun beim CAN. Ich möchte jetzt meinetwegen genau vom 
Tempfühler im Badezimmer die Temperatur wissen, und nicht die vom 
Tempfühler im Gewächshaus. Wenn ich jetzt eine Nachricht verschicke "ID 
- lesen" dann hören ja alle mit. Wenn jetzt nur der Tempfühler im 
Badezimmer antworten soll, muss dann die Id der Anfrage nach der 
Temperatur im Bad eine andere sein, als die ID der Anfrage nach der 
Temperatur im Gewächshaus?

Das heißt, brauche ich bei 20 verschiedenen Tempfühlern (rein 
theoretisch ;-)) 20 mal die ID (1=TempS1 , 2=TempS2... usw) oder wie?

Bedeutet das auch, dass mein BUS bzw dessen Teilnehmer zusammen, bei 
11bit ID genau 2048 verschieden Befehle "versteht"?

So, dass wäre das erste Unklare. Nun noch eine zweite Sache ... vorerst 
:-).
Mein Testbus besteht aus 3 Knoten 
(MAX232<->ATmega8<->MCP2515<->PCA82C250) und  die ganzen Teile dafür 
kommen hoffentlich in den nächsten Tagen und dann lege ich los mit 
probieren.
Aber... jetzt kommts :-),im dem Datenblatt des AT90CAN128 (ist mir für 
den Anfang zu umständlich zum Testbordaufbau) bin ich über den Begriff 
"Pages" gestolpert. Was sind denn nun wieder die Pages? Ist das eine 
Ablage, wenn mehrer Datenpakete in schneller Folge kommen? Da würde mir 
die grobe Info erstmal reichen, da meine ersten Gehversuche bestimmt 
keine gewaltigen Datenmengen bewegen werden.

Danke im Voraus
Marco

von Martin (Gast)


Lesenswert?

Bei CAN läuft nichts über Adressen, sondern über Nachrichten IDs.
Du kannst zwei verschiedene Wege gehen:

1) Remote : Dabei Sendet der "Master" an alle - "Ich brauche die 
Nachricht mit der ID xxx". Dies interessiert aber nur einen einen deiner 
Teilnehmer, und der schick darauf hin den Temperaturwert mit der 
Nachrichten ID xxx zurück.

2) Jeder Sensor schickt in regelmäßigen Abständen die Temperatur über 
den CAN-Bus. Jeder Sensor schickt dabei den Wert mit einer 
unterschiedlichen ID. Jeder CAN-Bus Teilnehmer kann das empfangen wenn 
der lust dazu hat. Anhand der ID kann der Empfanger feststellen welche 
Temperatur gemeint ist.

von Marco (Gast)


Lesenswert?

Ah jetzt ja!

Ich habe in der Zwischenzeit noch die CAN Doku auf der seite Kvaser.com 
durchgelesen und bin danke der "Summeries" gut hintergestiegen.

Das heißt für mich, dass ich, wenn ich 10 gleiche Temperatursensoren 
baue, alle mit der selben Software  füttere, ich ihnen per Dipschalter 
oder weiß der Geier wie mitteilen muss, Du bist jetzt der Sensor aus dem 
Bad und Du der Sensor im Gewächshaus und dementsprechend  verpackt der 
eine Sensor seine Temperatur mit der ID X und der andere Sensor seine 
Temperatur mit der ID Y. Liegt nun auf dem Buss die ID Y wissen alle, 
das ist die Temperatur aus dem Gewächshaus.

Super, wieder einen Schritt weiter.

Das bedeutet, wenn ich demnächst in der Firma das geile sech-Achs-System 
von Trinamic vor mir zu liegen habe ( wird erstmal mit der passenden 
Software und Schnittstelle von Trinamic betrieben), kann ich, wenn ich 
weiß, welche ID welche Daten enthält, das ganze auch über einen kleinen 
Atmel steuern.

Vielleicht ergibt sich ja auch noch eine Antwort auf die Geschichte mit 
den Pages.

Falls nicht mehr heute, schönes WE.

von sniper (Gast)


Lesenswert?

Hi,

@Martin:
"Remote : Dabei Sendet der "Master" an alle"


ist etwas mißverständlich ausgedrückt, denke ich.
1. Es gibt keinen Master. CAN ist ein Multimaster Bus, die Chips 
arbitrieren.
2. Es gibt kein "an alle"
3. Ein Knoten muss nicht zwangsläufig per Remote Transmit Request (RTR: 
nur CAN ID keine Daten) zum Senden aufgefordert werden. Das kann auch 
mit beliebigen anderen IDs gemacht werden - die Software hats in der 
Hand.

So wie bereits dargestellt, werden lediglich Nachrichten mit eindeutigen 
IDs versendet. Ob eine Nachricht ein "an alle" (also ein Broadcast) ist, 
hängt davon ab, wie das Bus-Protokoll definiert wurde.

Sinnvoller Weise benutzt man die ID Bits, um Knoten-IDs und Broadcasts
zu codieren.

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.