AlanDerby писал(а): ↑02 ноя 2024, 19:12
Хм... Давайте попробуем разобраться методом дедукции. 

65535, это 2 в 16 степени. Т.е. видимо сероконтроллер воспринимает ваш энкодер, как абсолютный 16-бит. По этому, получив максимальные 65535 импульсов он сбрасывает значение на 0. При этом, раз 65535 импульсов это всего 180 градусов, то 360 это будет 131070, а это уже 2 в 17 степени, т.е. у вас не инкрементарный, как у меня, а абсолютный энкодер 17 бит. Отсюда и такая разница в показаниях - у меня 10000, а у вас должно быть 131070. 
Отчего у вас сервоконтроллер выдает неверные значения? Не знаю, но есть одна идея. Когда настраиваете сервоконтроллер, то нужно указать ему, к какой модели двигателя он подключен. Смотрите раздел 4.1.2. Если у вас энкодер абсолютный, то модель двигателя должна была определиться автоматически, но производитель рекомендует перед запуском все же проверить вручную правильность установки. Возможно причина вашей проблемы в этом. 
Если моя догадка верна, то после установки верной модели двигателя на выходе вы будете получать значение от 0 до 131070. Как перевести их в градусы разберетесь или подсказать?
 
Проверил правильно ли задан двигатель в параметрах контроллера и к сожалению он задан верно 
Я возможно в прошлом сообщении сумбурно всё расписал... сейчас когда я прочитал Ваши размышления попробую немного прояснить ситуацию.. 
Получается, что на дисплее сервоконтроллера значения отображаются верные, это абсолютное значение от 0 до 131070
А вот при подключении по модбас с выводом параметра 20 который как раз и должен выводить абсолютные значения т.е. как я понимаю он должен дублировать точно такие же цифры которые отображаются на дисплее сервоконтроллера (0 - 131070), НО он выводит максимум от 0 -  65535 2 раза за оборот (т.е. в сумме как бы 131070, но ...)
Вы пишите что 131070 это 17 бит и это верно, а в инструкции написано, что параметр 20 это Motor encoder single coil absolute position (pulse) low 16bit
Вот тогда и получается, что он выводит всё правильно в 16 битах, но не так как хотелось бы 

))
А можно ли как-то заставить контроллер выдавать этот параметр в 17 битах?
Или может можно как-то повлиять на количество импульсов которые выдаёт энкодер за оборот? Допустим разделить их на 2 и тогда он будет выдавать 65535 не за пол оборота, а за полный... или это бред? 
Спасибо за Ваше милосердие 

)))