Моторизованные зум-объективы POMEAS позиционируются по абсолютному счёту импульсов, а не по напряжению и не по аналоговому сигналу обратной связи. Для каждой модели объектива поставляется таблица импульсов, в которой имя файла обозначает модель объектива, а каждая строка связывает одно оптическое увеличение с его импульсной позицией — например 1X 4600, 2X 8400. Многопозиционное зуммирование по пресетам сводится к сохранению этих значений импульсов и многократному вызову MoveTo(pulse).
Поскольку соответствие получено заводской калибровкой конкретной оптической и механической сборки, значения импульсов всегда нужно приводить вместе с точным номером модели и типом мотора. Одно и то же увеличение отображается в разные значения импульсов на разных моделях, в разных поколениях моторов, а также на шифрованных и стандартных контроллерных картах.
| Пункт | Значение |
|---|---|
| Метод позиционирования | Абсолютный счёт импульсов с реперной точкой возврата |
| Расположение таблицы импульсов | OP/*.txt в SDK — имя файла = модель объектива, каждая строка = одно увеличение |
| Типичная детализация | от 9 до 17 выбираемых шагов увеличения на объектив в зависимости от модели |
| Обратное чтение позиции | Да — GetPos() / последовательная XN |
| Связь с увеличением | Нелинейная; прирост импульсов на шаг увеличения уменьшается по мере роста увеличения |
| Переносимость между моделями | Отсутствует — таблицы специфичны для модели и мотора |
| Способ управления | Позиционирование | Воспроизводимо? |
|---|---|---|
| Коллекторный мотор с потенциометром | Аналоговое, без абсолютного репера | Нет |
| Шаговый или серво-привод с счётом импульсов | Абсолютный счёт импульсов | Да — считываемое и воспроизводимое |
| Моторизованный зум POMEAS | Абсолютный импульс плюс репер возврата | Да — MoveTo(absolute pulse) с обратным чтением позиции |
Инженерные последствия важнее самого механизма:
Ниже приведена заводская таблица импульсов для PMS-LZL-12109-3 — двухмоторного объектива 12.5X с 3 mm моторизованной доводкой фокуса. В её диапазоне девять шагов увеличения.
| Оптическое увеличение | Импульс | Оптическое увеличение | Импульс |
|---|---|---|---|
| 0.58X | 10 | 4X | 13650 |
| 1X | 4600 | 5X | 15200 |
| 2X | 8400 | 6X | 16500 |
| 3X | 11700 | 7X | 17700 |
| — | — | 7.5X | 18650 |
Считайте приросты, а не абсолютные числа, и нелинейность очевидна: шаг от 1X до 2X стоит 3800 импульсов, тогда как от 7X до 7.5X — всего 950. Счёт импульсов отслеживает механическую позицию; увеличение — оптический результат. Их связь устанавливается заводской калибровкой, а не формулой, которую можно экстраполировать.
Таблица ниже относится к платформе 6.5X серии 65, которую используют PMS-LZ-650104 (моторизованный) и PMS-LZ-650105 (моторизованный, коаксиальная подсветка). В ней одиннадцать шагов и общий ход 24400 импульсов.
| Оптическое увеличение | Импульс | Оптическое увеличение | Импульс |
|---|---|---|---|
| 0.69X | 0 | 3X | 20000 |
| 0.7X | 500 | 3.5X | 21800 |
| 1X | 8000 | 4X | 23000 |
| 1.5X | 12000 | 4.5X | 24200 |
| 2X | 15500 | Общий ход: 24400 | |
| 2.5X | 18000 | ||
Сравните две таблицы, и вывод станет наглядным: 1X — это импульс 4600 на объективе 12.5X и импульс 8000 на объективе 6.5X. Общего масштаба нет. Значение импульса бессмысленно, если рядом не указана модель.
Разные поколения моторов используют разные углы шага и микрошаг, поэтому одно и то же оптическое увеличение попадает на другое значение импульсов. Всегда сопоставляйте таблицу с линией управления, реально установленной в вашем объективе.
Объективы с шифрованной контроллерной картой имеют независимую механическую калибровку нуля и область параметров Flash. Их таблицы импульсов отличаются от стандартной версии той же оптической платформы — например, на 1X платформа 6.5X 1" показывает 6500 на шифрованной карте и 8000 на стандартной. Смена контроллерной карты означает смену таблицы.
Конструкции зум-объективов с рельсовым приводом используют другой механический привод — отсюда и разные значения объектного разрешения у двух вариантов платформы 6.5X. Спецификации следует брать по модели, а не по серии.
Таблицы импульсов существуют более чем в одном документе, и они согласованы не всегда. Одна широко распространённая таблица в руководстве по эксплуатации имеет восемь колонок, заголовки которых не совпадают с данными под ними. Сверка этой таблицы с реальными файлами импульсов по моделям в SDK наглядно показывает расхождение:
| Колонка по заголовку | Что на самом деле в данных | Откуда известно |
|---|---|---|
| «650 series» | Верно — данные серии 65 | Точно совпадает с файлом импульсов серии 65, шаг за шагом (1X = 8000, 2X = 15500, 4.5X = 24200, всего 24400) |
| «4K series» | На самом деле данные 12.5X | Точно совпадает с файлом импульсов объектива 12.5X (1X = 4600, 2X = 8400, 4X = 13650, 7.5X = 18650) |
Практическое правило: берите значения импульсов из поставляемых с SDK файлов импульсов по моделям, а не из сводной таблицы в руководстве. Сводная таблица, смешивающая платформы, — это опасность при чтении, и использование колонки под её напечатанным заголовком отправит объектив не в ту позицию.
| Путь | Метод | Типичное применение |
|---|---|---|
| Сырая последовательная команда | XG плюс шесть HEX-цифр | ПЛК, контроллер движения, микроконтроллер |
| Устаревший API SDK | MoveGoto(Motor m, long dest) | Windows C++ / C# |
| SDK V4.4.7 | MoveTo(pulse) с обратным чтением GetPos() | Рекомендуется для новой разработки |
(1) XM / GetMaxPos() read total travel, confirm the target is in range
(2) XH / GoHome() home the lens and establish the absolute reference
(3) XG <pulse> / MoveTo() move to the preset position
(4) XZ / GetStatus() poll until 0x55, or until status reads stopped
(5) XN / GetPos() read back and verify (closed loop)
(6) back to (3) for the next preset position
Циклирование point-to-point — встроенная возможность поставляемого демонстрационного приложения: введите значение импульса в поле тестовой позиции, загрузите его как recorded position, задайте число повторов и время ожидания и запустите. Это механизм многопозиционной последовательности зуммирования — один объектив обслуживает несколько вариантов изделий, вызывая разные наборы позиций, без смены объектива и без механической переключающей арматуры.
// Move to a preset magnification and verify the result
int zoomTo(int fd, long targetPulse) {
char buf[16];
int n = snprintf(buf, sizeof(buf), "%c%c%6lX%c", 'X', 'G', targetPulse, '\r');
if (write(fd, buf, n) != n) return -1; // send
if (waitStop(fd, 10000) != 0) return -2; // wait for motion to end
long pos = readPos(fd); // read back
return (labs(pos - targetPulse) <= TOL) ? 0 : -3; // tolerance set by the integrator
}
Допуск TOL должен выбирать интегратор в соответствии с требованиями процесса. Протокол обеспечивает обратное чтение позиции; он не определяет показатель повторяемости, и никаких числовых заявлений о точности не следует делать без измерений на вашем собственном оборудовании в ваших условиях.
Если вашему процессу нужен показатель повторяемости, измерьте его. Приведённая ниже процедура даёт значение разброса для одного конкретного рабочего условия.
| Шаг | Действие |
|---|---|
| 1 | Выберите две пресетные позиции далеко друг от друга: A (низкое увеличение) и B (высокое увеличение) |
| 2 | Верните объектив в исходное положение, MoveTo(A), дождитесь остановки, запишите позицию P₁ с помощью GetPos() |
| 3 | MoveTo(B), дождитесь остановки, запишите позицию |
| 4 | MoveTo(A), дождитесь остановки, запишите P₂ |
| 5 | Повторите шаги 3–4 N раз — желательно N 30 или более, — записывая каждый раз позицию, достигнутую в A |
| 6 | Вычислите разброс R = max(P₂) − min(P₂) и среднеквадратичное отклонение |
| 7 | Поменяйте роли A и B и повторите в противоположном направлении (двунаправленное тестирование) |
| 8 | Запишите температуру окружающей среды, длину моторного кабеля и скорость хода вместе с результатом |
Сообщайте разброс R для этого конкретного набора условий и указывайте сами условия — число без условий никому не пригодится.
Нет. Опубликованные значения для платформы 12.5X различаются по поколению мотора, и числа не взаимозаменяемы. Всегда приводите значение импульса вместе с моделью и типом мотора.
Нет. Оптическая конструкция, механический ход и микрошаг мотора различаются. Ищите каждую модель отдельно. Только у платформы 6.5X не менее четырёх различных таблиц в вариантах standard, encrypted и rail.
Они этого не делают. У шифрованной карты своя калибровка нуля и область параметров Flash, поэтому её таблица отличается от стандартной карты на той же оптике.
Импульс — это позиция; увеличение — оптический результат. Связь устанавливается заводской калибровкой и не является линейной.
Ненадёжно. Используйте поставляемый с SDK файл импульсов конкретной модели. Сводные таблицы в руководствах могут и содержат смещение колонок, а последствие — объектив, отправленный не в ту позицию.
Из заводской калибровки каждой отдельной модели объектива. Они распространяются как текстовые файлы в папке OP SDK, где имя файла — модель объектива, а каждая строка связывает одно увеличение с его импульсной позицией.
Нет. Прирост импульсов на шаг увеличения уменьшается по мере роста увеличения, поскольку счёт импульсов отслеживает механическую позицию, а не оптическую мощность.
Объектив принимает любое значение импульса в пределах общего хода, поэтому промежуточные позиции достижимы. Поскольку связь нелинейна, увеличение при промежуточном импульсе нужно устанавливать измерением, а не интерполяцией.
Объектив не двигается и не сообщает об ошибке. Это предусмотренное поведение, и именно поэтому обратное чтение позиции, а не команда перемещения, — надёжный способ подтвердить, что линия жива.
Да, если вы хотите, чтобы абсолютный репер был действителен. Возврат в исходное положение задаёт механический нуль, от которого отсчитываются абсолютные значения импульсов.
XG, XM и XN, использованные вышеMoveTo, GetPos, GoHome и семейство API для двух моторов
Введите свой адрес электронной почты, чтобы получать свежие новости и эксклюзивные обновления от Pomeas. Оставайтесь на связи с Pomeas и будьте в курсе новейших оптических решений.