CANOPEN драйвер

!klyaksa
Сообщения: 3
Зарегистрирован: 06 авг 2018, 11:17

Re: CANOPEN драйвер

Сообщение !klyaksa » 07 авг 2018, 09:55

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

Аватара пользователя
motorcontrol
Site Admin
Сообщения: 8
Зарегистрирован: 25 ноя 2015, 14:55

Re: CANOPEN драйвер

Сообщение motorcontrol » 07 авг 2018, 12:06

Добрый день! Функция цифрового осциллографа в Юниконе представляет собой дискретный автомат, описание которого отберет целый день.
Далее будут использоваться название модулей и файлов на основе проекта (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, то там все должно работать из коробки и от пользователя не требуется никаких дополнительных действий, кроме как в программе Юникон добавить нужную переменную в соответствующий канал осциллографа.

!klyaksa
Сообщения: 3
Зарегистрирован: 06 авг 2018, 11:17

Re: CANOPEN драйвер

Сообщение !klyaksa » 07 авг 2018, 12:32

Спасибо за ответ.
Немного ввела вас в заблуждение. Я пытаюсь разобраться в работе блочной передачи. Юникон посылает запрос (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
Сообщения: 8
Зарегистрирован: 25 ноя 2015, 14:55

Re: CANOPEN драйвер

Сообщение motorcontrol » 07 авг 2018, 13:33

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

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей