|
Реализовать CANOpen на CAN МК Freescale DSP56F805, Разобрался с аппартным CAN, надо накрутить поверх CANOpen |
|
|
|
Aug 6 2009, 07:15
|
Группа: Участник
Сообщений: 14
Регистрация: 3-03-09
Пользователь №: 45 602

|
В этом МК есть аппаратный CAN интерфейс. С ним я разобрался, вот только могу пользоваться им лишь для связи с другим таким же МК. А мне требуется интегрироваться в сетку с протоколом CANOpen. Вопрос: Возможно ли такое выполнить ? И как ? Очень нужны базовые примеры и документы. Сам я пока лопачу документацию. Но без вашего опыта буду долго возиться. Уважаемое сообщество, прошу помощи.
|
|
|
|
|
 |
Ответов
|
Jul 26 2010, 15:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Привет. Если кому интересно. Короче запустил я этот CANfestival на STM32F103. Заняло это дело 2 месяца подходов к компьютеру и чтения документации и аж 2 дня на перелопачивание драйверов на CAN контроллер и таймер. Исходники могу выложить. Аж сам удивился, но буквально при первой компиляции эта штука запустилась и начала генерить heartbit и даже реагировать на NMT команды. На следующий день запустил PDO обмен - тоже работает без проблем. Несмотря на приличную навороченность (стек занял 20кБ места в МК) стек пока выглядит довольно стабильно. Работает все - и SDO и PDO и NMT сервисы (на слэйве). Вчера даже получилость прикрутить к нему запись параметров во FLASH, а-ля EEPROM. Правда не все скопом, а для заданных объектов при записи. 2 Штуки мне очень понравились по сравнению с CanOpenNode. 1. Во-первых тут есть редактор eds файлов (правда хитро устанавливается, но вполне сносно) который позволяет создать профиль своего устройства и затем по этой информации генерирует .с и .h файлы для стека и сам .eds файл. Работает очень не плохо. Созданные файлы просто копируются в проэкт и перекомпилируются, а eds файл скармливается программе - монитору CANopen шины. О ней дальше внизу. 2. Во-вторых CANfestival имеет намного более развитые возможности. Например программа пользователя общается со стеком только через глобальные переменные, которые являются объектами словаря. При приходе нового PDO переменные сами собой обновляются. При изменении переменной программой - нужно только выполнить функцию послыки PDO и CANfestival сам определит, какая переменная в какой PDO пойдет и нужно ли его слать. Даже по таймеру все работает. В общем я доволен пока. Кстати насчет программы. Есть такой сайт: http://www.canwizard.de Там можно скачать одноименную программу. Она хоть и предназначена для лифтов, но достаточна полезна и для простых CANopen сетей. Она позволяет подключаться к CANopen сети, искать узлы, читать eds файлы, генерить NMT и LSS команды, общаться с любыми узлами по SDO протоколу и т.д. Даже софт по сети обновлять может. Правда лог файлы она не ведет. Единственное ограничение, что бесплатная версия может работать толька максимум с тремя узлами. Поддерживает она Vector, Ixxat, Peak адаптеры.
|
|
|
|
|
Aug 2 2010, 08:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(Forger @ Jul 28 2010, 18:25)  Было бы очень интересно взглянуть и сравнить! Дык чего там сравнивать - взял исходники на CANконтроллер и Таймер со всем известной библиотеки FWlib от ST. Все остальное - родное CANfestivalевское. Ладно, исходники дров выложу вечером, так как я еще туда кучу всего приделал, чего в CANfestivale не было - запись и чтение параметров из EEPROM - приделал пример эмуляции от ST. Еще добавил управление светодиодиками по DS303-3. Единственное - обработка Heartbeat в CANfestival не очень реализована - добавил обработчик ошибки по Heartbeatу. Вот что хочется изменить - не нравится мне функция посылки сообщений от ST - в F103 есть всего три буффера, и если они полны, то новое сообщение можно потерять. Я думаю - либо сделать посылку блокируещей - чтобы все ждали пока сообщение отошлется, либо добавить FIFO буфер побольше.
|
|
|
|
|
Aug 2 2010, 08:38
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(syoma @ Aug 2 2010, 12:05)  Вот что хочется изменить - не нравится мне функция посылки сообщений от ST - в F103 есть всего три буффера, и если они полны, то новое сообщение можно потерять. Я думаю - либо сделать посылку блокируещей - чтобы все ждали пока сообщение отошлется, либо добавить FIFO буфер побольше. Я тоже сталкивался с этой проблемой. Решил применением программного FIFO как на передачу и на прием заодно. Ну, а щас сделано у меня по-другому: использование RTOS позволило использовать ее встроенные сервисы для работы очередями сообщений. А обертка вокруг них создана на базе smart pointer (только C++). Теперь не нужно беспокоиться за валидность указателя на очередное сообщение: если хоть кто-то его еще использует, оно лежит в буфере. А как только все, кому нужно было сообщения, "отстали" от него - это сообщение автоматом освобождается из очереди. Работает изумительно! Оптимизатор компилятора прекрасно работает, удаляя, казалось бы, избыток кода.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
Phantom_ Реализовать CANOpen на CAN МК Freescale DSP56F805 Aug 6 2009, 07:15 Седой Цитата(Phantom_ @ Aug 6 2009, 13:15) В эт... Aug 9 2009, 18:06 AlexandrY CANopen так с бодуна не делается.
Помимо стека с р... Aug 9 2009, 19:12 Phantom_ Спасиб за мнение.
На данный момент смотрю в сторон... Aug 12 2009, 08:20 Forger Цитата(Phantom_ @ Aug 12 2009, 12:20) На ... Aug 29 2009, 18:49  syoma Цитата(Forger @ Aug 29 2009, 20:49) Но, г... May 14 2010, 07:19   Forger ЦитатаПоэтому есть пара вопросов.
1. Я так понял ч... May 15 2010, 05:07    syoma Цитата(Forger @ May 15 2010, 07:07) CANop... May 15 2010, 19:24     Forger ЦитатаЯ не имел ввиду со стороны стека, а как обст... May 16 2010, 07:27      garry_ Цитата(Forger @ May 16 2010, 11:27) ...
О... May 17 2010, 12:45       Forger Цитата(garry_ @ May 17 2010, 16:45) А у к... May 17 2010, 17:20 syoma Так все-таки CANopenNode или CANfestival?
Что лучш... Nov 5 2009, 08:12 Serega По мне так CANopenNode будет попроще в реализации ... Nov 9 2009, 07:58 syoma Я имел ввиду, конечно контроллер. Например STM32F.... Nov 9 2009, 20:00 Serega А что такое CANpie? Nov 16 2009, 15:18 syoma Я вот смотрю, что вы с STM32 работаете. Я тоже соб... May 17 2010, 09:13 syoma Спасибо за ответ
Цитата5 тыр. коробка USB-CAN
15 ... May 18 2010, 06:48 Forger ЦитатаАга, значит Вы еще и CANopen модуль к анализ... May 18 2010, 08:53  Marathon Цитата(Forger @ May 18 2010, 12:53)
Цит... May 18 2010, 13:42   Forger ЦитатаДанная "софтина" является бесплатн... May 18 2010, 18:43    Седой Цитата(Forger @ May 19 2010, 00:43) Что ж... May 19 2010, 14:24     garry_ Цитата(Седой @ May 19 2010, 18:24) C чего... May 19 2010, 14:55     syoma Цитата(Седой @ May 19 2010, 16:24) см. ht... May 20 2010, 07:14      garry_ Цитата(syoma @ May 20 2010, 11:14) IMHO -... May 20 2010, 07:15 repairDV Можно вопрос чуть-чуть в сторону от темы. Я, вообщ... May 18 2010, 22:53 Forger Цитата(repairDV @ May 19 2010, 02:53) Мож... May 19 2010, 04:40 repairDV MC56F8037 Freescale. Насколько я знаю, там к CAN н... May 19 2010, 07:11 Forger ЦитатаMC56F8037 Freescale.
Заходите на сайте Frees... May 19 2010, 07:29 DmitryDI Цитата(syoma @ Jul 26 2010, 19:45) Привет... Aug 5 2010, 12:04 Minti Цитата(syoma @ Jul 26 2010, 17:45) Привет... Jun 28 2011, 14:06 EvgeniyR Цитата(syoma @ Jul 26 2010, 18:45) Привет... Feb 5 2014, 12:29 syoma Цитатаобертка вокруг них создана на базе smart poi... Aug 3 2010, 08:08 Forger Цитата(syoma @ Aug 3 2010, 12:08) К сожал... Aug 3 2010, 10:15 syoma ЦитатаЕсли с контролер в мастер шлеца PDO, то как ... Aug 6 2010, 06:56 slimjack Добрый день!
Не хотел плодить новые ветки и ре... Feb 18 2011, 12:37 Ruslan1 вы очень все внятно разложили по полочкам
Мой оп... Feb 18 2011, 14:39 slimjack ЦитатаА Вы уверены что оно Вам надо (SDO)?
В сети ... Feb 18 2011, 15:13 Forger Цитата(slimjack @ Feb 18 2011, 18:13) По ... Feb 19 2011, 15:27 slimjack Все равно не понял на счет PDO.
ЦитатаУ каждого уз... Feb 19 2011, 21:06 Forger Цитата(slimjack @ Feb 20 2011, 00:06) Зна... Feb 20 2011, 06:17 slimjack ЦитатаЕсли вам не нравиться или не понятна логично... Feb 20 2011, 08:39 syoma ЦитатаCANopen изначально проектировался для ОДНОГО... Feb 21 2011, 08:17 Forger Цитата(syoma @ Feb 21 2011, 11:17) Откуда... Feb 21 2011, 19:55 slimjack Спасибо!
Похоже, что уже для меня все стало яс... Feb 21 2011, 09:51 syoma ЦитатаНо четыре PDO железно зафиксированы за одним... Feb 21 2011, 21:29 Forger ЦитатаНе железно, а назначены ему по умолчанию. Их... Feb 22 2011, 06:32 syoma ЦитатаВ них из 11 бит cobID 7 отводятся под номер ... Feb 22 2011, 07:55 Forger ЦитатаИз этих параметорв только SDO и NMT сообщени... Feb 22 2011, 08:40 slimjack А что если узел с одним nodeID будет использовать ... Feb 22 2011, 10:29 syoma ЦитатаА что если узел с одним nodeID будет использ... Feb 22 2011, 10:44 slimjack Т.е. 512 PDO одного направления - это чисто такая ... Feb 22 2011, 11:41 Forger Цитата(slimjack @ Feb 22 2011, 14:41) у о... Feb 22 2011, 11:54 slimjack Цитата1 бит - направление PDO (RPDO или TPDO)
Не п... Feb 22 2011, 12:41 Forger Цитата(slimjack @ Feb 22 2011, 15:41) Не ... Feb 22 2011, 14:15 syoma ЦитатаТ.е. 512 PDO одного направления - это чисто ... Feb 22 2011, 14:28 slimjack Ну теперь все ясно!
Спасибо за разъяснения все... Feb 22 2011, 15:18 syoma Смотрите это сообщение: http://electronix.ru/forum... Feb 23 2011, 07:51 GreyM Цитата(syoma @ Feb 22 2011, 14:44) Беспла... Apr 7 2011, 09:25 Minti E-MAIL не правильно написал и кнопку корректироват... Jun 28 2011, 16:59 yanvasiij Раз уж здесь собрались все знатоки CANopen, то спр... Jan 20 2012, 15:42 Forger Цитата(yanvasiij @ Jan 20 2012, 19:42) Кт... Jan 20 2012, 18:06  yanvasiij Цитата(Forger @ Jan 20 2012, 23:06) Да, з... Jan 21 2012, 17:53   Forger Цитата(yanvasiij @ Jan 21 2012, 21:53) Ск... Jan 21 2012, 19:14    yanvasiij Цитата(Forger @ Jan 22 2012, 00:14) Стран... Jan 21 2012, 19:40 yanvasiij Блин, да че такое?! Уже все весь мануал изрыл.... Jan 23 2012, 11:59 Forger Цитата(yanvasiij @ Jan 23 2012, 15:59) Бл... Jan 23 2012, 14:39 yanvasiij Могут ли ошибки в проекте быть причиной не сохнран... Jan 24 2012, 06:53 Forger Цитата(yanvasiij @ Jan 24 2012, 10:53) Мо... Jan 24 2012, 07:10 yanvasiij Проверил уже на трех машинах, нигде сохранить не п... Jan 24 2012, 07:12 Forger Цитата(yanvasiij @ Jan 24 2012, 11:12) Пр... Jan 24 2012, 10:12 yanvasiij выкладываю xdd файл, иначе никак )
Jan 24 2012, 11:36 Forger Цитата(yanvasiij @ Jan 24 2012, 15:36) вы... Jan 24 2012, 13:10 yanvasiij Проблема решена! Собака порылась в названиях д... Jan 25 2012, 04:27 yanvasiij Теперь у меня вопрос по самому протоколу. PDO, кот... Jan 25 2012, 09:59 Forger Цитата(yanvasiij @ Jan 25 2012, 13:59) Те... Jan 25 2012, 11:48 yanvasiij Проблема как раз таки в непонимании TFMа. Просто с... Jan 25 2012, 12:38 Forger Цитата(yanvasiij @ Jan 25 2012, 16:38) Пр... Jan 25 2012, 12:51 spectral1989 здравствуйте! ковыряю CanFestival. подскажите ... Aug 28 2012, 03:57 spectral1989 с gnosis.xml.pickle разобрался, установил либу. но... Aug 28 2012, 05:43 spectral1989 продвинулся еще чуток. файл objdictgen.py преобраз... Aug 29 2012, 11:15 Maks455 Здравствуйте.
2 недели назад начал изучать CANopen... Nov 7 2012, 18:40 syoma Если устройство реагирует на NMT и шлет Heartbeat,... Nov 8 2012, 07:33 Maks455 В том то и дело, что есть только CAN анализатор, и... Nov 8 2012, 10:58 syoma Какой CAN анализатор? Nov 8 2012, 11:21 Maks455 Microchip CAN BUS Analyzer. Nov 8 2012, 12:20 syoma Цитата(Maks455 @ Nov 8 2012, 14:20) Micro... Nov 8 2012, 13:52 spectral1989 ЦитатаПечально отлаживать протокол, не имея хотя б... Nov 9 2012, 01:27 syoma Я исходники вроде ж здесь выкладывал. Mar 5 2014, 09:47 VAlex999 Добрый вечер.
Тема прошлая, но всё же может у кого... Aug 24 2018, 21:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|