diff --git a/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex b/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex new file mode 100644 index 0000000..2a79771 --- /dev/null +++ b/Documentation_rus/sisupr_short_descr_and_commands_TeX/main.tex @@ -0,0 +1,522 @@ +\documentclass[a4paper,12pt]{extarticle} +\usepackage{listings} +\usepackage{/home/eddy/ed} +\lstset{basicstyle=\small,breaklines=true,language=Octave, + extendedchars=true,aboveskip=1em,belowcaptionskip=5pt, + prebreak = \hbox{% +\normalfont\small\hfill\green{\ensuremath{\hookleftarrow}}}, + postbreak = \hbox to 0pt{% +\hss\normalfont\small\green{\ensuremath{\hookrightarrow}}\hspace{1ex}}, + commentstyle=\color{blue},showspaces=false, + showstringspaces=false,stringstyle=\bfseries\color[rgb]{0.6,0,1}, + numbers=left,numberstyle=\tiny,stepnumber=2, + keywordstyle=\bfseries\color[rgb]{0,0.1,0.5}, + frameround=tttt,frame=trBL,tabsize=4,backgroundcolor=\color[rgb]{.9,.9,1}} +\lstloadlanguages{Octave} +\def\lstlistingname{Листинг} +\def\lstref#1{(см.~листинг~\ref{#1})} +\graphicspath{{./pic/}} +\nocolon +\title{Краткое описание и протокол команд системы управления ИК-спектрометром БТА} +\begin{document} +\maketitle +\section{Краткое описание} +\subsection{Назначение и возможности системы} +Система управления ИК-спектрометром разработана на основе ARM~--~микроконтроллера +STM32F103VET6 (или аналогичного с объемом флеш-памяти не меньше 32\,Кб). + +В базовом режиме система управления способна выполнять следующие \textbf{функции}: +\begin{itemize} +\item \textit{Управление затвором}: программное, ручное (при помощи тумблера) и по сигналу с системы +сбора (подтяжка сигнального контакта к земле). Наименьший приоритет имеет ручное управление затвором +(чтобы избежать блокировки управления затвором при включении прибора с положением тумблера в позиции +<<затвор открыт>>). Электрический импульс на затвор подается лишь в том случае, если +конденсатор в цепи управления затвором заряжен до напряжения не меньше~$20\,$В, в противном случае +накопленного конденсатором заряда будет недостаточно для активации затвора. Постоянная времени +$3RC=0.66\,$с определяет максимальное время полного заряда конденсатора (соответственно, заряд до +напряжения~$20\,$В составит не более~$0.5\,$с), внося ограничение на минимальную экспозицию. +В случае поступления запроса на изменение состояния затвора, когда конденсатор еще недостаточно +заряжен, система управления отложит исполнение запроса до момента зарядки конденсатора. + +Открытие\slash закрытие затвора осуществляется путем коммутации его обмоток к заряженному +конденсатору емкостью~2200\,мкФ посредством H-моста TLE5205. При этом анализируется состояние флага +ошибки моста: при инициализации проверяется, подключен ли затвор (проверка на обрыв); при +управлении затвором анализируется отсутствие короткого замыкания. В случае выявления ошибки +система управления один раз в секунду делает попытку реинициализации затвора, при этом индикатор +открытия затвора мигает, а в консоль управления (если она находится в символьном режиме) выдается +сообщение об ошибке. Как только проблема устранена и затвор успешно инициализирован, индикатор +затвора гаснет. + +Положение затвора контролируется посредством геркона, контакты которого замыкаются миниатюрным +магнитом в полностью открытом состоянии затвора. Если состояние геркона не соответствует состоянию +затвора, система сообщает об ошибке и устанавливает состояние затвора в <<неинициализированный>>. + + +\item \textit{Условное измерение времени работы} (т.к. система управления не имеет в своем составе +часов реального времени, возможно лишь измерение количества тактов, прошедших с момента последнего +сброса). Система имеет два беззнаковых 32-битных счетчика: один служит для измерения количества +условных миллисекунд, прошедших с момента последнего сброса, второй~--- для измерения количества +переполнений первого счетчика (принципиально же это событие маловероятно, т.к. переполнение +счетчика возникнет не раньше, чем через $49.7\,$суток работы системы). + + +\item \textit{Опрос до восьми платиновых терморезисторов} HEL-705 (сопротивление при $0\degr$C +1\,кОм) с выдачей измеренного встроенным 12-битным АЦП сопротивления для последующего преобразования +согласно формуле из руководства (либо экспериментальному калибровочному графику) на персональном +компьютере. +Итоговая точность измерения температуры не хуже $\pm1.5\degr$C. +Преобразование измеренного значения ADU~($v$) в сопротивление в сотых долях Ома~($R$) выполняется +целочисленно по формуле +$$ R_i = \frac{v_i\cdot m_i}{(2^{12} - v_i)\cdot d_i},$$ +где $i$~-- номер канала измерения, $m$~и~$d$~-- калибровочные коэффициенты (вычисляются по +калибровке каждого канала из разложения полученных значений с плавающей точкой в цепные дроби). +По умолчанию (в соответствии с тем, что сопротивление опорного резистора составляет~1\,кОм, по +умолчанию все $m=100000$, $d=1$). + +Согласно документации на используемые платиновые терморезистивные датчики, их сопротивление имеет +следующую зависимость от температуры: +$$ +R = R_0(1+A\cdot T+B\cdot T^2-100C\cdot T^3+C\cdot T^4), +$$ +где +\begin{description} +\item $R_0 = 1000\,$Ом~-- сопротивление датчика при~$0\degr$C; +\item $A=3.81\cdot10^{-3}$; +\item $B = -6.02\cdot10^{-7}$; +\item $C = \begin{cases} + -6.0\cdot10^{-12}&\text{при $T<0\degr C$};\\ + 0&\text{в остальных случаях.} + \end{cases} +$ +\end{description} + +Вычисление температуры можно выполнить путем аппроксимации обратной зависимости, например, таким +скриптом Octave: +\begin{lstlisting} +function Tout = H705(Rin) +% Converts resistance of TRD into T (degrC) + _alpha = 0.00375; + _beta = 0.16; + _delta = 1.605; + T = [-200:0.1:50]; + _A = _alpha + _alpha*_delta/100.; + _B = -_alpha*_delta/1e4; + _C = zeros(size(T)); + _C(find(T<0.)) = -_alpha*_beta/1e8; + rT = 1000.*(1 + _A*T + _B*T.^2 - _C.*T.^3*100. + _C.*T.^4); + Tout = interp1(rT, T, Rin, 'spline') +endfunction +\end{lstlisting} + +\item \textit{Измерение напряжения} на конденсаторе, управляющем затвором, и напряжения +питания~$10\div12\,$В. Напряжение измеряется в сотых долях Вольта, преобразование также выполняется +целочисленным делением, исходя из значений сопротивлений в плечах резисторных делителей, с которых +снимается измеряемое напряжение. Напряжения измеряются по формуле: +$$U_i = v_i\cdot\frac{m_i}{d_i},$$ +где $U_i$~-- измеряемое напряжение в сотых долях Вольта, остальные коэффициенты аналогичны +измерению сопротивления терморезисторов. + +По умолчанию коэффициенты являются наилучшим (через цепные дроби) приближением коэффициентов: +$\frac{4700}{56000}\approx\frac{26}{25}$ для напряжения на конденсаторе затвора (резисторы в плечах +имеют сопротивление $4.7\,$кОм и~$56\,$кОм) и $\frac{4700}{12000}\approx\frac{2}{7}$ для напряжения +питания (соответственно, $4.7\,$кОм и~$12\,$кОм). + + +\item \textit{Смену калибровочных коэффициентов} (коэффициенты хранятся в перезаписываемом блоке +флеш-памяти микроконтроллера). Для измерения коэффициентов рекомендуется произвести измерение +реальных значений сопротивления в каждом канале измерения температуры, а также напряжений на +конденсаторе затвора и питания, вычислить поправочный множитель, определить значения новых +коэффициентов на основе текущих значений (система управления позволяет отобразить все величины, +хранящиеся в перезаписываемом блоке флеш-памяти микроконтроллера). + + +\item \textit{Управление шаговыми двигателями} линейных трансляторов и турелей спектрометра. +Аппаратно заложено ограничение на движение линейных трансляторов (при нахождении на концевом +выключателе транслятор можно перемещать лишь в противоположную от концевика сторону). Все шаговые +двигатели можно вращать на определенное количество шагов относительно текущей позиции. После +останова шагового двигателя система сообщает его текущее условное положение в количестве шагов (шаги +отсчитываются в условном положительном направлении вращения шаговых двигателей, для турелей от +позиции~\No\,1, для линейных трансляторов~--- от концевика <<минус>>). Для однозначного сброса +счетчиков позиций шаговых двигателей необходимо перед началом работы установить все турели в +позиции~\No\,1, а все линейные трансляторы сместить в <<минусовую>> область до упора в концевик. + +В связи со схемотехническими ошибками реализации текущей версии системы управления во избежании +возгорания драйверов шаговых двигателей программно запрещено управление более чем двумя двигателями +одновременно, причем, оба двигателя не могут находиться в одной и той же группе (первая группа~--- +турели, вторая группа~--- линейные трансляторы). При длительной работе двигателей их драйверы +нагреваются, поэтому желательно установить радиаторы на драйверы шаговых двигателей. + +По умолчанию скорости работы двигателей первой группы устанавливаются в значение~333\,шага в +секунду, а двигателей второй группы~--- в~500 шагов в секунду. Это соответствует одному обороту +турели за 6~секунд и движению линейных трансляторов со скоростью $1.25\,$мм/с (полное перемещение +транслятора дифракционных решеток и маски зрачка за 2~минуты, полное перемещение фокусировочного +транслятора за 8 секунд). Однако, т.к. при старте шаговых двигателей используется разгон (для +увеличения стартового момента силы в течение первых 64~шагов двигатель линейно ускоряется от +$1/16\,$базовой скорости), а также турели приостанавливаются на 50\,мс в каждой фиксированной +позиции (для точного определения положения), полные перемещения занимают несколько большее время. + +Для ускорения времени вращения турелей из одного положения в другое система управления выбирает +кратчайшую траекторию (т.е. турель с шестью позициями при переводе из позиции~<<1>> в позицию~<<2>> +будет вращаться по направлению $1\arr2$, а при переводе из позиции~<<1>> в позицию~<<6>>~--- в +направлении $1\arr6$). <<Положительные>> направления вращения турелей не совпадают, а определяются +расположением кодирующих магнитов. + +\item \textit{Световую индикацию}. Зеленый светодиод в верхней части стенки корпуса системы +управления со стороны тумблеров отображает готовность системы к работе (прошла вся инициализация и +система ожидает ввода команд), красный светодиод отображает открытое состояние затвора (в случае +обрыва или короткого замыкания этот индикатор мигает). Также в нижней части панели размещены три +светодиода для пассивной индикации наличия питающих напряжений (зеленый~--- наличие напряжения +$+12\,$В, желтый~--- наличие напряжения $+36\,$В) и подключению этих напряжений к силовому +коммутационному разъему микроконтроллера (красный светодиод). +\end{itemize} + + + + +В \textbf{расширенном режиме} (часть функций еще не реализована) система способна также: +\begin{itemize} +\item \textit{Проводить мониторинг температур} с точностью не хуже~$\pm0.3\degr$C при помощи +внешнего блока АЦП (AD7794) с 16-канальными аналоговыми коммутаторами (ADG506A либо NX3L4051; вторая +система, позволяющая повысить точность измерений до~$\pm0.05\degr$C, находится в стадии разработки). +Повышение точности измерений достигается в данном случае за счет использования 24-битного +внешнего АЦП и использования алгоритма измерения со сменой полярности опорного тока\footnote{Henry +He, Minimizing Errors in Multiplexed 3-Wire RTD Data-Acquisition Systems.// Analog Dialogue~-- +47-09,~-- September~2013.}. + +Так как данный функционал необходим лишь для тестирования температурных режимов криостата, в +повседневном рабочем режиме он использоваться не будет. + + +\item \textit{Измерять температуру внешних элементов} криостата спектрометра и системы управления +при помощи цифровых 1-wire термодатчиков DS18B20/DS18S20 (в стадии разработки). + + +\item \textit{Управлять тремя внешними нагрузками} (потребляемый ток не более 2А при продолжительном +подключении) посредством двух нижних ключей и одного верхнего ключа (с контролем ошибок). Данный +функционал зарезервирован для случая необходимости подогрева корпуса системы управления или +управления прочими силовыми нагрузками. +\end{itemize} + + + + +Подключение к управляющему компьютеру производится посредством: +\begin{itemize} +\item \textit{USB}-соединения (<<виртуальный последовательный порт>>), используемого также для +вывода диагностических сообщений при отладке; +\item соединения через преобразователь \textit{USB$\leftrightarrow$TTL}, используемый для +перепрограммирования микроконтроллера (параметры соединения задаются подключением по USB, по +умолчанию это 115200/8-N-1); +\item соединения через последовательный порт \textit{RS-232} (115200/8-N-1). Система управления +имеет два разъема RS-232: slave (для подключения к компьютеру) и master (для подключения +дополнительных устройств). +\end{itemize} +За исключением соединения по USB (с отладочными возможностями), все остальные порты являются +равнозначными и позволяют управлять спектрометром при помощи одного и того же набора команд. +Возможна реализация проксирования команд между портами master/slave с их перекодированием из одного +формата в другой. + +\subsection{Внешний вид и средства управления и коммутации} +\begin{pict} +\includegraphics[width=0.8\textwidth]{sysboard} +\label{sysboard} +\caption{Печатная плата системы управления} +\end{pict} + +На рис.~\ref{sysboard} изображена печатная плата системы управления, устанавливаемая на стойках в +металлический двухъярусный корпус (в нижнем ярусе размещены блоки питания 12\,В и~36\,В, в +верхнем~--- печатная плата). Для коммутации с внешними управляющими устройставми используются +последовательный порт (справа вверху, на схеме обозначен как \textbf{RS-232 (комп.)}) и USB (в +правой нижней части рисунка). Подключение вторичного исполнительного устройства (например, +калибровочной платформы) выполняется при помощи второго последовательного порта (справа внизу, на +схеме обозначен как \textbf{RS-232 (slave)}). + +Остальные разъемы предназначены для подключения индикаторов, датчиков и исполнительных устройств: +\begin{description} +\item[Разъем затвора] --- управление затвором, а также двумя нагрузками, коммутируемыми нижними +силовыми ключами; +\item[SPI] --- подключение внешнего АЦП; +\item[Разъем ТРД] --- подключение восьми платиновых терморезистивных датчиков, установленных + внутри криостата; +\item[Служебный разъем] --- подключение преобразователя \textit{USB$\leftrightarrow$TTL} для +программирования микроконтроллера, а также подключение аналогового мультиплексора при работе с +внешним АЦП; +\item[Разъем передней панели] --- подключение средств индикации и управления затвором, + расположенных на лицевой панели прибора; +\item[Силовой разъем] --- подключение концевых выключателей, датчиков Холла, шаговых двигателей, + источников питания и возможность подключения нагрузки, коммутируемой верхним силовым ключом. +\end{description} + +\begin{pict} +\includegraphics[width=0.8\textwidth]{sisupr_front} +\label{sisuprfront} +\caption{Лицевая панель корпуса системы управления} +\end{pict} + +На рис.~\ref{sisuprfront} изображена лицевая панель системы управления. На ней размещаются (по +обозначению на изображении): +\begin{description} +\item[Питание] --- силовой разъем (220\,В) питания и выключатель (<<включено>> при правом положении + тумблера); +\item[0.75А] --- входной плавкий предохранитель на 0.75\,А, 220\,В; +\item[5А] --- плавкий предохранитель, установленный после блока питания, 5\,А, 12\,В; +\item[+12\,В] --- зеленый светодиод, отображающий наличие питающего напряжения~12\,В; +\item[+36\,В] --- желтый светодиод, отображающий наличие питающего напряжения~36\,В; +\item[нагрузка] --- красный светодиод, позволяющий детектировать подключение цепей <<нижнего>> и + <<верхнего>> ярусов (соединение выходов блоков питания с силовым разъемом системы управления); +\item[Затвор] --- разъем для подключения затвора; +\item[Затвор ручн.] --- тумблер ручного управления затвором (<<открыто>> при правом положении + тумблера); +\item[От системы сбора] --- управляющий сигнал закрытия\slash открытия затвора от системы сбора +(замыкание контактов вызывает закрытие затвора, размыкание~--- открытие); +\item[Система готова] --- зеленый светодиод, отображающий готовность системы управления к работе; +\item[Затвор открыт] --- красный светодиод, светящийся в случае, когда затвор находится в открытом +состоянии; при ошибке затвора (короткое замыкание или обрыв) этот светодиод мигает. +\end{description} + + +\section{Символьный режим управления} +\subsection{Описание} +В символьном режиме управления обработка команд производится посимвольно, символ конца строки не +имеет никакого значения и может быть использован для завершения введенных числовых +последовательностей. + +После реакции на команду система управления (далее~--- СУ) производит эхо введенной команды. Если +введена неправильная команда, вместо эха возвращается вопросительный знак. + +Краткую справку по командам при подключении в терминале можно узнать, нажав \verb'H'. + +Некоторые команды требуют ввода числового значения (в этом случае в списке после команды записано: +\textbf{(число)}), либо даже двух числовых значений (записано \textbf{(число1) (число2)}). +Ввод числа выполняется без эха, для окончания ввода необходимо поместить во входной поток символ, +не являющийся цифрой (например, символ конца строки). После этого введенное число +выводится на экран и микроконтроллер ожидает подтверждения введенного числа (командой \verb'+') +либо отклонением его (командой \verb'-'). Прервать ввод числа можно вводом символа \verb'-' во +время ввода числа, либо вводом любого символа кроме знака <<минус>> или цифры сразу после запроса +на ввод числа. Команды с отметкой \textbf{(служ)} используются лишь в служебных режимах +(калибровка, градуировка и т.п.). + +В случае получения неопознанных команд система управления возвращает символ вопросительного знака. + +\subsection{Список команд символьного режима} +\begin{description} +\item[A] отображение сопротивлений терморезисторов по всем восьми каналам; +\item[B] останов всех двигателей (может также использоваться для получения информации о + текущем положении двигателей в шагах от условного нуля); +%\item[C] +\item[D (служ)] переключение внешнего АЦП в режим двойного преобразования (по умолчанию); +\item[E (число)] состояние концевиков двигателя с указанным номером (если <<число>> выходит за +пределы значения $0\div4$, отображается состояние всех концевиков); +\item[F] отображение всех данных, сохраненных в перезаписываемой области флеш-памяти (калибровочные + коэффициенты); +\item[G] отображение текущего периода тактового генератора шаговых двигателей (в миллисекундах на + шаг); +\item[H (служ)] отображение справки по командам микроконтроллера; +\item[I (служ)] отключение флага инициализации внешнего АЦП; +\item[J (число)] установить турель щелей в указанную позицию (от 1 до 8); +\item[K (число)] установить турель фильтров~\No\,1 в указанную позицию (от 1 до 6); +\item[L (число)] установить турель фильтров~\No\,2 в указанную позицию (от 1 до 6); +\item[M (служ)] включить/выключить мониторинг температур; +%\item[N] +%\item[O] +\item[P (служ)] (в стадии разработки) добавить в систему 1-wire термодатчик; +%\item[Q] +%\item[R] +\item[S (служ)] переключение внешнего АЦП в режим одинарного преобразования (снижение точности, + повышение скорости); +\item[T] отображение условного времени (в миллисекундах) с момента последнего перезапуска; +%\item[U] +%\item[V] +%\item[W] +\item[X (число)] установить период шаговых двигателей приводов линейных трансляторов в заданное + число микросекунд; +%\item[Y] +\item[Z] отображение текущей позиции (в шагах от <<минусового>> концевика или первой +позиции турели) всех шаговых двигателей; +%\item[a] +%\item[b] +\item[c] закрыть затвор; +\item[d (служ) (число1) (число2)] изменить значение коэффициента~$d_i$ ($i={0..7}$~--- + терморезисторы, $i=8$~--- напряжение затвора, $i=9$~--- напряжение питания); +%\item[e] +\item[f] сохранить во флеш-память значения измененных коэффициентов преобразования АЦП; +\item[g (служ) (число)] коэффициент усиления внешнего АЦП; +\item[h] отобразить значение напряжения (в сотых долях Вольта) на конденсаторе затвора; +\item[i (служ)] инициализация внешнего АЦП; +%\item[j] +%\item[k] +%\item[l] +\item[m (служ) (число1) (число2)] изменить значение коэффициента~$m_i$ ($i={0..7}$~--- + терморезисторы, $i=8$~--- напряжение затвора, $i=9$~--- напряжение питания); +%\item[n] +\item[o] открыть затвор; +\item[p] отобразить значение основного ($+12\,$В) напряжения питания в сотых долях Вольта; +%\item[q] +\item[r] повторная инициализация затвора в случае ошибки (обрыв провода, короткое замыкание и т.п.); +\item[s (служ)] отображение значений по восьми каналам внешнего АЦП; +\item[t] отображение текущего состояния затвора (открыт\slash закрыт); +\item[u (служ)] отобразить состояние подключения USB; +%\item[v] +%\item[w] +\item[x (число)] установить период шаговых двигателей приводов турелей в заданное число микросекунд; +%\item[y] +%\item[z] +\item[0..4 (число)] вращать шаговый двигатель с указанным номером на заданное число шагов + (положительное значение числа шагов соответствует вращению в условном положительном направлении, + отрицательное~--- в условном отрицательном). +\end{description} + + + +\section{Строковый режим управления} +\subsection{Описание} +В строковом режиме система управления помещает входные данные в буфер вплоть до обнаружения во +входном потоке символа перевода строки. Далее строка целиком обрабатывается парсером команд, +выполняя заданные действия (либо отображая сообщение об ошибке формата команды). + +Строковый режим предназначен для упрощения ввода команд с более высокого уровня интерфейса системы +управления (отсутствует необходимость подтверждения введенных численных значений, нет возможности +вызвать служебные команды). Данный режим является основным при работе с графическим интерфейсом +системы управления. + +Формат команды в строковом режиме имеет вид \textbf{[ команда параметр ]}, где +\textbf{команда}~--- символ команды (аналогично символьному режиму, ниже приведен подробный список +команд, доступных в строковом режиме), \textbf{параметр}~--- параметр этой команды (если имеется). + +Пробелы после открывающей квадратной скобки и перед закрывающей необязательны. За закрывающей +скобкой должен следовать символ окончания строки. Допускается запись нескольких команд внутри одной +пары скобок, однако предпочтительным является следование правилу <<одна пара скобок~--- одна +команда>>. Параметры команд передаются либо сразу за командой, либо отделяются от нее пробелом, и +представляют из себя целое число в диапазоне \verb'int32_t'. Отсутствие бинарного формата позволяет +не заботиться о порядке следования байт внутри слова, а также в случае необходимости посылать +команды в порт напрямую, из терминала. + +Ответ на введенную команду имеет аналогичный формат. Команда может быть полностью повторена в +ответе, если выполнение действий, заданных этой командой, асинхронно (например, команда <<открыть +затвор>>). В случае возникновения ошибок при исполнении действий, заданных командой, внутри ответа +после символа команды идет слово \textbf{ERR}. Далее расшифровываются возможные ошибки. В случае +неправильного формата команды либо неверно заданных параметров (например, переместить турель +фильтра в позицию~\No\,7 при максимально возможных шести позициях) микроконтроллер не дает никакого +ответа. + + +\subsection{Список команд строкового режима} +Служебные команды (\textbf{служ}) для работы с внешним АЦП позволяют из графического интерфейса +системы управления выполнять мониторинг температурных режимов с высокой точностью. В основной +работе прибора эти команды не используются. + +Режим работы системы управления \textbf{асинхронный}! Это означает, что микроконтроллер отсылает +информацию управляющему компьютеру без запроса от компьютера. Чтобы не пропустить сообщения, +необходимо выполнять неблокирующие операции с портом, к которому подключен микроконтроллер, проводя +периодический поллинг на предмет появления новых сообщений. + +\begin{description} +\item[\hbox{[ A ]}] отображение сопротивлений терморезисторов по всем восьми каналам; ответ команды +имеет вид \textbf{[ A номер сопротивление]}, где \textbf{номер}~-- номер датчика (поочередно от~0 +до~7), \textbf{сопротивление}~-- его сопротивление (в сотых долях Ома); +\item[\hbox{[ B ]}] останов всех двигателей (может также использоваться для получения информации о +текущем положении двигателей в шагах от условного нуля); ответ имеет вид \textbf{[ B номер +(ERR) (HEAT) позиция ]}, где \textbf{номер}~-- номер двигателя (поочередно от~0 до~4), +\textbf{позиция}~-- абсолютная позиция (в шагах) от условного нуля (позиция~1 для турели, +<<минусовой>> концевик для транслятора), флаг ошибки \textbf{ERR} может возникнуть для двигателей с +номерами~$0\div2$ (турели) при останове вне фиксированной позиции (это возможно при аварии +двигателя, датчиков Холла или проскальзывании шестерни, когда за один целый оборот турель не будет +установлена в заданную позицию), флаг ошибки +\textbf{HEAT} возникает в случае перегрева драйвера шаговых двигателей или короткого замыкания его +выходов; +\item[\hbox{[ E номер ]}] состояние концевиков двигателя с указанным номером; ответ команды имеет +формат \textbf{[ E номер значение ]}, где \textbf{значение}~-- дешифрованное значение позиции +концевика (для турелей это номер позиции, для линейных трансляторов~-- номер концевика (1~при +движении в положительном направлении, 2~---~при движении в отрицательном); если в качестве номера +двигателя задано число меньше 0 или больше 4, то отображается состояние всех концевиков; +при перемещении линейных трансляторов или турелей система управления асинхронно генерирует +сообщения, в которых указывается текущее значение позиции; +\item[\hbox{[ G ]}] отображение текущего периода тактового генератора шаговых двигателей (в + миллисекундах на шаг); ответ имеет вид \textbf{[ G T1 T2 ]}, где T1~-- период генератора + двигателей турелей, а T2~-- период генератора двигателей линейных трансляторов; +\item[\hbox{[ I ]} (служ)] отключение флага инициализации внешнего АЦП; ответом является эхо +команды; +\item[\hbox{[ J позиция ]}] установить турель щелей в указанную позицию (от~1 до~8); в случае +верного ввода команды ответом является эхо команды; +\item[\hbox{[ K позиция ]}] установить турель фильтров~\No\,1 в указанную позицию (от 1 до 6); в +случае верного ввода команды ответом является эхо команды; +\item[\hbox{[ L позиция ]}] установить турель фильтров~\No\,2 в указанную позицию (от 1 до 6); в +случае верного ввода команды ответом является эхо команды; +\item[\hbox{[ M ]} (служ)] включить/выключить мониторинг температур; ответ~--- эхо введенной +команды; +\item[\hbox{[ T ]}] отображение условного времени (в миллисекундах) с момента последнего +перезапуска; ответ имеет вид \textbf{[ T ovr cnt ]}, где \textbf{ovr}~-- значение счетчика +переполнения основного таймера, \textbf{cnt}~-- значение основного счетчика (количество условных +миллисекунд с момента последнего рестарта системы); +\item[\hbox{[ X период ]}] установить период шаговых двигателей приводов линейных трансляторов в +заданное число микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в +диапазоне \verb'uint16_t'; +\item[\hbox{[ Z ]}] отображение текущей позиции (в шагах от <<минусового>> концевика или первой +позиции турели) всех шаговых двигателей; +\item[\hbox{[ b ]}] перевести режим ввода в символьный; ответом является эхо команды, после +которого система будет ожидать команды в символьном режиме, перевод в строковый режим будет +выполнен автоматически при первом же появлении знака \verb'[' в начале командной последовательности; +\item[\hbox{[ c ]}] закрыть затвор; ответом является эхо команды, если команда принята (т.е. затвор +инициализирован и находится в противоположном заданному состоянии); +\item[\hbox{[ h ]}] отобразить значение напряжения (в сотых долях Вольта) на конденсаторе затвора; +ответ имеет вид \textbf{[ h напряжение ]}; +\item[\hbox{[ i ]} (служ)] инициализация внешнего АЦП; ответом является эхо команды; +\item[\hbox{[ o ]}] открыть затвор; ответом является эхо команды, если команда принята (т.е. затвор +инициализирован и находится в противоположном заданному состоянии); +\item[\hbox{[ p ]}] отобразить значение основного~($+12\,$В) напряжения питания в сотых долях +Вольта; ответ имеет вид \textbf{[ h напряжение ]}; данное сообщение асинхронно генерируется +системой управления в случае снижения пиковой просадки напряжения ниже 9\,В при получении команды +движения или ниже 7.5\,В при работе шаговых двигателей (в этом случае также генерируется команда +останова всех активных двигателей); +\item[\hbox{[ r ]}] повторная инициализация затвора в случае ошибки (обрыв провода, короткое +замыкание и т.п.); ответом является эхо команды; +\item[\hbox{[ s ]} (служ)] отображение значений по восьми каналам внешнего АЦП; ответ зависит от +текущего состояния АЦП: если АЦП не был инициализирован (или отсутствует), будет произведена +попытка инициализации, а в ответ послано эхо команды, если же АЦП был проинициализирован, то в ответ +приходит восемь сообщений вида \textbf{[ s номер ADU]}, где \textbf{номер}~-- номер +датчика (от~0 до~8), а \textbf{ADU}~-- отсчеты АЦП в условных единицах; +\item[\hbox{[ t ]}] отображение текущего состояния затвора; ответ команды имеет вид \textbf{[ t +статус (reed состояние) ]}, где \textbf{статус} может иметь одно из следующих значений: + \begin{description} + \item[testing] затвор находится в состоянии проверки на отсутствие обрыва; + \item[ready] затвор инициализирован и готов выполнять команды; + \item[opened] затвор был открыт внешней командой (в т.ч. тумблером либо сигналом с системы + сбора); + \item[closed] затвор был закрыт внешней командой; + \item[charged for opening] или \textbf{charged for closing} была получена команда + открыть или закрыть затвор, но конденсатор еще недостаточно заряжен, команда будет выполнена + как только напряжение на обкладках конденсатора достигнет 20\,В; + \item[in process] вам удалось опросить затвор в те миллисекунды, когда он находится в + состоянии закрывания или открывания; + \item[error] произошла ошибка: обрыв провода либо короткое замыкание, эту ошибку необходимо + устранить, а затем опять инициализировать затвор; + \item[not initialised or broken] затвор не был инициализирован либо конденсатор затвора + не подключен к источнику~36\,В; + \end{description} +флаг \textbf{состояние} описывает реальное состояние геркона затвора и имеет значение +\textbf{opened}, если затвор открыт, либо \textbf{closed}, если затвор закрыт; +\item[\hbox{[ x период ]}] установить период шаговых двигателей приводов турелей в заданное число +микросекунд; ответом является эхо команды, если \textbf{период} имеет значение в диапазоне +\verb'uint16_t'; +\item[\hbox{[ 0..4 шаги ]}] вращать шаговый двигатель с указанным номером на заданное число шагов + (положительное значение числа шагов соответствует вращению в условном положительном направлении, + отрицательное~--- в условном отрицательном); ответом является эхо команды. +\end{description} +Команды \textbf{J}, \textbf{K} и \textbf{L} (движение турелей) и \textbf{0..4} (движение +двигателей на заданное количество шагов) не возвращают эха введенной команды в случае, если +данный двигатель или двигатель из общей группы с данным еще находится в движении. После того, как +указанный шаговый двигатель достигнет заданной позиции, а также в случае возникновения ошибки, +микроконтроллер посылает сообщение вида \textbf{[ B номер (ERR) (HEAT) ]} (см.~описание команды +\textbf{[ B ]}). При попытке движения линейного транслятора, стоящего на концевике, в сторону этого +концевика, вместо эха принятой команды к движению ответ будет иметь вид аналогичный команде +<<стоп>>. Проход турелей через фиксированные позиции (а также наезд линейного транслятора на +концевик) сопровождается отчетом о текущей позиции (ответ команды \textbf{[ E ]}). + +В режиме мониторинга температур микроконтроллер один раз в условные 10~секунд отсылает данные, +аналогичные ответу на запрос \textbf{[ A ] [ s ]}. + +В случае, когда поведение системы не соответствует ожиданиям, необходимо проверить значение +счетчика условного времени командой \textbf{[ T ]}, позволяющего определить, была ли система +перезапущена из-за какого-то внешнего фактора. + +\end{document} diff --git a/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sisupr_front.jpg b/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sisupr_front.jpg new file mode 100644 index 0000000..42bf0da Binary files /dev/null and b/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sisupr_front.jpg differ diff --git a/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sysboard.jpg b/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sysboard.jpg new file mode 100644 index 0000000..2844bd6 Binary files /dev/null and b/Documentation_rus/sisupr_short_descr_and_commands_TeX/pic/sysboard.jpg differ