CANopenNode |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CANopenNode это бесплатный стек CANopen с открытым исходным кодом [1]. Он написан на ANSI-C с применением объектно-ориентированного программирования. Работает на различных микроконтроллерах (в том числе и под RTOS), и как отдельное приложение. В стеке также имеется функциональность master-устройств. Реализацию функционала CANopen master для Linux см. в [2]. Все незнакомые термины и сокращения см. в [3]. Переменные - для обмена (communication), устройства (device), пользовательские (custom) - организованы в CANopen OD (словарь объектов), и он доступен в коде C и из сети CAN. Реализованы функции: • Простой NMT master. [Как использовать] Сама по себе библиотека CANopenNode не имеет полный рабочий код для всех микроконтроллеров. Это только библиотека со стеком и драйверами для нескольких различных микроконтроллеров. Здесь есть пример, который должен компилироваться на любой системе, где есть драйвер шаблона (drvTemplate), который в действительности не имеет доступа к аппаратуре CAN. Таким образом, библиотека CANopenNode должна использоваться как дополнительный подмодуль в проекте со специфической реализацией поддержки аппаратуры CAN и специфическим приложением. Документация, поддержка. Код документирован в комментариях файлов заголовков. Запуск doxygen в базовой папке проекта сгенерирует полный комплект html-документации. Просто откройте CANopenNode/doc/html/index.html в браузере. Сообщайте о багах и проблемах в трекере github.com/CANopenNode. Старая и новая группа обсуждения находится на Sourceforge. Некоторые готовые реализации CANopenNode на реальной аппаратуре см. в таблице ниже. CANopenSocket это отличная реализация для устройств на базе Linux. Она включает интерфейс командной строки для доступа master к сети CANopen. Также там есть информация, полезная для быстрого старта. Посильная помощь приветствуется. Самый лучший способ предоставить Ваш код - это сделать форк проекта, модифицировать его и отправить pull request. На диаграмме ниже показана типичная реализация узла сети с применением CANopenNode. [Файлы и папки]
[Поддержка микроконтроллеров]
Другие известные реализации с исходным кодом: • AD ADSP-CM408 контролер сигналов (mixed signal controller), предоставленный Analog devices, Inc. (декабрь 2014), http://sourceforge.net/projects/canopennode-for-adsp-cm408f/ • Больше не поддерживаемые реализации ранних версий CANopenNode: Microchip PIC18F • Реализации некоторых других микроконтроллеров могут войти в состав CANopenNode. CANopenNode распространяется под защитой GNU General Public License версии 2 с исключением classpath. CANopenNode является свободным и открытым программным обеспечением: Вы можете распространять его и/или модифицировать, придерживаясь требований GNU General Public License, как это опубликовано организацией Free Software Foundation, либо версии 2 лицензии, либо (по Вашему выбору) более свежей версии лицензии. Эта программа распространяется в надежде, что она будет полезной, но без каких-либо гарантий, что она будет успешно продаваться или подойдет к какому-то конкретному использованию. За подробностями обращайтесь к тексту GNU General Public License. Вы должны получить копию GNU General Public License вместе с этой программой. Если нет, то см. http://www.gnu.org/licenses/. [Исключение из GPL для линковки] CANopenNode можно просто использовать в коммерческих встраиваемых проектах. Добавлено следующее разъяснение и специальное исключение линковки для правил распространения CANopenNode: Линковка этой библиотеки статически или динамически с другими модулями образует комбинированный проект на базе этой библиотеки. Таким образом, правила и условия GNU General Public License распространяются на всю комбинацию кода проекта. Как специальное исключение правообладатели этой библиотеки дают Вам разрешение линковать эту библиотеку с независимыми модулями, чтобы получить двоичный исполняемый код, независимо от правил лицензии этих отдельных других модулей, и разрешение для копирования и распространения результирующего исполняемого кода под выбранными Вами правилами лицензирования, при условии, что соблюдаются правила распространения для каждого линкованного независимого модуля. "Независимым" считается модуль, который не был построен на основе этой библиотеки. Если Вы изменили эту библиотеку, то Вы можете распространить это исключение на Вашу версию библиотеки, но Вы не обязаны так поступать. Если Вы не хотите этого делать, то удалите это правило исключения из Вашей версии. [Ссылки] 1. CANopenNode site:github.com. |