Вы определенно захотите выбрать стандартный сетевой уровень. Я видел несколько случаев, когда люди катались самостоятельно, и часто протокол неэффективен, и в конце концов это пустая трата времени. Проверенный сетевой уровень обеспечивает базовые функциональные возможности для решения большинства проблем, с которыми вы, вероятно, столкнетесь при работе в сети со встроенным устройством, что в конечном итоге сэкономит вам драгоценное время и деньги.
У меня есть знакомство с CANopen, поэтому я приведу здесь небольшое объяснение, и оно может помочь вам решить, хотите ли вы идти по этому пути. Если это не соответствует тому, что вам нужно сделать, я бы посмотрел на что-то еще.
CANopen очень ориентирован на данные. Все подчиненные узлы CANopen (вещи, которыми вы управляете с главного узла, например датчики или драйверы двигателей) предоставляют словарь, который содержит все данные конфигурации, управления и сбора данных, которые вам нужно прочитать / записать, чтобы выполнить свою работу. Затем вы можете читать / записывать эти объекты по отдельности через механизм SDO (объект данных службы) или периодически читать / записывать эти объекты при передаче сообщений CAN по времени через механизм PDO (объект данных производителя). Запуск, завершение и сброс, а также обнаружение сердцебиения / сбоя узла предоставляются службами NMT, а также службой назначения идентификатора узла (если вы хотите его использовать). Чтобы реализовать устройство с использованием встроенной библиотеки CANOpen, вы в основном настраиваете словарь объектов, настраиваете PDO для периодической отправки / получения обновлений данных, и написать код пользователя, который ведет себя на основе этих записей данных. Есть и другие вещи, которые предоставляет CANopen, но это основная часть. Прочитайте эту книгу для получения дополнительной информации.
Я пишу код для доступа к шине CAN на автомобилях GM, которая использует в основном собственный сетевой уровень. Вы смотрели в OpenCAN? Я бы выбрал открытый стандарт, такой как CANOpen или даже OpenCAN. Это действительно зависит от уровня управления и гибкости, которые вы хотите в вашей среде автоматизации.
источник
Там были отличные ответы. Я не знаю, какой микро вы используете, но здесь есть ссылки на некоторую информацию от микрочипа.
Библиотека J1939
DeviceNet ™ Group 2 Slave Firmware для PIC18 с CAN
CANopen
Каждый из них имеет код и базовую таблицу данных, позволяющую вам узнать, что вам нужно для их реализации.
источник