Ви обов'язково захочете вибрати стандартний мережевий шар. Я бачив деякі випадки, коли люди скачували свій власний, і часто протокол є неефективним, і врешті-решт це марна трата часу. Перевірений мережевий рівень забезпечує основну функціональність для вирішення більшості проблем, з якими ви, швидше за все, зіткнетесь у мережі із вбудованим пристроєм, і це заощадить дорогоцінний час та гроші.
Я знайомий з CANopen, тому я докладу трохи пояснень тут, і це може допомогти вам вирішити, чи це шлях ви хочете. Якщо це не відповідає тому, що вам потрібно зробити, я би роздивився щось інше.
CANopen дуже орієнтований на дані. Всі підлеглі вузли CANopen (речі, якими ви керуєте з головного вузла, наприклад, датчики або драйвери двигуна) надають словник, який містить усі дані про конфігурацію, управління та збирання даних, які потрібно прочитати / записати, щоб виконати свою роботу. Потім ви можете читати / записувати ці об'єкти окремо за допомогою механізму SDO (об'єкт службових даних) або періодично читати / записувати ці об'єкти у часовій передачі повідомлень CAN через механізм PDO (об'єкт даних виробника). Запуск, вимкнення та скидання, а також виявлення несправності серця / вузла / виявлення несправностей у сервісі надаються службами NMT, а також службою присвоєння ідентифікатора вузла (якщо ви бажаєте ним скористатися). Щоб реалізувати пристрій за допомогою вбудованої бібліотеки CANOpen, ви в основному налаштовуєте об’єктний словник, налаштовуєте PDO періодично надсилати / отримувати оновлення даних, і написати код користувача, який поводиться на основі цих даних. Є інші речі, які CANopen надає, але це основна частина цього. Прочитайте цю книгу для отримання додаткової інформації.