Отслеживание положения устройства Zaber при его перемещении - PullRequest
3 голосов
/ 03 апреля 2012

Я пишу LabVIEW VI для перемещения линейного привода Zaber и хочу записывать положение устройства каждые несколько миллисекунд по мере его движения.

Я установил Драйвер Zaber LabVIEW и использовал его примеры, чтобы заставить мой привод двигаться, но как я могу прочитать положение во время этих движений?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

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

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

Следующая опция - использовать таймер и запрашивать положение устройства каждые несколько миллисекунд. Преимущество заключается в том, что сроки являются гибкими. Вы можете установить период обновления на что угодно. Конечно, последовательная связь ограничивает, насколько быстро вы можете запросить позицию. Теоретически, вы можете сократить время примерно до 12 мс, но 15 мс даст вам немного места для дыхания.

enter image description here

Последний вариант - включить режим устройства, который отправляет обновление позиции каждые 250 мс. Преимущество состоит в том, что синхронизация немного более точна, поскольку у вас есть задержка связи только в одном направлении. В более поздних устройствах серии A вы можете изменить период обновления, но устройства серии T всегда используют 250 мс.

enter image description here

1 голос
/ 23 февраля 2015

Одна проблема с двигателями Zaber заключается в том, что последовательный канал работает только со скоростью 9,6 кбит / с (это примерно 1 байт в миллисекунду).Двигатели не могут сообщать вам каждые несколько миллисекунд, где находится двигатель.

Существует два решения:

  1. Создание простой математической модели двигателя (включая ускорение)и используйте информацию о местоположении, которую вы можете получить (4 выборки в секунду) для калибровки этой модели.

  2. Добавьте свой собственный датчик линейного квадратурного энкодера.

Я пошел с (2), потому что дизайн оборудования не был исправлен.Я использовал эти кодеры от Posic:

http://www.posic.com/default_en.asp/2-0-119-12-6-1/4-0-120-14-2-1/

Они достаточно точны, чтобы реально видеть прилипание и люфт, как это происходит!

...