реклама на сайте
подробности

 
 
7 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Реализовать CANOpen на CAN МК Freescale DSP56F805, Разобрался с аппартным CAN, надо накрутить поверх CANOpen
Forger
сообщение May 17 2010, 17:20
Сообщение #16


Профессионал
*****

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



Цитата(garry_ @ May 17 2010, 16:45) *
А у кого вы купили за такую цену? На сайте марафона он 6 тысяч рублей стоит.

5 тыр. коробка USB-CAN
15 тыр. софт: CANWize+CANopen (DLL-ка)
Год назад покупали

Цитата
Я вот смотрю, что вы с STM32 работаете. Я тоже собираюсь на нем реализовывать.
Вопрос - у вас, я так понял, реализация с использованем ООП?


Ну, типа того wink.gif

Цитата
На CANopenNode - есть вариант обычной реализации и ООП - правда он еще полностью не протестеный, но доступный. Вот я и не понимаю, чего тот чел тоже перелез на объекты, если и без них все прекрасно работало. Зачем для микроконтроллера объектная реализация?


1. Простота реализации и отладки. Дешевле выходит, но требуются хороший навыки использования C++ и соотв. абстактное мышление. Мне последного слегка недостает wink.gif
2. Простота применения в новом очередном проекте. Это факт. Проект выходит предельно прозрачным.
3. Б'ольшая безопасность применения, из-за преимуществ C++.
4. Меньший объем кода (на С будет тяжелее из-за больших проблем с правильным проектированием). Проверял.
Но данных (ОЗУ) нужно больше. Хотя и это решаемо.


Цитата
Или может есть весомые преемущества ООП реализации CANopen стека, по сравнению с обычной реализацией, с точки зрения понимаемости программы в будущем и расширяемости, если основное приложение будет оставаться обычным - без объектной реализации?

В том-то все и дело, что если основное приложение тоже - ООП, то применения CANopen стека, RTOS (у меня C++ обертка для TNKernel, так намного удобнее), других стеков (TCP/IP, например) становиться намного удобнее и меньше ошибок.

Что-то типа этого:
Код
class TApplication
{
public:
//    TApplication(void);
    void initialize(void);
    void run(void);
    inline void synchronize(void) { _rtos.synchronize(); }

private:
    class TThreadCANopen : public TThread<THREAD_CAN_OPEN_STACK_SIZE>
    {
        virtual void initialize(void * bodyArgument);
        virtual void body(void);
        THardwareSTM32 *    _hardware;
        TCANopenSlave        _CANopenSlave;
        TEventSemaphore        _isRecievedCANFrame;
    };
    
    class TThreadLeds : public TThread<THREAD_LEDS_STACK_SIZE>
    {
        virtual void initialize(void * bodyArgument);
        virtual void body(void);
        TTargetSTM32 * _target;
    };

    class TThreadWatchDog : public TThread<THREAD_WATCH_DOG_STACK_SIZE>
    {
        virtual void initialize(void * bodyArgument);
        virtual void body(void);
        TTargetSTM32 * _target;
    };

private:
    TKernel            _rtos;
    TTargetSTM32        _target;
    TThreadCANopen        _threadCANopen;
    TThreadLeds        _threadLeds;
    TThreadWatchDog        _threadWatchDog;
};

void TApplication::initialize(void)
{
    _rtos.initialize();
    _target.initializeSystem(SYSTEM_FREQUENCY_72MHz);
    _target.initializeMainTimer(1); // Период 1 мс
    _target.initializePorts();
}


void TApplication::run(void)
{
//    _threadCANopen.run("CANopen", THREAD_CAN_OPEN_PRIORITY, &_target);
    _threadLeds.run(THREAD_LEDS_PRIORITY, &_target);
    _threadWatchDog.run(THREAD_WATCH_DOG_PRIORITY, &_target);
    _rtos.run(); // Never returns here
}




TApplication application;

int main()
{
   application.initialize();
   application.run();
}

extern "C" void SysTickHandler()
{
   application.synchronize();
}

void TApplication::TThreadLeds::initialize(void * bodyArgument)
{
   _target = (TTargetSTM32*)bodyArgument;
}

void TApplication::TThreadLeds::body(void)
{
   _target->setPinToLOW(PORT_LED_GREEN, PIN_LED_GREEN);    // Включить зеленый светодиод
   sleep(50);
   _target->setPinToHIGH(PORT_LED_GREEN, PIN_LED_GREEN);    // Выключить зеленый светодиод
   sleep(50);
}

void TApplication::TThreadWatchDog::initialize(void * bodyArgument)
{
   _target = (TTargetSTM32*)bodyArgument;
   _target->initializeWatchDogTimer(12); // Период сторожевого таймер 12 мс
}

void TApplication::TThreadWatchDog::body(void)
{
   _target->updateWatchDogTimer(); // Сбрасывать сторожевой таймер каждые 10 мс
   sleep(10);
}


Цитата
ПС. Я это спрашиваю еще потому, что посмотрел документацию на основные коммерческие CANopen стеки от IXXAT, Vector и т.д - там все без ООП. Но это наверное в угоду портируемости.


Пожалуй,...
К тому же далеко не для всех процов есть C++ компилер.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
syoma
сообщение May 18 2010, 06:48
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Спасибо за ответ

Цитата
5 тыр. коробка USB-CAN
15 тыр. софт: CANWize+CANopen (DLL-ка)

Ага, значит Вы еще и CANopen модуль к анализатору докупали.
Блин, а он дороже чем сам анализатор будет.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 18 2010, 08:53
Сообщение #18


Профессионал
*****

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



Цитата
Ага, значит Вы еще и CANopen модуль к анализатору докупали.
Блин, а он дороже чем сам анализатор будет.

А как иначе?
По опыту работы с этим набором скажу, что CANopen DLL-ка от Марафон не особо нужна -
она там весьма упрощенная, поэтому все можно сделать без нее.
Достаточно купить софтину CANwize, впрочем, даже эта софтина не блещет удобствами.
Вполне можно написать софтину своими силами. Благо марафоновцы дают исчерпывающий
набор примеров и документации на USB-CAN коробку.
Однако, есть у этой коробки одна серьезная беда.
При очень интенсивном обмене по шине (1 МБит скорость, кадрый сыпяться без перерыва) -
эта коробка теряет кадры и получает некоторые битыми.
Буфер в ней забивается настоко, что драйвер не успевает выбирать все кадры.
Явные софтовые проблемы.
Я бы все-таки не советовал покупать этот вариант, несмотря на его очень низкую цену.
Если б я знал это раньше, то лучше попросил у кого-нить в долг за деньги нормальный набор от IXXAT или подобное.
Или вовсе убедил бы боссов купить этот набор.
А делать свою коробку USB-CAN не советую - на первых порах лучше, чем у марафон не выйдет, а обойдется намного дороже. Да и времени на это тоже нужно немало - много заморочек и косяков с софтовой частью: прошивка контроллера, драйвер под винду, софт для пользователя.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Marathon
сообщение May 18 2010, 13:42
Сообщение #19





Группа:
Сообщений: 4
Регистрация: 18-05-10
Из: Москва
Пользователь №: 57 337



Цитата(Forger @ May 18 2010, 12:53) *


Цитата
По опыту работы с этим набором скажу, что CANopen DLL-ка от Марафон не особо нужна -
она там весьма упрощенная, поэтому все можно сделать без нее.
Вполне можно написать софтину своими силами. Благо марафоновцы дают исчерпывающий
набор примеров и документации на USB-CAN коробку.

По-видимому, Вы имеете ввиду CANopen анализатор. Это лишь один из модулей набора, который и должен быть достаточно простым. Ведь большинство CANopen протоколов являются "однокадровыми" т.е. поддерживаются одним CAN кадром канального уровня. Анализатор лишь интерпретирует такие кадры в терминах стандарта CANopen DS301.
Одним из достоинств анализатора является отслеживание контекста SDO обмена, в том числе для блочного протокола, который в большинстве свободных CANopen библиотек не реализован (вообще говоря, он и используется не очень часто). Вот это свойство без опыта программирования CANopen систем реализовать самостоятельно весьма непросто. Наибольшую пользу CANopen анализатор может принести как раз на начальном этапе освоения CANopen. Если Вы преодолели этот этап без помощи анализатора, в дальнейшем его ценность будет для вас снижаться (до определенной степени).

Цитата
Достаточно купить софтину CANwize, впрочем, даже эта софтина не блещет удобствами.

Данная "софтина" является бесплатным приложением к любому CAN контроллеру Марафон и может быть загружена с сайта компании. Стоимость CAN-USB интерфейса - 5000 рублей без НДС, CANopen анализатора - 9500 рублей без НДС.

Цитата
Однако, есть у этой коробки одна серьезная беда.
При очень интенсивном обмене по шине (1 МБит скорость, кадрый сыпяться без перерыва) -
эта коробка теряет кадры и получает некоторые битыми.
Буфер в ней забивается настоко, что драйвер не успевает выбирать все кадры.
Явные софтовые проблемы.
Я бы все-таки не советовал покупать этот вариант, несмотря на его очень низкую цену.
Если б я знал это раньше, то лучше попросил у кого-нить в долг за деньги нормальный набор от IXXAT или подобное.
Или вовсе убедил бы боссов купить этот набор.

Есть такая беда-проблема. Она связана с использованием устаревшего FTDI USB контроллера, а также с некоторыми ограничениями используемого USB протокола. У IXAAT контроллеров таких проблем нет - сказывается почти 15 летняя фора по CAN разработкам, да и возможность привлечь к ним заметно бОльшие ресурсы. Вместе с тем, отметим, что такая ситуация (минимум проблем) наблюдается лишь у CAN разработчиков первого эшелона (Vector, IXXAT). Нам доводилось сталкиваться с CAN-USB интерфейсом, также разработанным в Германии, который при переполнении буферов на максимальном CAN трафике просто и тихо зависал. Марафоновский контроллер, теряя кадры, не виснет, но ругается, сообщая о различных оверранах и прочих неприятностях.
В настоящее время Марафон выпускает новый вариант CAN-USB контроллера. Он является двухканальным и свободен от недостатка производительности, в том числе на максимальной скорости CAN сети 1 Мбит.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 18 2010, 18:43
Сообщение #20


Профессионал
*****

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



Цитата
Данная "софтина" является бесплатным приложением к любому CAN контроллеру Марафон и может быть загружена с сайта компании.

Что ж, выходит, что набор от Марафон вообще самый дешевый! disco.gif

Цитата
Есть такая беда-проблема. Она связана с использованием устаревшего FTDI USB контроллера, а также с некоторыми ограничениями используемого USB протокола.

Цитата
В настоящее время Марафон выпускает новый вариант CAN-USB контроллера. Он является двухканальным и свободен от недостатка производительности, в том числе на максимальной скорости CAN сети 1 Мбит.

Тоже за 5 тыр? 08.gif


А не планируете CAN-ETHERNET коробку?
Очень была бы удобна.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
repairDV
сообщение May 18 2010, 22:53
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Можно вопрос чуть-чуть в сторону от темы. Я, вообще-то, пользуюсь CodeWarrior 8.2. В нём вроде CAN не программируется. Вы как его программируете?


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 19 2010, 04:40
Сообщение #22


Профессионал
*****

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



Цитата(repairDV @ May 19 2010, 02:53) *
Можно вопрос чуть-чуть в сторону от темы. Я, вообще-то, пользуюсь CodeWarrior 8.2. В нём вроде CAN не программируется. Вы как его программируете?

Компилятор и среда тут не имеют значения.
Какой контроллер?


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
repairDV
сообщение May 19 2010, 07:11
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



MC56F8037 Freescale. Насколько я знаю, там к CAN нужно что-то дополнительно в CodeWarrior.


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 19 2010, 07:29
Сообщение #24


Профессионал
*****

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



Цитата
MC56F8037 Freescale.

Заходите на сайте Freescale, качайте оттуда даташит на контроллер, примеры программ и т.п.
В CodeWarrior есть HELP и мануал.
Короче, RTFM


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Седой
сообщение May 19 2010, 14:24
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(Forger @ May 19 2010, 00:43) *
Что ж, выходит, что набор от Марафон вообще самый дешевый!


C чего бы это.

см. http://projects.caxapa.ru/?ID=23

Двухканальные на Cortex-M3 будут в районе 3000 - 3500 http://www.mcutool.ru/products/connectivit...ser/us-can.aspx

Одноканальные, недорогие ( но без пропуска пакетов) - 1500-2000 http://www.mcutool.ru/products/connectivit...n/uccanlhs.aspx

В начале июня начнем.
Go to the top of the page
 
+Quote Post
garry_
сообщение May 19 2010, 14:55
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 22-06-04
Из: Moscow
Пользователь №: 105



Цитата(Седой @ May 19 2010, 18:24) *
C чего бы это.

см. http://projects.caxapa.ru/?ID=23

Двухканальные на Cortex-M3 будут в районе 3000 - 3500 http://www.mcutool.ru/products/connectivit...ser/us-can.aspx

Одноканальные, недорогие ( но без пропуска пакетов) - 1500-2000 http://www.mcutool.ru/products/connectivit...n/uccanlhs.aspx

В начале июня начнем.


А софт какой ? Чето по ссылке не нашел, так железку можно за пару дней сделать, прицепить SJA1000 к FT2232HL (апноут даже есть)
Go to the top of the page
 
+Quote Post
syoma
сообщение May 20 2010, 07:14
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата(Седой @ May 19 2010, 16:24) *
см. http://projects.caxapa.ru/?ID=23

Двухканальные на Cortex-M3 будут в районе 3000 - 3500 http://www.mcutool.ru/products/connectivit...ser/us-can.aspx

Одноканальные, недорогие ( но без пропуска пакетов) - 1500-2000 http://www.mcutool.ru/products/connectivit...n/uccanlhs.aspx

В начале июня начнем.


IMHO - Это все игрушки для наколенных проектов. Сам в свое время такой CAN-анализатор купил - поигрался и на полку положил. Потому, что смысл не в железе а в софте.
Во первых драйвера - тот же адаптер от IXXAT имеет драйвера и под LabView и под MATLAB и библиотеки под C - куда хочешь его прилепить можно. А тот, что за 70$ - с каким софтом его можно будет использовать?
Тот же CANanalyzer - жалко, что нет взломаного, намного круче любого монитора, который идет в комплекте со всеми этими игрушками. Про более навороченые вещи типа CANopen модуля я вообще молчу - их просто для таких девайсов нет и не будет.
Так что, если на фирму брать - это 100% выкинутые на ветер деньги. Купите IXXAT CAN-to-USB - за 300$ и этот адаптер 10 лет будет работать и дрова на него всегда будут, а разработчики спасибо скажут. Эта инвестиция намного лучше.
Go to the top of the page
 
+Quote Post
garry_
сообщение May 20 2010, 07:15
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 22-06-04
Из: Moscow
Пользователь №: 105



Цитата(syoma @ May 20 2010, 11:14) *
IMHO - Это все игрушки для наколенных проектов. Сам в свое время такой CAN-анализатор купил - поигрался и на полку положил. Потому, что смысл не в железе а в софте.
Во первых драйвера - тот же адаптер от IXXAT имеет драйвера и под LabView и под MATLAB и библиотеки под C - куда хочешь его прилепить можно. А тот, что за 70$ - с каким софтом его можно будет использовать?
Тот же CANanalyzer - жалко, что нет взломаного, намного круче любого монитора, который идет в комплекте со всеми этими игрушками. Про более навороченые вещи типа CANopen модуля я вообще молчу - их просто для таких девайсов нет и не будет.
Так что, если на фирму брать - это 100% выкинутые на ветер деньги. Купите IXXAT CAN-to-USB - за 300$ и этот адаптер 10 лет будет работать и дрова на него всегда будут, а разработчики спасибо скажут. Эта инвестиция намного лучше.

+1
Go to the top of the page
 
+Quote Post
syoma
сообщение Jul 26 2010, 15:45
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 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 адаптеры.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 28 2010, 16:25
Сообщение #30


Профессионал
*****

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



Цитата(syoma @ Jul 26 2010, 19:45) *
Короче запустил я этот CANfestival на STM32F103. Заняло это дело 2 месяца подходов к компьютеру и чтения документации и аж 2 дня на перелопачивание драйверов на CAN контроллер и таймер. Исходники могу выложить....

Было бы очень интересно взглянуть и сравнить!


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

7 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 14:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01531 секунд с 7
ELECTRONIX ©2004-2016