Kihagyás

CANBUS protokoll

Ez a dokumentum a Klipper által a CAN-buszon keresztül történő kommunikációhoz használt protokollt írja le. A Klipper CAN-busszal való konfigurálásával kapcsolatos információkért lásd a című dokumentumot.

Mikrokontroller azonosító hozzárendelése

A Klipper csak a CAN 2.0A szabványos méretű CAN-busz csomagokat használja, amelyek 8 adatbájtra és egy 11 bites CAN-busz azonosítóra korlátozódnak. A hatékony kommunikáció támogatása érdekében minden mikrokontrollerhez futáskor egy egyedi, 1 bájtos CAN-busz nodeid (canbus_nodeid) van rendelve az általános Klipper parancs és válaszforgalomhoz. A gazdagépről a mikrokontroller felé irányuló Klipper-parancsüzenetek a canbus_nodeid * 2 + 256 CAN-busz azonosítót használják, míg a mikrokontrollerről a gazdagép felé irányuló Klipper-válaszüzenetek a canbus_nodeid * 2 + 256 + 1 azonosítót.

Minden mikrokontroller rendelkezik egy gyárilag hozzárendelt egyedi chipazonosítóval, amelyet az azonosító hozzárendelése során használnak. Ez az azonosító meghaladhatja egy CAN csomag hosszát, ezért egy hash függvényt használunk arra, hogy a gyári azonosítóból egy egyedi 6 bájtos azonosítót (canbus_uuid) generáljunk.

Rendszergazdai üzenetek

Az rendszergazdai üzeneteket az azonosító hozzárendeléséhez használják. A gazdagéptől a mikrokontrollerhez küldött admin üzenetek a CAN-buszon a 0x3f0, a mikrokontrollerről a gazdagéphez küldött üzenetek pedig a CAN-buszon a 0x3f1 azonosítót használják. Minden mikrovezérlő a 0x3f0 azonosítón fogadja az üzeneteket; ez az azonosító egy "broadcast cím" -nek tekinthető.

CMD_QUERY_UNASSIGNED üzenet

Ez a parancs lekérdezi az összes olyan mikrovezérlőt, amely még nem kapott canbus_nodeid azonosítót. A nem hozzárendelt mikrovezérlők RESP_NEED_NODEID válaszüzenettel válaszolnak.

A CMD_QUERY_UNASSIGNED üzenet formátuma: <1-byte message_id = 0x00>

CMD_SET_KLIPPER_NODEID üzenet

Ez a parancs hozzárendel egy canbus_nodeid mikrokontrollert egy adott canbus_uuid mikrokontrollerhez.

A CMD_SET_KLIPPER_NODEID üzenet formátuma: <1-byte message_id = 0x01><6-byte canbus_uuid><1-byte canbus_nodeid>.

RESP_NEED_NODEID üzenet

A RESP_NEED_NODEID üzenet formátuma: <1-byte message_id = 0x20><6-byte canbus_uuid><1-byte set_klipper_nodeid = 0x01>.

Adatcsomagok

A CMD_SET_KLIPPER_NODEID paranccsal nodeid-től kapott mikrokontroller adatcsomagokat küldhet és fogadhat.

A csomópontot használó üzenetek csomagadatai (canbus_nodeid * 2 + 256) egyszerűen egy pufferbe kerülnek, és amikor egy teljes mcu protokoll üzenet található, annak tartalmát elemezi és feldolgozza. Az adatokat bájtfolyamként kezeli. Nem követelmény, hogy a Klipper üzenetblokk kezdete egyezzen a CAN-buszcsomag kezdetével.

Hasonlóképpen, az MCU protokoll üzenetválaszok a mikrokontrollerről a gazdagéphez úgy kerülnek elküldésre, hogy az üzenetadatokat egy vagy több csomagba másolják a csomópontnak a CAN-buszon való átvitelére vonatkozó azonosítójával (canbus_nodeid * 2 + 256 + 1).

Back to top