Подтвердить что ты не робот

Как запрограммировать простой слой CANopen

У нас есть проект робота, в котором моторные контроллеры используют CANopen для связи. Мне нужно связаться с этими контроллерами мотора, используя главный микроконтроллер. Проблема в том, что мне нужно разработать слой CANopen в этом микроконтроллере, но я знаю только, как отправлять и получать на низком уровне (CAN).

Я мало знаю о CANopen (PDO, SDO, Heartbeat, объектном словаре и т.д.). Я попытался прочитать спецификации CiA, но это было очень сложно. Я был бы признателен, если бы кто-то мог указать мне в правильном направлении или дать мне хороший учебник для программирования простого слоя CANopen.

4b9b3361

Ответ 1

Поскольку это, похоже, является предметом общего интереса - я согласен с тем, что понимание полных оригинальных спецификаций может быть несколько болезненным опытом. Итак, вот предложение "завести свой диск", а не "реализовать все это":

  • Проверьте, могут ли ваши диски CANopen работать с помощью стандартных объектов CiA 402, и по соображениям производительности было бы совершенно НЕ МОЖЕТЕ настраивать и использовать PDO, и вам действительно не нужно биение сердца, a.s.o. Обычно он переключает машину состояния диска (объект 6040h, управляющее слово), устанавливает режим работы (объект 6060h) и устанавливает дополнительные параметры, такие как "скорость перемещения профиля".

  • Затем реализуйте только ускоренные передачи SDO. (См. http://en.wikipedia.org/wiki/CANopen.) Загрузка SDO предназначена для записи/изменения объекта на вашем диске. Загрузка SDO предназначена для чтения объекта.

  • Я предлагаю взять программное обеспечение для ПК, которое может читать и записывать SDO и иметь монитор CAN-шины. (Наш Kickdrive Zero может сделать это, но на самом деле любой другой инструмент для ПК для CANopen должен работать.) В некоторых примерах читаем и записываем типы данных и объекты, которые вам нужны, Посмотрите, как это преобразуется в рамки на уровне CAN. Для базовых целочисленных типов данных всегда требуется только один кадр для запроса, один для ответа.

  • Теперь создайте упрощенную стек протоколов на вашем микроконтроллере, который может отправлять запросы загрузки/загрузки SDO и обрабатывать ответы.

Отказ от ответственности - вышеупомянутое не близко даже к "внедрению CANopen" или "поддержке CANopen" или даже "совместимому с CANopen". Это о том, как "заставить ваш диск двигаться как можно дальше и без стороннего кода". Иногда это правильно.

Ответ 2

Мы реализовали наш слой CANopen с нуля для встроенных устройств ARM и Windows PC. Это не невозможно, в отличие от предыдущих ответов. Если вам нужна только базовая функциональность CANopen и вы можете быстро изучить концепции протокола, вы можете быстро и быстро выполнить все задачи.

Вам нужно будет прочитать спецификацию CiA, нет способа избежать этого, но сначала это может оказаться несколько подавляющим. Я рекомендую вам начать читать "" Встроенная сеть с CAN и CANopen" от Pfeiffer, Ayre и Keydel. Он прекрасно объясняет основные понятия, что в свою очередь помогает лучше понять спецификацию.

Ответ 3

Попробуйте использовать CanFestival stack - он бесплатный, и он легко переносится с ОС, таких как Linux, на голые машины, у которых есть только таймер.

4-6 месяцев кажутся немного растянутыми - вам может понадобиться только мастер или подчиненный, и мы выполнили только мастер-реализацию на С++ через 3-4 недели.

Ответ 4

К сожалению, нет простого слоя CANopen. Чтобы поддерживать CANopen, вам нужно реализовать все это.

Я предлагаю вам приобрести библиотеку CANopen от стороннего поставщика. Обычно они не из дешевых, но учитывая время, когда вам нужно будет это реализовать, это будет дешевле, чем ваша зарплата за это время.

Мы использовали библиотеку PORT GmbH ANSI-C CANopen Library, которая умеренно оценена и имеет очень мало ошибок, по сравнению с другими библиотеки, которые мы пробовали.

Ответ 5

Мы используем стек MicroCANopen с надстройкой менеджера, отсюда: http://www.canopenstore.com/pip/microcanopen.html

Это относительно дешево по сравнению с другими стеками, хотя мы используем его на всех узлах нашей сети, поэтому я не могу предложить отзыв о том, как он работает с другими устройствами, совместимыми с CANOpen.

Ответ 6

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

Ответ 7

Другим коммерческим решением, с которым я работал, является программное обеспечение IXXAT CANopen. Они предлагают порты для разных платформ.

Как уже говорилось ранее: вы не получаете его бесплатно и не дешево. Но что такое несколько тысяч долларов США по сравнению с несколькими месяцами времени разработки?