A A A A Автор Тема: ASCOM-драйвер для "Контроллера электрофокусера"  (Прочитано 21930 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Мефодий, что там у Вас с термодатчиком, когда он будет, может быть Вам его по почте переслать, не в Америке же живете, через неделю будет, скорой почтой может и быстрее, послать могу в субботу.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Сейчас закачаю FocusMax ...

Дело в том, что запись в ЕПРОМ происходит при закрытии диалога настройки.
При этом открывается порт, проверяется наличие фокусера и порт закрывается.
Если программа при включении сразу подключается к фокусеру, то при открытии
порта произойдет ошибка и данные не запишутся.

Если это подвердится для FocusMax - сделаю проверку на то, откыт порт или нет ... Ждите
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
  Мефодий, что там у Вас с термодатчиком, когда он будет, может быть Вам его по почте переслать, не в Америке же живете, через неделю будет, скорой почтой может и быстрее, послать могу в субботу.


Клялись и божились, что будет в следущий четверг ... Надо было раньше тебя попросить (недопетрил),
а то в нашем Захудайске с элементной базой наметились проблемы ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Ну думай, для хорошего человека д...ма не жалко. Две штуки есть в коробочке.

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 022
  • Благодарностей: 768
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
Можно и так, но в силу сложившейся практики я стараюсь сравнивать не сами символы, а их машинные
представления (часто пишу под другие платформы)

О вкусах не спорят. :)

Цитата
я задал в диалоге shift =3000, а реально он =1 (позиция в максиме 19, на фокусере 18).

Возможно ты не запускал install.bat. Там несколько ключей в реестре изменились.
В частности появились строковые Shift и LastPos ...

Переинсталировал. То же самое. Задал шифт=5000, а реально он=1. Вот настройки и данные из регистри

Кстати, отрицательную тепмературу тоже верно показывает. :)

В авто-режим переводит, из авто режима выводит, но после вывода перестает общаться по сом порту с фокусером. Температуру не передает, двигать не может (и в порт ничего не посылает).
« Последнее редактирование: 08 Ноя 2007 [21:46:54] от Ivan7enych »
Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Телеграм для связи, заказы временно не принимаю.

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 022
  • Благодарностей: 768
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
Мефодий не может достучаться до форума, просил выложить.

Исправления:
корректно отрабатывает запись в случае,
если порт уже открыт, как это происходит в FocusMax.
Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Телеграм для связи, заказы временно не принимаю.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
Протестировал новые драйвера. Работоспособность записи во флаш зависит от метода нажимания кнопок в FocusMax.
Рассмотрим способ, которым пользоваться нелогично с точки зрения пользователя, но который работает. Выбираем в FocusMax меню system , в гипертерминале видим, что в этом меню циклически идет команда #S#. Никому не мешает пусть идет. Затем нажимаем кнопку Select, как будто мы хотим сменить драйвер. Выбираем естественно наш, нажимаем properties и  заполняем окошки. При этом FocusMax пишет, что он с устройством не связан – disconnect.  Ставим галку записи и нажимаем OK. В гипертерминале видим, что Прошла команда #S#, Затем 8 раз #W#, затем #E#. Т.Е. мы заполнили флаш и шкалу контроллера. FocusMax все еще not connect. Затем нажимаем OK. Если FocusMax сам конектиться, то видим, что проходит команда #C#, затем #S#, и #T#. Все работает.

Теперь рассмотрим другой случай. Входим в меню system и нажимаем setup. Сразу попадаем в наш драйвер, заполняем окошки, ставим галку и нажимаем OK.  Видим, что проходит команда #C#, затем #S#, и #T#. Т.Е. при таком раскладе нет модификации флаш и шкалы фокусера.

Второй замеченный недочет. В jog focuser при изменении направления движения не происходит модификация окошка position на первом шаге. Т.Е. например мы шли по 10 шагов нажимая кнопку out и дошли до положения 1000. Затем нажали IN, контроллер по честному встал на 990, а в окошке position по прежнему стоит 1000. При повторном нажатии кнопки содержание экранчика и окошка сравниваются – 980. При изменении направления движения команда #S# не подается – видно в гипертерминале..

Пожелания. При длительных перемещениях содержимое окошка position не меняется. При нажатии стоп выдается сообщение – Your focuser does not support user stop. Focuser is now moving.


Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
Второй замеченный недочет. В jog focuser при изменении направления движения не происходит модификация окошка position на первом шаге. Т.Е. например мы шли по 10 шагов нажимая кнопку out и дошли до положения 1000. Затем нажали IN, контроллер по честному встал на 990, а в окошке position по прежнему стоит 1000. При повторном нажатии кнопки содержание экранчика и окошка сравниваются – 980. При изменении направления движения команда #S# не подается – видно в гипертерминале..

   Данная ошибка пропадает при включении чекбокса в драйвере - Check for low speed.
   
   А как мы переходим в режим авто из драйвера?

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 022
  • Благодарностей: 768
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
Пожелания. При длительных перемещениях содержимое окошка position не меняется. При нажатии стоп выдается сообщение – Your focuser does not support user stop. Focuser is now moving.

Для работы кнопки Stop надо менять работу плагина. Он должен запускать движение и сразу выходить из функции MoveTo, а не ждать конца движения. При этом плагин сам должен ждать прихода "*" и переключать внутренний флаг IsMoving в false.

Кстати, сам фокусер во время исполнения команды #Inn# выполнит-ли команду остановки?

Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Телеграм для связи, заказы временно не принимаю.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Правильное замечание, нет не выполнит, такой команды нет. По получению команды контроллером в фоновой работе взводится счетчик равный нужному числу шагов и активируется переменная, та же, что и при нажатии кнопки. Переменная будет активной, пока счетчик не будет исчерпан. Т.Е. программа работает так, как будто нажата кнопка соответсвующего перемещения. Если надо  команду STOP напишу. Совсем несложно, просто не хотелось бы плодить слишком много прошивок, путаница будет.
« Последнее редактирование: 09 Ноя 2007 [15:31:27] от Александр Л. »

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 022
  • Благодарностей: 768
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
   Правильное замечание, нет не выполнит, такой команды нет. По получению команды контроллером в фоновой работе взводится счетчик равный нужному числу шагов и активируется переменная, та же, что и при нажатии кнопки. Переменная будет активной, пока счетчик не будет исчерпан. Т.Е. программа работает так, как будто нажата кнопка соответсвующего перемещения. Если надо  команду STOP напишу. Совсем несложно, просто не хотелось бы плодить слишком много прошивок, путаница будет.

Тогда другой вариант - если во время движения послать команду #I00# - остановится? (она вроде должна будет этот счетчик обнулить)
« Последнее редактирование: 09 Ноя 2007 [15:52:40] от Ivan7enych »
Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Телеграм для связи, заказы временно не принимаю.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Остановиться, но поскольку не предполагалось, что кто-то будет посылать такие команды, то ответ, т.е. конец операции на эту команду I00 или O00, получен не будет.
  Можно дописать, но опять таки жду общего согласованного решения.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
Правда можно послать команду I(01)(00), т.е. на один шаг переместиться, тогда все получится. Лучше выбрать нужные команды перемещения на один шаг, такие, чтобы люфт лишний раз не отрабатывался, чтобы время не терять.

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 096
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Это почему не остановится? Останавливался же! :FQ# И индикация на экране правильная была!
Может будет достаточно ответ выдавать?
« Последнее редактирование: 09 Ноя 2007 [18:49:36] от Дядя Вова »
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Суворов Владимир

  • Гость
Вот нашел прожект. Может кто смотрел? Вроде все есть и ascom драйвер тоже:
http://www.philip.davis.dsl.pipex.com/telescope.htm

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Прошу прощения за то что вчера не смог быть на форуме ...
Однако у дочки не каждый день бывает День Рождения - суетился весь день.
Некоторые замечания :

- по-поводу команды СТОП. Эту команду пытался реализовать через #:FQ#, однако
  вариант не работает из-за особенностей прошивки. Стоп проходит, но так как счетчик
  шагов не обнулился сразу происходит перезапуск до обнуления счетчика. По-большому
  счету команда СТОП актуальна для режима LX200. Для фокусера с заданной длиной пере-
  хода она, на мой ИМХО, не нужна ...

- по-поводу неправильного отображения положения в плагине FocusMax. Конструкция
  драйвера ASCOM не предусматривает переменную в которой хранится положение фокусера.
  Запрос положения выполняется вызовом метода GetPosition() (Иван не даст соврать ...). При
  выполнении команды Move(X) происходит корректная установка счетчика. То, что плагин
  иногда выдает неверное положение (в частности при смене направления) есть вина самого
  плагина. Я, например, не могу его заставить выполнить команду запроса положения. Если
  проверить работу драйвера в МаксимкеДЛ, то можно увидеть, что программа корректно
  запрашивает положение и верно его отображает.

- по-поводу записи во флеш при имеющемся подключении к фокусеру. Последняя выложенная
  модификация драйвера записывает при любом состоянии подключения. Логика работы
  изменена и имеет такой вид :
  1) Проверяем, открыт ли порт.
  2) Если открыт, устанавливаем переменную для исключения его закрытия после записи.
  3) Если порт закрыт, открываем его.
  4) Производим запись во флеш (проверено в ручном режиме и псевдо-автомате (FE во флеш))
  5) Если порт был закрыт до вызова диалога - закрываем его.
  6) Если порт был открыт - сбрасываем буферы порта и оставляем его открытым.
  Я проверял запись в обоих режимах (в FocusMax) - вроде работает и так и так.
  Поковыряю истчо ...

- по-поводу шифта=1 при реально заданном в 5000 - пока не смотрел. Через пол-часа гляну и
  отчитаюсь ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Второй замеченный недочет. В jog focuser при изменении направления движения не происходит модификация окошка position на первом шаге. Т.Е. например мы шли по 10 шагов нажимая кнопку out и дошли до положения 1000. Затем нажали IN, контроллер по честному встал на 990, а в окошке position по прежнему стоит 1000. При повторном нажатии кнопки содержание экранчика и окошка сравниваются – 980. При изменении направления движения команда #S# не подается – видно в гипертерминале..

   Данная ошибка пропадает при включении чекбокса в драйвере - Check for low speed.
   

Этот чек-бокс былл введен исходя из того, что подразумевалось руление как на High так и на
Low Speed фокусера. Его действие приводит к изменению длительности тайм-аута для функции
перехода в заданную позицию.

Как это работает :
- при сброшенном чек-боксе внутренняя переменная инициализируется значением большей
  скорости, при установленном - меньшей (например 200 и 20, соответственно).
- при выполнении команды перехода перед запуском движения вычисляется тайм-аут как
  удвоенное ожидаемое время перехода (2*(Длина перехода/скорость шагания) ).
- вместе с   началом движения устанавливается флаг "Идет движение". Максимка, видя этот
  флаг, не допускает перезапуска движения и не опрашивает положение до его окончания.
- если за   время тайм-аута получен сигнал подтверждения - сбрасывается флаг движения и
  программа может загружать положение по своему желанию.
- если такое подтверждение не получено и тайм-аут истек - происходит генерация ошибки
  отключения фокусера.

Так как работа пока идет всегда на большей скорости, установка флага меньшей скорости
эффективно ведет к уменьшению тайм-аута в N-цать раз (если 200 и 20, то в 10 раз). Есть
вероятность того, что программа игнорирует ошибку тайм-аута и вместо этого (или из-за этого)
запрашивает положение фокусера и получает верное положение.

 Можно, конечно, не устанавливать флаг "Идет движение", но это не есть полит-корректно ...
Все-таки драйвер должен поддерживать стандарт. Для того ASCOM-стандарт и был разработан.

« Последнее редактирование: 10 Ноя 2007 [10:07:12] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 684
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
Прошу прощения за то что вчера не смог быть на форуме ...
Однако у дочки не каждый день бывает День Рождения - суетился весь день.
Некоторые замечания :
 

   Мефодий, поздравляю Вас и Вашу жену c днем рождения дочери  :D.


- по-поводу команды СТОП. Эту команду пытался реализовать через #:FQ#, однако
  вариант не работает из-за особенностей прошивки. Стоп проходит, но так как счетчик
  шагов не обнулился сразу происходит перезапуск до обнуления счетчика. По-большому
  счету команда СТОП актуальна для режима LX200. Для фокусера с заданной длиной пере-
  хода она, на мой ИМХО, не нужна ...
 

  Команда #:FQ# не остановит фокусер после подачи команды перемещения на N шагов.
Дело в том, что контроллер разрабатывался несколько сумбурно. Т.Е. поначалу он был задуман просто как некоторое устройство с кнопками управления. Затем возникла мысль подключить к нему RS232 с командами LX200, затем термодатчик, затем появилась мысль сделать термокомпенсацию, затем появился новый набор команд, для того, чтобы была возможность управления дополнительными функциями, он был отлажен и дополненен только сейчас. Некоторые наслоения одного на другое, заплатки иногда вызывают некоторую нелогичность работы и избыточность кода.
 Не нужен стоп, так не нужен, я не против.

- по-поводу неправильного отображения положения в плагине FocusMax. Конструкция
  драйвера ASCOM не предусматривает переменную в которой хранится положение фокусера.
  Запрос положения выполняется вызовом метода GetPosition() (Иван не даст соврать ...). При
  выполнении команды Move(X) происходит корректная установка счетчика. То, что плагин
  иногда выдает неверное положение (в частности при смене направления) есть вина самого
  плагина. Я, например, не могу его заставить выполнить команду запроса положения. Если
  проверить работу драйвера в МаксимкеДЛ, то можно увидеть, что программа корректно
  запрашивает положение и верно его отображает.

   При установке флажка медленного перемещения счетчики совпадают всегда.



- по-поводу записи во флеш при имеющемся подключении к фокусеру. Последняя выложенная
  модификация драйвера записывает при любом состоянии подключения. Логика работы
  изменена и имеет такой вид :
  1) Проверяем, открыт ли порт.
  2) Если открыт, устанавливаем переменную для исключения его закрытия после записи.
  3) Если порт закрыт, открываем его.
  4) Производим запись во флеш (проверено в ручном режиме и псевдо-автомате (FE во флеш))
  5) Если порт был закрыт до вызова диалога - закрываем его.
  6) Если порт был открыт - сбрасываем буферы порта и оставляем его открытым.
  Я проверял запись в обоих режимах (в FocusMax) - вроде работает и так и так.
  Поковыряю истчо ..

  Еще раз проверю.


Этот чек-бокс былл введен исходя из того, что подразумевалось руление как на High так и на
Low Speed фокусера. Его действие приводит к изменению длительности тайм-аута для функции
перехода в заданную позицию.

Как это работает :
- при сброшенном чек-боксе внутренняя переменная инициализируется значением большей
  скорости, при установленном - меньшей (например 200 и 20, соответственно).
- при выполнении команды перехода перед запуском движения вычисляется тайм-аут как
  удвоенное ожидаемое время перехода (2*(Длина перехода/скорость шагания) ).
- вместе с   началом движения устанавливается флаг "Идет движение". Максимка, видя этот
  флаг, не допускает перезапуска движения и не опрашивает положение до его окончания.
- если за   время тайм-аута получен сигнал подтверждения - сбрасывается флаг движения и
  программа может загружать положение по своему желанию.
- если такое подтверждение не получено и тайм-аут истек - происходит генерация ошибки
  отключения фокусера.

Так как работа пока идет всегда на большей скорости, установка флага меньшей скорости
эффективно ведет к уменьшению тайм-аута в N-цать раз (если 200 и 20, то в 10 раз). Есть
вероятность того, что программа игнорирует ошибку тайм-аута и вместо этого (или из-за этого)
запрашивает положение фокусера и получает верное положение.

 Можно, конечно, не устанавливать флаг "Идет движение", но это не есть полит-корректно ...
Все-таки драйвер должен поддерживать стандарт. Для того ASCOM-стандарт и был разработан.


  Микропрограмма написана так, что перемещение на N шагов будет идти с большей скоростью. Не вижу в этом какого либо недостатка. Когда управление осуществляется как для ДПТ – это нужно, если же Мы управляем шаговым двигателем это излишество. Впрочем можно поменять скорость во флаш памяти на любую величину.


Посидел в субботу вечерок и дополнил микропрограмму программным энкодером.
Что сделано.
Опять введена многозначность, но на сей раз кнопки RESET. При ее кратковременном нажатии происходит обнуление счетчика шагов, хотя само изменение состояния шкалы происходит через пару секунд.
  При нажатии и удержании - включение и выключение программного энкодера. В верхней строке индикатора появляются подсказки – Fok. encoder  On и  Fok. Encoder Off.       Как пользоваться режимом. Нужно отмотать фокусер в положение к объективу, обнулить счетчик шагов, затем отмотать фокусер в предельное положение от объектива и включить Encoder удерживая кнопку RESET до появления надписи Fok. Encoder On. При этом происходит запоминание как самого режима, так и значения предельного положения фокусера во флаш.
    Включение и выключение энкодера производится только в ручном режиме. После включения энкодера как в ручном, так и в автоматическом режиме запрещается перемещения фокусера в положения менее нуля и больше максимального. Запрещается также обнуление шкалы. Через две секунды после любого перемещения фокусера шаговым двигателем происходит запоминание счетчика шагов во флаш памяти. После выключения и последующего включения питания счетчик шагов считывается из флаш.
   Для программной совместимости с драйвером, при включенном энкодере запрещается работа команды записи счетчика шагов из драйвера. Текст программы рассчитан под последнюю версию WINAVR, но место, увы, опять закончилось.


Оффлайн Pavels

  • *****
  • Сообщений: 1 729
  • Благодарностей: 47
    • Skype - pavels001
    • Сообщения от Pavels
С какими программами должен работать ASCOM-драйвер ?
Что за файл avr71.c ?
SW 120EDx0.85,SW 80EDx0.85,EQ6 Pro belt mod,QHY12,QHY168M,гид QHY5IIL,,FMC 7х50

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 096
  • Благодарностей: 97
    • Сообщения от Дядя Вова
С какими программами должен работать ASCOM-драйвер ?
Что за файл avr71.c ?
Павел, извините, но Вы справиваете о том, что написано выше...
avr71.hex - имя флэш-файла, так у Александра исторически сложилось. По моим наблюдениям, корни этого здесь http://forum.radiospec.ru/index.php?s=d5d0fdf43b044945db794564789aad3c&act=Print&client=printer&f=30&t=5612
Работает с ДСЛРфокус, МаксимДЛ
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE