Claude M. schrieb:
Ich möchte eine LED, die mit dem MCP-Board verbunden ist, über das
CAN-Protokoll steuern.
An das MCP-Board kannst du keine LED anschließen. Da ist nur der Transceiver drauf. An dieses Board musst du noch ein Controller-Board anschließen, nicht nur für die LED, sondern auch für die Implementierung der CAN-Logik. Der Transceiver macht nämlich nur die Umsetzung von analoger Busspannung auf digitale Spannungswerte.
Claude M. schrieb:
Eine CAN-Nachricht hat verschiedene Felder in einer Nachricht wie Start
of Frame, Identifier, Control Field, Data Field, CRC, Acknowledgment und
End of Frame.
Ja ...
Claude M. schrieb:
Jeder Knoten hat einen eindeutigen Identifikator
Nein. Oder vielmehr: Der pure CAN Standard kennt und beschreibt ein solches Konzept nicht. Du kannst jedem deiner Knoten einen solchen Identifikator irgendwie zuweisen. CAN macht da gar nichts.
Claude M. schrieb:
und ein Knoten weiß, ob eine Nachricht für ihn bestimmt ist, indem er
die Nachrichten-ID überprüft
Die meisten Implementierungen des CAN-Protokolls, ob in Hardware oder Software, erlauben es, Filter zu definieren, so dass die Anwendung nur Nachrichten bekommt die diese Filter passieren. Vielfach operieren diese Filter auf dem Identifier-Teil der CAN-Frames.
Du kannst also den Identifier dazu nutzen, eine Empfängeradresse zu kodieren. Das ist aber völlig dir überlassen. Es sei denn natürlich, du möchtest mit den optionalen höheren Protokollschichten wie CANopen kompatibel bleiben.
Dieses Vorgehen hätte allerdings den Nachteil, dass zwei Sendungen an denselben Empfänger denselben Identifier hätten, und dann wird die Arbitrierungslogik von CAN scheitern.
Alternativ könnte der Sender in der ID auch die Art und Quelle der Nachricht kodieren. Und der Empfänger würde die für ihn interessanten Quellen und Arten filtern. Es ist dir überlassen.
LG, Sebastian