Zahlavi

Выберите язык

Описание управляющей программы версии 1.3.3

Важное предупреждение: Версия управляющей программы 1.3.3 предназначена для HW1.0. Его нельзя использовать для новой версии HW2.x или любой более поздней версии. Причина в другом использовании выводов GPIO в первой конструкции!

Скачать программу можно здесь. Разархивируйте файл. Используя ftp-клиент, скопируйте содержимое в каталог /home/pi/ на Raspberry Pi. Это создаст каталог satprowler с необходимыми подкаталогами и файловой структурой, как описано в статье «Общие принципы Python». Согласно этой статье, вы сможете запустить программу на Raspberry Pi. Я рекомендую сначала использовать режим терминала. Убедившись, что программа работает корректно, вы можете перейти к постоянной работе. В обоих случаях активируется веб-сервер, который может обмениваться данными с любым веб-браузером.

1) Использование программы
Программа используется путем подключения к ее веб-серверу на Raspberry Pi с помощью любого браузера с ПК. Я использую Google Chrome, в котором все элементы управления отображаются корректно. Введите в адресную строку

http://192.168.xxx.xxx:8080

Цифры 192.168 означают доступ к вашей локальной (домашней) сети, где веб-браузеры не требуют зашифрованной связи https. xxx.xxx — это адрес вашего Raspberry Pi. Номер 8080 — это порт по умолчанию, который прослушивает сервер. После подключения в вашем браузере появится следующая страница.  ProgramThumb

Рис. 1 - Пользовательский интерфейс программы

Управление позиционером разделено на две желтые панели. Верхний используется для непосредственного ручного управления двигателями, нижний содержит предустановки и управление ими. Ручное управление имеет отдельную зеленую секцию для каждого двигателя.

Раздел «Азимут» имеет две кнопки и окно с текущим положением. Двигатель AZ вращается, пока нажата кнопка. Позиция должна находиться в диапазоне от 0 до 36 000. Настройка высоты идентична. Настройка Skew немного сложнее. Прежде всего, вам необходимо расширить HW1.0 модулем серводвигателя. Основная функция — поворот однополярного LNB на 90°. Это представляет собой переключение полярности Горизонтальная/Вертикальная, соответственно Левая/Правая. Это обеспечивается кнопками H/L и V/R. Но для разных азимутов к этим двум базовым позициям необходимо добавить значение Skew. И устанавливается клавишами со стрелками влево или вправо. В качестве серводвигателя я попробовал Corotor Chaparral для C-диапазона и поляризатор CSP 1210 C.

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

Если нам нужно запрограммировать новую предустановку, мы сначала устанавливаем правильное положение вручную. В верхних окнах Позиция и Название спутника пишем необходимые данные. Затем нажимаем кнопку «Store mem». Это активирует режим записи в предустановку — эта кнопка становится красной. Затем мы нажимаем кнопку настроек, в которой хотим сохранить текущее состояние. При этом все данные из ручной панели копируются в выбранный пресет. При этом описание кнопки предустановки и ее цвет изменятся на зеленый. Это означает, что используется предустановка. Программирование пресета не проверяет, был ли этот пресет пустым или уже запрограммирован. Это позволяет напрямую заменять старые предустановленные данные новыми. Но будьте осторожны, чтобы случайно не перезаписать другой префикс.

Если мы хотим просто удалить пресет, нажимаем кнопку «Clear mem». Это активирует режим удаления — эта кнопка станет красной. Затем нажимаем кнопку настроек, и все сохраненные данные будут удалены. При этом цвет кнопки предустановки меняется с зеленого на серый. Это означает, что приставка бесплатна.

Если мы по ошибке нажали кнопку «Store mem» или «Clear mem», нажмите ее еще раз. Это отменит активированный режим.

В программе подготовлена ​​еще одна часть, которая еще не завершена. Если нажать мышкой на любой винт, откроется страница сервиса. Здесь можно будет установить нулевые положения азимута и угла места.

Если вы хотите сейчас установить нулевые положения азимута и угла места, вам придется пока использовать терминальный режим программы. Значения переключателей AZOrigin и ELOrigin также отображаются в терминале при ручном управлении двигателями. Сначала вручную вращайте двигатель на восток, пока значение AZOrigin не изменится с 1 -> 0. В этот момент остановите двигатель как можно быстрее. Затем вручную поверните двигатель на запад. При изменении значения AZOrigin с 0 -> 1 счетчик азимута автоматически сбрасывается. Нулевая точка возвышения устанавливается таким же образом. Сначала вручную вращайте двигатель вниз, пока значение ELOrigin не изменится с 1 -> 0. В этот момент остановите двигатель как можно быстрее. Затем вручную поверните двигатель вверх. Когда значение ELOrigin изменяется с 0 -> 1, счетчик высоты автоматически сбрасывается.

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

2) Пользовательские модификации программы

Запуск программы на Raspberry Pi означает всего лишь запуск веб-сервера. Сам сервер ничего не делает, он просто ждет команд пользователя. По умолчанию они ожидаются на порту 8080. Если вы хотите изменить этот порт, откройте файл satprowler.py в текстовом редакторе и прокрутите его до конца. Найдите там строку

app.run(host='0.0.0.0', port=8080, debug=True)

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

Для тех, кто не имеет опыта работы с языком Python, необходимо подчеркнуть одну его особенность. Пробелы в начале строк имеют функцию разделения кода на отдельные блоки. Если вы измените количество ведущих пробелов, не зная, что делаете, ваша программа выйдет из строя и не запустится. Вот почему вам придется использовать текстовый редактор, который больше ничего не добавит в файл без вашего ведома. Вы не можете использовать Word из Office. Я использую программу PSPad, которая умеет различать текст по цвету в зависимости от расширения файла и тем самым делать его более понятным. Скачать PSPad можно здесь.

Еще один файл, который вы можете редактировать в текстовом редакторе, — это config.ini. В этом файле хранятся данные отдельных пресетов. Пресеты имеют обозначения от [mem01] до [mem80]. Количество пресетов невозможно просто расширить, добавив в этот файл дополнительные элементы. Также необходима их поддержка путем модификации программы. Каждая предустановка содержит данные согласно следующей таблице.

 Элемент  Важность  Диапазон значений
 [mem01]  Обозначение префикса, Не менять  mem01 ÷ mem80
 posaz  положение двигателя AZ   0 ÷ 36 000
 posel  положение двигателя EL  0 ÷ 32 000
 skew  положение сервопривода1  500 ÷ 2500
 satpos  обозначение должности (предпочтения)  Текст UTF8, 7 символов.
 satname  обозначение спутника  Текст UTF8, 43 символов.

 

После ручного изменения содержимого файла config.ini программу satprowler.py необходимо перезапустить.Если значение posaz и posel равно нулю, программа помечает такую ​​настройку как пустую (кнопка настройки имеет серый цвет). Первая запись [По умолчанию] содержит текущее состояние позиционера. Программа перезаписывает его в момент остановки каждого двигателя. Если вы измените его вручную, синхронизация между заданными данными и желаемым положением позиционера будет потеряна. В отличие от пресетов, запись [По умолчанию] также имеет пункт полярности, где хранится информация о текущей установленной поляризации.

У вас не будет причин вмешиваться в работу других файлов. Все текстовые файлы программы находятся в режиме кодировки текста UTF-8.

Важное предупреждение: Python — это язык сценариев. Запуск программы не гарантирует корректную работу всех ее частей. При любых экспериментах следует учитывать, что двигатели ЭПС-203 не имеют концевых выключателей. В случае сбоя программы при работающем каком-либо двигателе НЕОБХОДИМО как можно быстрее отключить источник 24В. Поэтому проводите все свои модификации с осторожностью и постоянно проверяйте состояние моторов ЭПС-203.

3) Известные ошибки программы

  • Здесь я должен указать на одну важную ошибку в программе, которую я еще не исправил. Применяется к ручному управлению двигателями азимута и угла места. Двигатели управляются двумя отдельными командами. Включение двигателя представляет собой нажатие кнопки управления нажатием левой кнопки мыши. Выключить двигатель означает отпустить ту же кнопку управления, т.е. отпустить левую кнопку мыши над этой кнопкой управления. При нажатии на кнопку управления мотор запустится, затем отведите мышку от кнопки и отпустите левую кнопку мыши, мотор не остановится. Нажатие и отпускание левой кнопки мыши необходимо производить над одной и той же кнопкой управления, чтобы двигатель после команды на включение получил команду на выключение. Если вам случится «навести» мышь в другое место, нажимая кнопку, вам придется снова нажать использованную кнопку. При этом на кнопку управления будет отправлена ​​вторая команда, и двигатель остановится.
  • Двигатели пока управляются не одновременно, а последовательно. Это означает, что нажатие на предустановку сначала установит азимут, а затем высоту. Параллельное программирование потоков, т.е. одновременное управление обоими моторами, я пока изучаю.
  • Страница сервиса пока носит лишь символический характер. Его функционал будет дорабатываться позже.

No comments

Leave your comment

In reply to Some User