Add readme for mmpp_new & refresh russian documentation

This commit is contained in:
eddyem
2019-03-18 12:22:50 +03:00
parent 13467035d6
commit feb6463d8f
6 changed files with 109 additions and 60 deletions

Binary file not shown.

View File

@@ -185,33 +185,54 @@ Standa,
отключения питания эту процедуру проводить не нужно.
Для удобства управления устройствами MMPP разработана утилита
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}
\lstref{mmppcontrman}.
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}. Краткий
перечень параметров утилиты:
\def\t#1{{\ttfamily #1}}
\begin{description}
\item[\ttfamily -A, --absmove] --- абсолютное движение, данный параметр используется для задания абсолютной
величины количества шагов (аргументы \t{-L} и \t{-l}) или угла в градусной мере (аргументы \t{-R} или
\t{-r}), без этого параметра подразумевается задание аргумента относительно текущего положения;
\item[\ttfamily E, --reset] --- выполнить программный сброс заданного контроллера, для сброса обоих
контроллеров необходимо указать: \t{-E1 -E2};
\item[\ttfamily -L, --lin1=arg] --- переместить линейный транслятор поляроида на заданное количество шагов;
\item[\ttfamily -R, --rot1=arg] --- повернуть поляроид на заданный угол (в градусной мере);
\item[\ttfamily -S, --stop] --- прекратить движение (оба контроллера получают сигнал остановить любое
движение);
\item[\ttfamily -a, --sendraw=arg] --- отправить неформатированные <<сырые>> данные в порт, например, для
передачи команд или получения значений, выходящих за рамки стандартных аргументов утилиты;
\item[\ttfamily -b, --baudrate=arg] --- скорость связи (например, 115200), по умолчанию ее значение "--- 9600;
\item[\ttfamily -d, --comdev=arg] --- название устройства последовательного порта, \t{/dev/ttyUSB0} по
умолчанию;
\item[\ttfamily -h, --help] --- отображение справки по параметрам;
\item[\ttfamily -l, --lin2=arg] ---переместить линейный транслятор волновой пластины на заданное количество
шагов;
\item[\ttfamily -p, --pidfile=arg] --- название pid-файла (по умолчанию "--- \t{/tmp/MMPP\_control.pid});
\item[\ttfamily -q, --quiet] --- <<тихий>> режим для вызова из внешних программ (на стандартный вывод
отображается лишь необходимый минимум информации в виде <<параметр=значение>>, стандартный поток ошибок
отображается без изменений);
\item[\ttfamily -r, --rot2=arg] --- повернуть волновую пластину на заданный угол (в градусной мере);
\item[\ttfamily -s, --status] --- отображение текущего состояния фотометра;
\item[\ttfamily -t, --temp] --- отображение примерной температуры обоих микроконтроллеров;
\item[\ttfamily -w, --wait] --- ожидание завершения всех движений, заданных в предыдущих запусках утилиты с
<<асинхронным>> параметром \t{-y};
\item[\ttfamily -y, --async] --- <<асинхронное>> движение: сразу после передачи команды движения утилита
завершается, не ожидая окончания движения.
\end{description}
Коды возврата утилиты заданы в начале файла \t{main.c}. Они имеют следующее значение:
\begin{description}
\item[0, RET\_ALLOK] нормальное завершение работы;
\item[1, RET\_NOTFOUND] при запуске утилиты не найдено ни одного отвечающего контроллера, либо не получен
ответ от искомого контроллера при передаче команды;
\item[2, RET\_ONLYONE] при запуске обнаружен лишь один контроллер;
\item[3, RET\_COMMERR] ошибка связи или формата передаваемых \slash принимаемых данных;
\item[4, RET\_CANTINIT] невозможно инициализировать контроллер установкой на нулевой концевик;
\item[5, RET\_WAITERR] ошибка, возникшая во время ожидания завершения выполнения предыдущих передвижений;
\item[9, RET\_ERROR] прочая ошибка (из libsnippets);
\item[255, RET\_HELPCALL] запуск утилиты с параметром \t{-h}.
\end{description}
\begin{lstlisting}[caption=Краткая справка по параметрам {\tt MMPP\_control},label=mmppcontrman]
-A, --absmove абсолютное движение (без этого флага заданное
количество шагов рассматривается как
относительное)
-L, --lin1=arg перемещение линейного транслятора поляроида на
N шагов
-R, --rot1=arg вращение поляроида на заданный угол (в градусах)
-S, --stop прекратить любое движение
-a, --sendraw=arg отправить в порт заданную управляющую
последовательность символов напрямую
-d, --comdev=arg имя устройства последовательного порта
-h, --help отобразить данную справку
-l, --lin2=arg перемещение линейного транслятора фазовой
пластины на N шагов
-q, --quiet не отображать никакой информации в stdout
-r, --rot2=arg вращение фазовой пластины на заданный угол
(в градусах)
-s, --status получение состояния устройства
-t, --temp отображение температуры (довольно условной)
микроконтроллеров
-w, --wait ожидание окончания движения узлов (если
предыдущая команда выполнялась с -y)
-y, --async не ожидать окончания движения
\end{lstlisting}
\section{Интерфейс системы управления}
\comment[Тимур]{конфигурационный файл колес}
@@ -662,14 +683,14 @@ PF1 & PUPD &
\subsubsection{Протокол управления}
Управление контроллерами производится по шине UART (8N1, скорость задана в конфигурации, по умолчанию
115200\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
9600\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
Микроконтроллер не обрабатывает принимаемые данные до формирования валидной строки. Символы пробела или
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (число int32). Данный номер
сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь те команды, которые
адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса указывается -1).
Так как вывод данных микроконтроллером при получении широковещательного идентификатора не блокируется, не
рекомендуется использовать широковещательные посылки при наличии более одного устройства на линии связи (кроме
посылок экстренного останова, сброса и т.п.).
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (16-битное беззнаковое
целое). Данный номер сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь
те команды, которые адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса
указывается -1). Так как вывод данных микроконтроллером при получении широковещательного идентификатора не
блокируется, не рекомендуется использовать широковещательные посылки при наличии более одного устройства на
линии связи (кроме посылок экстренного останова, сброса и т.п.).
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
валидна, контроллер возвращает строку <<ALLOK>>. Если команда не распознана, возвращается маркер ошибки
@@ -915,13 +936,39 @@ ESW00 ESW01 ESW10 ESW11 || ESW00 ESW01 ESW10 ESW11
\end{description}
Значение полей описано в пункте <<Геттеры состояния>> на стр.~\pageref{stategetters}.
В <<тихом>> режиме, задаваемом флагом \t{-q},состояние устройства отображается как перечень параметров и их
значений. Например,
\begin{lstlisting}
POLMOTOR0=MOVE
POLSTEPSLEFT0=742
POLPOS0=4558
POLESW00=RLSD
POLESW01=RLSD
POLMOTOR1=MOVE
POLSTEPSLEFT1=7289
POLPOS1=32411
POLESW10=RLSD
POLESW11=RLSD
L4MOTOR0=MOVE
L4STEPSLEFT0=642
L4POS0=4358
L4ESW00=RLSD
L4ESW01=RLSD
L4MOTOR1=MOVE
L4STEPSLEFT1=1542
L4POS1=6458
L4ESW10=RLSD
L4ESW11=RLSD
\end{lstlisting}
Т.е. в данном случае просто копируются значения всех переменных, выдаваемых контроллерами по запросу текущего
состояния, с добавлением префикса \t{POL} для контроллера поляроида и \t{L4} для контроллера фазовой пластины.
\paragraph{Базовые настройки.}\label{MMPP_basesettings}
Параметры текущей конфигурации контроллера можно получить при помощи геттера конфигурации. Например,
\begin{lstlisting}[caption=Базовые настройки контроллеров]
MMPP_control -a 1GC
./MMPP_control -a 1GC
Send raw string: 1GC
Receive:
CONFSZ=36
Receive: CONFSZ=36
DEVID=1
V12NUM=605
V12DEN=94
@@ -942,10 +989,9 @@ USTEPS=16
ACCDECSTEPS=50
DATAEND
MMPP_control -a 2GC
./MMPP_control -a 2GC
Send raw string: 2GC
Receive:
CONFSZ=36
Receive: CONFSZ=36
DEVID=2
V12NUM=605
V12DEN=94