Выбор сетевого уровня по шине CAN

10

Я планирую использовать шину CAN в приложениях промышленной автоматизации, но мне трудно решить, как реализовать сетевой уровень. Есть ли у кого-нибудь здесь какие-либо рекомендации по использованию протокола более высокого уровня через CAN, в котором содержатся рекомендации о том, как назначать идентификаторы сообщений и как форматировать пакеты данных? Должен ли я разработать свой собственный сетевой уровень или внедрить существующий стандарт, такой как CANopen?

mjh2007
источник

Ответы:

7

Вы определенно захотите выбрать стандартный сетевой уровень. Я видел несколько случаев, когда люди катались самостоятельно, и часто протокол неэффективен, и в конце концов это пустая трата времени. Проверенный сетевой уровень обеспечивает базовые функциональные возможности для решения большинства проблем, с которыми вы, вероятно, столкнетесь при работе в сети со встроенным устройством, что в конечном итоге сэкономит вам драгоценное время и деньги.

У меня есть знакомство с CANopen, поэтому я приведу здесь небольшое объяснение, и оно может помочь вам решить, хотите ли вы идти по этому пути. Если это не соответствует тому, что вам нужно сделать, я бы посмотрел на что-то еще.

CANopen очень ориентирован на данные. Все подчиненные узлы CANopen (вещи, которыми вы управляете с главного узла, например датчики или драйверы двигателей) предоставляют словарь, который содержит все данные конфигурации, управления и сбора данных, которые вам нужно прочитать / записать, чтобы выполнить свою работу. Затем вы можете читать / записывать эти объекты по отдельности через механизм SDO (объект данных службы) или периодически читать / записывать эти объекты при передаче сообщений CAN по времени через механизм PDO (объект данных производителя). Запуск, завершение и сброс, а также обнаружение сердцебиения / сбоя узла предоставляются службами NMT, а также службой назначения идентификатора узла (если вы хотите его использовать). Чтобы реализовать устройство с использованием встроенной библиотеки CANOpen, вы в основном настраиваете словарь объектов, настраиваете PDO для периодической отправки / получения обновлений данных, и написать код пользователя, который ведет себя на основе этих записей данных. Есть и другие вещи, которые предоставляет CANopen, но это основная часть. Прочитайте эту книгу для получения дополнительной информации.

Дж. Полфер
источник
В книге рассказывается о реализации CANopen под названием MicroCANopen. Какую реализацию CANopen вы используете?
mjh2007
1
@ mjh2007 - Мы свернули наш собственный, так как его нужно было использовать в сочетании с другим протоколом.
Дж. Полфер
"CANOpen" -> "CANopen"
Питер Мортенсен
7

Я пишу код для доступа к шине CAN на автомобилях GM, которая использует в основном собственный сетевой уровень. Вы смотрели в OpenCAN? Я бы выбрал открытый стандарт, такой как CANOpen или даже OpenCAN. Это действительно зависит от уровня управления и гибкости, которые вы хотите в вашей среде автоматизации.

Брэд Хейн
источник
7
есть OpenCAN и CANOpen? aiggh! ужасное название.
Джейсон С
1
@ Джейсон, я обвиняю Microsoft.
Кортук
5

Там были отличные ответы. Я не знаю, какой микро вы используете, но здесь есть ссылки на некоторую информацию от микрочипа.

Библиотека J1939

DeviceNet ™ Group 2 Slave Firmware для PIC18 с CAN

CANopen

Каждый из них имеет код и базовую таблицу данных, позволяющую вам узнать, что вам нужно для их реализации.

Kortuk
источник
1
На самом деле я использую Microchip, так что это очень полезно. Спасибо!
mjh2007
1
Это все для pic18. Кажется, с CANopen у вас есть мастер, который изменяет настройки других, для большинства из того, что включает в себя мое использование canbus, это идеально подходит.
Кортук
Вы используете библиотеку Microchip для реализации CANopen?
mjh2007
1
В процессе его реализации, это медленный процесс, потому что он требует от многих разных людей поручить мне внести изменения в систему. Я сообщу вам, когда это будет реализовано, если это поможет.
Кортук
1
@ mjh2007, я перестал работать на процессор, и студенты, принявшие решение, решили, как и многие, раньше не использовать предыдущее оборудование и не покупать то, что им было более удобно. Опять же, нет прогресса в этом проекте профессора, но это происходит, когда профессор не знает, что происходит, и просто позволяет людям менять все раз в год.
Кортук