Hogyan dönti el egy CAN Bus vezérlő az üzenetazonosító alapján, hogy az adott üzenet hozzá tartozik? Olyan, mintha a fogadó már tudná, hogy ha az azonosító tegyük fel 5-ös értékkel, akkor nekem az. És beprogramozzuk a vevőt, hogy jelezze, hogy az 5-ös érték érdekelje?
Hogyan működik a CAN Bus címzés?
Válaszok:
A CAN csomópontban lévő szoftvernek el kell döntenie, hogy milyen üzenetazonosítók iránt érdeklődik, a hálózati specifikáció alapján, amely általában valamilyen dokumentum vagy más elektronikus ábrázolás arról, hogy mely üzenetek milyen információkat tartalmaznak. Ha olyan üzenet érkezik, amely érdektelen, egyszerűen nem dolgozza fel, és a szoftver visszatér ahhoz, amit közvetlenül az üzenet megérkezése előtt csinált (feltéve, hogy megszakításvezérelt CAN-kezelés).
Egyes CAN vezérlők (azaz a chip azon része, amely a CAN protokoll átvitelét és vételét végzi) rendelkezik üzenetszűréssel, ami azt jelenti, hogy az érdektelen üzenetek eldobhatók, mielőtt elérnék a szoftvert. Más vezérlők üzenetszűréssel rendelkeznek, amely beállítható úgy, hogy csak egyetlen üzenetazonosítót fogadjon el egy adott "üzenetdobozban", és ezek beállíthatók úgy, hogy elfogadják az Önt érdeklő üzeneteket. A többi üzenetet ismét eldobják. Egyes vezérlők szűrőkkel és üzenetdobozokkal is rendelkeznek.
A CAN protokoll szintjén a CAN hálózat minden csomópontja egyenlő, és döntést hoz arról, hogy feldolgozza-e az üzenetet vagy sem. A "CAN vezérlő" egy magasabb szintű koncepció; ennek is meg kell vizsgálnia az üzenetazonosítót, mint bármely más csomópontnak.
Vegye figyelembe, hogy egy üzenet „feldolgozása” eltér a CAN protokoll üzenetellenőrzésétől és nyugtázásától. Minden csomópont részt vesz a feldolgozásban, kivéve, ha „csak hallgat” módban van.
Frissítés:
Hogyan dönti el, hogy melyik üzenetet dolgozza fel, az attól függ, hogy mit próbál tenni, és a CAN-on keresztül használt magasabb szintű protokolltól függ. Elvileg maszkolja a releváns azonosító biteket, majd teszteli őket, hogy megtudja, fel kell-e dolgozni az üzenetet.
Például ha az összes 5-ös (bináris 0101-es) üzenetet szeretné feldolgozni alacsony sorrendben négy bitben, akkor a maszk 15 (bináris 1111), bináris és ezt a kapott üzenetazonosítóval, majd az eredményt összehasonlítja öttel. .
Például:
(msg_id & 15) == 5
a teszt kódolásának egyik módja. Az Ön számára fontos bitek és a megvalósítás részletei sok más tényezőtől is függnek.
Kifejezetten a PDU1 (Protocol Data Unit) üzeneteknél a célcím van megadva (3. bájt). Ha egy eszköz nem neki címzett üzenetet kap, egyszerűen figyelmen kívül hagyhatja azt. A címeket különféle szabványok határozzák meg, vagy a gyártó ad hoc módon rendelheti hozzá őket.
Általános esetben a CAN-ID (0-4 bájtok) minden részletet tartalmaz arról, hogy milyen üzenetről van szó, és a készülékek bizonyos mezőket megvizsgálva eldönthetik, érdekelnek-e az üzenettel. Például a sebességváltó-vezérlő valószínűleg nem törődik az akkumulátor állapotüzeneteivel, sem az üzemanyagszint-jelzővel, hogy mely ajtók vannak zárva.