CANOPEN драйвер
Re: CANOPEN драйвер
Спасибо за Ваш ответ!
Пытаюсь в юникон загрузить свою осциллограмму.
Юникон посылает запрос 23 51 51 00 01 00 00 00, после этого я загружаю блок данных.
Но юникон их не воспринимает и посылает запрос 23 51 51 00 01 00 00 00 снова.
Не могли бы Вы еще пояснить, если это возможно, как юникон принимает блок данных?
Пытаюсь в юникон загрузить свою осциллограмму.
Юникон посылает запрос 23 51 51 00 01 00 00 00, после этого я загружаю блок данных.
Но юникон их не воспринимает и посылает запрос 23 51 51 00 01 00 00 00 снова.
Не могли бы Вы еще пояснить, если это возможно, как юникон принимает блок данных?
- motorcontrol
- Site Admin
- Сообщения: 12
- Зарегистрирован: 25 ноя 2015, 14:55
Re: CANOPEN драйвер
Добрый день! Функция цифрового осциллографа в Юниконе представляет собой дискретный автомат, описание которого отберет целый день.
Далее будут использоваться название модулей и файлов на основе проекта (MotorControlDemo)
Если кратко, то Юникон для функции цифрового осциллографирования взаимодействует с модулем dlog (в словаре это индексы от 5150h-5151h). Для взаимодействия с этими объектами Юникон использует SDO сервис, а для загрузки осциллограмм либо блочную передачу, либо SDO сервис (в зависимости от настроек и доступности блочной передачи на контроллере). Таким образом, для корректной работы функции цифрового осциллографа в Юниконе на контроллере необходимо обеспечить следующее:
Далее будут использоваться название модулей и файлов на основе проекта (MotorControlDemo)
Если кратко, то Юникон для функции цифрового осциллографирования взаимодействует с модулем dlog (в словаре это индексы от 5150h-5151h). Для взаимодействия с этими объектами Юникон использует SDO сервис, а для загрузки осциллограмм либо блочную передачу, либо SDO сервис (в зависимости от настроек и доступности блочной передачи на контроллере). Таким образом, для корректной работы функции цифрового осциллографа в Юниконе на контроллере необходимо обеспечить следующее:
- работу драйвера CANOpen (как минимум SDO сервис + блочная передача, для ускоренной загрузки осциллограмм)
- функционал модуля dlog (см. файл V_data_log.c)
- функционал колбэк функции callback_dlog (см. файл CANOpenUDfuncs.c). Также необходимо чтобы данная колбэк функция была назначена объекту 5151h (dlog.next_value_var) - делается через программу CoodEdit
- помимо описанного, для быстрой загрузки осциллограмм через блочную передачу, необходимо обеспечить функционал интерфейса блочной передачи (см. файл CANBlockTransferInterface.c)
Re: CANOPEN драйвер
Спасибо за ответ.
Немного ввела вас в заблуждение. Я пытаюсь разобраться в работе блочной передачи. Юникон посылает запрос (SDOtx): 23 51 51 00 01 00 00 00, на что я ему отвечаю (SDOrx): 60 51 51 00 00 00 00 00 и сразу же начинаю передавать данные:
ID:00000781 Rx data: FF 00 00 00 01 00 02 00
ID:00000781 Rx data: 03 00 04 00 05 00 06 00
ID:00000781 Rx data: 07 00 08 00 09 00 0A 00
ID:00000781 Rx data: 0B 00 0C 00 0D 00 0E 00
ID:00000781 Rx data: 0F 00 10 00 11 00 12 00
ID:00000781 Rx data: 13 00 14 00 15 00 16 00
и т.д.
На что от Юникона опять приходит запрос 23 51 51 00 01 00 00 00, то есть, как я понимаю, происходит какая-то ошибка при приеме данных.
Хотелось бы разобраться, что это за ошибка.
Немного ввела вас в заблуждение. Я пытаюсь разобраться в работе блочной передачи. Юникон посылает запрос (SDOtx): 23 51 51 00 01 00 00 00, на что я ему отвечаю (SDOrx): 60 51 51 00 00 00 00 00 и сразу же начинаю передавать данные:
ID:00000781 Rx data: FF 00 00 00 01 00 02 00
ID:00000781 Rx data: 03 00 04 00 05 00 06 00
ID:00000781 Rx data: 07 00 08 00 09 00 0A 00
ID:00000781 Rx data: 0B 00 0C 00 0D 00 0E 00
ID:00000781 Rx data: 0F 00 10 00 11 00 12 00
ID:00000781 Rx data: 13 00 14 00 15 00 16 00
и т.д.
На что от Юникона опять приходит запрос 23 51 51 00 01 00 00 00, то есть, как я понимаю, происходит какая-то ошибка при приеме данных.
Хотелось бы разобраться, что это за ошибка.
- motorcontrol
- Site Admin
- Сообщения: 12
- Зарегистрирован: 25 ноя 2015, 14:55
Re: CANOPEN драйвер
Прием блока данных в Юниконе вернет ошибку в следующих случаях:
- не сошлась контрольная сумма полученная в блоке данных с контрольной суммой рассчитанной по принятым данным;
- истек таймаут на прием очередного сообщения блока данных (между соседними CAN посылками одного блока данных допускается временной промежуток не более 200мс);
- конкретно для осциллографа - размер принятого блока не равен 256 (для цифрового осциллографа размер блока данных строго определен и всегда равен 256).
Re: CANOPEN драйвер
Добрый день! Я использую контроллер Нииэт, в нем есть библиотека canopen, мне нужен режим v/f. Те с Юникона я настраиваю необходимую мне характеристику v/f, дальше отключаю Юникон и подключаю другое устройство, отправляю только задание скорости по sdo.
Но еще есть сообщения Heartbeat сервиса, они мне не нужны и я их не обрабатываю, что мне делать с ними?
И в штатной конфигурации отправляется ли что-нибудь по pdo и NMT?
Мне нужно менять только скорость, надо как-то конфигурировать штатные настройки can?
Но еще есть сообщения Heartbeat сервиса, они мне не нужны и я их не обрабатываю, что мне делать с ними?
И в штатной конфигурации отправляется ли что-нибудь по pdo и NMT?
Мне нужно менять только скорость, надо как-то конфигурировать штатные настройки can?
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: CANOPEN драйвер
Добрый день. Cообщения Heartbeat просто сообщают, какие устройства есть в сети. С ними делать ничего не нужно, можно их не обрабатывать. Но вообще по ним можно детектировать пропажу связи - наверное, Вашему верхнему уровеню, который шлет SDO, было бы полезно знать, есть ли вообще в сети тот, кому он шлет сообщения. Но в простейшем случае можно ничего не делать, и просто слать SDO со скоростью, да.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: CANOPEN драйвер
Мне нужно еще отправлять сигналы пуска и стопа.
пуск 2502.01 бит 0
стоп 2502.02 бит 1
сброс 2502.03 бит 2.
Я так понимаю такая форма, но стоп работает если только туда писать единицу в 0 бит(хотя в словаре стоит 1 бит) и сброс также 0(в словаре 2 бит)
пуск 2502.01 бит 0
стоп 2502.02 бит 1
сброс 2502.03 бит 2.
Я так понимаю такая форма, но стоп работает если только туда писать единицу в 0 бит(хотя в словаре стоит 1 бит) и сброс также 0(в словаре 2 бит)
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: CANOPEN драйвер
Номер бита, указанный в кодедите, это номер бита в переменной на Си внутри программы. В словаре объектов это битовые переменные, которые могут быть 0 и 1. Так что да, правильно, нужно просто слать единичку в соответствующий объект для тех или иных действий. Для этого и сделано несколько разных объектов, а не одно "слово управления" - чтобы не считать номера битиков, а просто слать 1.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: CANOPEN драйвер
Те нужно писать в 0 бит состояние. Но возник вопрос как читать, допустим активировал пуск, но читаю всегда 0, хотя пишу единицу туда
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: CANOPEN драйвер
Это команды, а не состояние. Почитайте ПО. Для мониторинга текущего состояния есть другая переменная - drv_status_code [510Bh.02h].
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.