Серво-драйвер R88D управляет вращением мотора сверяясь с данными, которые поступают от встроенного в мотор энкодера.

Это позволяет точно позиционировать шпиндель мотора, контролировать нагрузку, усилие. Точность позиционирования шпинделя определяется разрядностью энкодера двигателя, для R88M это обычно 20 бит.

undefined

Но во многих реальных задачах возникает необходимость контролировать не вращение двигателя, а реальное перемещение конечного механизма, который может быть связан со шпинделем сервы через ремни, редуктор и пр. Эти элементы вносят свои погрешности в позиционирование из-за люфтов и дефектов изготовления.

Для этого необходима реализация полного замкнутого контура управления мотором с применением внешнего энкодера (датчика позиционирования) Full Close Control.

Берем дешевый китайский энкодер линейного перемещения с заявленной точностью 0.005 мм. У драйвера R88DKN04 есть специальный разъем для подключения выводов внешнего энкодера. Мы тут же вспоминаем, что комплектация омрон это днище, и ни для одного из имеющихся на борту 9 разъемов в комплекте поставки нет ни одного кабеля или хотя бы коннектора. Копеечная жадность омрон при цене устройства боле 40 кило рублей уже раздражает.

Припаиваем внешний энкодер прямо к плате контроллера:

undefined

 

Колхозим простенькую ось перемещения, крепим на подвижную часть датчик внешнего энкодера.

 

undefined

 

На неподвижную часть клеем магнитную ленту, по которой этот датчик должен перемещаться, и получаем нечто подобное готовое к экспериментам:

 

undefined

 

Параметры сервы

Для установки режима работы по обратной связи по внешнему энкодеру выставляем режим в параметре

Pn001 = 6: Full closing control (position control only)

Теперь нужно серве указать соотношение между импульсами от встроенного в мотор энкодера и импульсами от внешнего.

В моем случае на один оборот двигателя деталь передвигалась на 8 мм (шаг винта).

Внутренний энкодер двигателя R88M-K4003H имеет разрядность 20 бит и соответственно выдает 1048576 импульсов на оборот.

Внешний энкодер имеет точность 0.005 на 1 мм и выдает 8 / 0.005 = 1600 импульсов на тот же оборот двигателя (т.к. один оборот это 8 мм расстояния).

Заносим эти параметры:

Pn324 = 1048576

Pn325 = 1600

Также выяснилось, что направление движения внешнего энкодера оказалось противоположным энкодеру двигателя и пришлось изменить параметр:

Pn326 = 1:External encoder feedback pulse count direction reverse

Жмем кнопку внизу для отправки параметров в серву.

Ошибка 93.4

После выбора режима Full  Close Control драйвер переходит в ошибку 93.4

Оказалось нужно изменить PDO Map Settings и выбрать 258th для Output и Input данных:

undefined

Жмем Apply, подключаемся к контроллеру, жмем Synchronize и заливаем изменения на контроллер.

Открываем MC Test Run и проверяем движение.

При реальном применении, на массивных механизмах при попытке движения может возникнуть проблема, при которой, драйвер падает в ошибку. Причина в задержке сигнала реального положения от внешнего энкодера. Эта задержка скорее всего обуславливается суммой таких факторов как массивность (инертность) механизма перемещения и задержка передачи движения от вала двигателя до конечного механизма из-за редукторов или ремней. Но все это успешно преодолевается настройкой драйвера.