Что такое словарь объектов в CANOpen? - PullRequest
0 голосов
/ 03 ноября 2018

Я буду использовать CANOpen в Linux. В ядре у linux есть socketcan, и у меня есть несколько вопросов для дальнейшей реализации.

1-) Как выглядит словарь объектов, это файл заголовка или файл EDS?

2-) Нужно ли использовать словарь объектов для конфигураций pdo и sdo?

3-) Должен ли я реализовать свою пользовательскую библиотеку canopen, которая реализует только некоторые протоколы, или использовать библиотеку, подобную canfestival, которая реализует почти все протоколы и словарь объектов?

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

1) Словарь объектов определяет набор объектов, в которых данные могут храниться на узле CANopen. Объекты в словаре объектов могут считываться и записываться с шины CAN с использованием протокола SDO, предоставляя индекс объекта и субиндекс. Они также могут быть прочитаны и записаны из локального приложения на узле CANopen. Можно сказать, что словарь объектов формирует API для доступа к узлу CANopen из других узлов CANopen.

Файл EDS содержит список всех объектов, присутствующих в конкретной модели узла CANopen, включая тип данных, значение по умолчанию, минимальное и максимальное значения и некоторые атрибуты. Это помогает инструментам связываться с узлом CANopen.

2) Конфигурирование выполняется по шине CAN с использованием протокола SDO для записи в словарь объектов узла CANopen.

3) Если вы разрабатываете коммерческий продукт, вы, вероятно, захотите использовать коммерческий стек CANopen для поддержки полного протокола. (Одним из примеров является Kvaser CANopen Stack , который мы поддерживаем, но есть из множества других на выбор)

Если ваша политика лицензирования проектов это позволяет, вы можете использовать один из стеков CANopen с открытым исходным кодом. Мне приходят в голову CANFestival и CANopenNode, но есть и другие.

Но если вам просто нужен минимальный функционал, вы также можете написать минимальный код из спецификации. Конечный автомат NMT, ускоренная передача SDO только для чтения, словарь объектов с несколькими обязательными объектами и жестко закодированными PDO могут даже дать вам стандартный минималистичный узел, соответствующий стандартам.

Следующие объекты являются обязательными в CiA 301

  • 0x1000 Тип устройства (только чтение)
  • 0x1001 Регистр ошибок (только чтение)
  • 0x1017 Время сердцебиения производителя (постоянное)
  • 0x1018 Идентификационный объект (только для чтения)
  • Кроме того, вам нужны параметры связи и параметры отображения для каждый PDO, но они могут быть постоянными.

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

Однажды я сделал это для прототипа, просто для фиксированного PDO и пульса, затем переключился на коммерческий стек для конечного продукта.

0 голосов
/ 20 ноября 2018

Мой опыт использования canopen canfestival:

1) это заголовок и исходный файл

2) да, вы должны Словарь объектов для каждого узла определяет спецификацию sdo и pdo для этого объекта и его переменной и обратный вызов для них, это автоматически выполняется objectdictgen в canfestival

3) некоторые драйверы написаны аналогично serial, tcp, ... но если у вас есть определенный протокол, вы можете написать свой собственный драйвер

...