Страница 3 из 15

Re: CANOPEN драйвер

Добавлено: 07 авг 2018, 09:55
!klyaksa
Спасибо за Ваш ответ!
Пытаюсь в юникон загрузить свою осциллограмму.
Юникон посылает запрос 23 51 51 00 01 00 00 00, после этого я загружаю блок данных.
Но юникон их не воспринимает и посылает запрос 23 51 51 00 01 00 00 00 снова.
Не могли бы Вы еще пояснить, если это возможно, как юникон принимает блок данных?

Re: CANOPEN драйвер

Добавлено: 07 авг 2018, 12:06
motorcontrol
Добрый день! Функция цифрового осциллографа в Юниконе представляет собой дискретный автомат, описание которого отберет целый день.
Далее будут использоваться название модулей и файлов на основе проекта (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)
Из Вашего текста не совсем понятно, как именно Вы пытаетесь загрузить осциллограмму, так как если делать это на основе проекта MotorControlDemo, то там все должно работать из коробки и от пользователя не требуется никаких дополнительных действий, кроме как в программе Юникон добавить нужную переменную в соответствующий канал осциллографа.

Re: CANOPEN драйвер

Добавлено: 07 авг 2018, 12:32
!klyaksa
Спасибо за ответ.
Немного ввела вас в заблуждение. Я пытаюсь разобраться в работе блочной передачи. Юникон посылает запрос (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, то есть, как я понимаю, происходит какая-то ошибка при приеме данных.
Хотелось бы разобраться, что это за ошибка.

Re: CANOPEN драйвер

Добавлено: 07 авг 2018, 13:33
motorcontrol
Прием блока данных в Юниконе вернет ошибку в следующих случаях:
  • не сошлась контрольная сумма полученная в блоке данных с контрольной суммой рассчитанной по принятым данным;
  • истек таймаут на прием очередного сообщения блока данных (между соседними CAN посылками одного блока данных допускается временной промежуток не более 200мс);
  • конкретно для осциллографа - размер принятого блока не равен 256 (для цифрового осциллографа размер блока данных строго определен и всегда равен 256).
Также проверьте наличие терминальных резисторов 120 Ом на концах линии. При их отсутствии на линии может быть большое число помех, что препятствует передаче большого блока данных.

Re: CANOPEN драйвер

Добавлено: 04 июн 2019, 18:22
Rine
Добрый день! Я использую контроллер Нииэт, в нем есть библиотека canopen, мне нужен режим v/f. Те с Юникона я настраиваю необходимую мне характеристику v/f, дальше отключаю Юникон и подключаю другое устройство, отправляю только задание скорости по sdo.
Но еще есть сообщения Heartbeat сервиса, они мне не нужны и я их не обрабатываю, что мне делать с ними?
И в штатной конфигурации отправляется ли что-нибудь по pdo и NMT?
Мне нужно менять только скорость, надо как-то конфигурировать штатные настройки can?

Re: CANOPEN драйвер

Добавлено: 05 июн 2019, 12:24
Лашкевич Максим
Добрый день. Cообщения Heartbeat просто сообщают, какие устройства есть в сети. С ними делать ничего не нужно, можно их не обрабатывать. Но вообще по ним можно детектировать пропажу связи - наверное, Вашему верхнему уровеню, который шлет SDO, было бы полезно знать, есть ли вообще в сети тот, кому он шлет сообщения. Но в простейшем случае можно ничего не делать, и просто слать SDO со скоростью, да.

Re: CANOPEN драйвер

Добавлено: 05 июн 2019, 15:14
Rine
Мне нужно еще отправлять сигналы пуска и стопа.
пуск 2502.01 бит 0
стоп 2502.02 бит 1
сброс 2502.03 бит 2.
Я так понимаю такая форма, но стоп работает если только туда писать единицу в 0 бит(хотя в словаре стоит 1 бит) и сброс также 0(в словаре 2 бит)

Re: CANOPEN драйвер

Добавлено: 06 июн 2019, 10:49
Лашкевич Максим
Номер бита, указанный в кодедите, это номер бита в переменной на Си внутри программы. В словаре объектов это битовые переменные, которые могут быть 0 и 1. Так что да, правильно, нужно просто слать единичку в соответствующий объект для тех или иных действий. Для этого и сделано несколько разных объектов, а не одно "слово управления" - чтобы не считать номера битиков, а просто слать 1.

Re: CANOPEN драйвер

Добавлено: 06 июн 2019, 11:23
Rine
Те нужно писать в 0 бит состояние. Но возник вопрос как читать, допустим активировал пуск, но читаю всегда 0, хотя пишу единицу туда

Re: CANOPEN драйвер

Добавлено: 07 июн 2019, 13:36
Лашкевич Максим
Это команды, а не состояние. Почитайте ПО. Для мониторинга текущего состояния есть другая переменная - drv_status_code [510Bh.02h].