diff --git a/Report/main.pdf b/Report/main.pdf new file mode 100644 index 0000000..9de8a6b Binary files /dev/null and b/Report/main.pdf differ diff --git a/Report/main.tex b/Report/main.tex new file mode 100644 index 0000000..f406a96 --- /dev/null +++ b/Report/main.tex @@ -0,0 +1,542 @@ +\documentclass[a4paper,12pt]{extarticle} +\usepackage{/home/eddy/ed} +\graphicspath{{./pic/}} +\nocolon +\title{\textbf{Технический отчет~\No\,xxx}\\Система температурного мониторинга\\ главного зеркала БТА} +\makeatletter +\def\maketitle{% + \vskip 3em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \end{center}% + \par + \vskip 1.5em} +\makeatother + +\author{Емельянов~Э.В.} +\begin{document} +\noindent +\begin{tabular}{p{0.6\textwidth}p{0.3\textwidth}} +& \textbf{Утверждаю}\\ +& Директор САО РАН\\[2em] +& \hrulefill~~Власюк~В.В.\\[1em] +& <<\rule{7mm}{0.4pt}>>~\hrulefill~\number\year\,г. \\ +\end{tabular} + +\maketitle +\tableofcontents\newpage + +Длительное время температура главного зеркала (далее ГЗ) БТА фактически определялась лишь по показаниям +одного датчика ввиду того, что использовалась некалиброванная система из терморезисторов, наклеенных на нижнюю +поверхность зеркала. Разброс показаний терморезисторов доходил до $3\degr$C, что не позволяло использовать +систему для исследования влияния температурных градиентов на форму поверхности ГЗ. + +Для объективной аттестации реставрированного ГЗ \No1 необходимо было исключить возможность влияния тепловых +неоднородностей на форму зеркала, поэтому возникла потребность в создании новой системы теплового мониторинга. + +\section{Выбор типа термодатчиков} +Согласно документации\footnote{Большой Азимутальный Телескоп (БТА). Техническое описание (Книга~--~1).~--- +ЛОМО.}, в главном зеркале БТА высверлено 60~глухих отверстий диаметром 310\,мм и глубиной 430\,мм для +размещения механизмов разгрузки (57~разгрузок) и фиксирующих опор (3~опоры); 6~площадок глубиной около 20\,мм +для упора домкратов; 1~сквозное отверстие диаметром 360\,мм в центре для центрирующего стакана. Верхняя часть +каждой разгрузки отделена от зеркала воздушным промежутком, толщина которого более чем достаточна для +установки температурного датчика на поверхности стекла. + +При размещении в отверстиях разгрузок термодатчиков появится возможность мониторинга распределения +температурных градиентов по поверхности зеркала. Температурный коэффициент линейного расширения +боросиликатного стекла имеет значение от $3\cdot10^{-6}\,\degr\text{C}^{-1}$ +до~$7\cdot10^{-6}\,\degr\text{C}^{-1}$. +Для $\alpha_L=5\cdot10^{-6}\,\degr\text{C}^{-1}$ при радиальном градиенте температуры отклонение формы +поверхности зеркала между двумя выбранными точками на одну длину волны ($\lambda=500\,$нм) будет наблюдаться +при разности температур между этими точками $\sim0.15\degr$C. Таким образом, регистрация температур зеркала +БТА требуется с крайне высокой точностью (не хуже~$0.1\degr$C). + +\subsection{Аналоговые температурные датчики} +\subsubsection{Термопары} +Термопары применяются обычно для измерения высоких (тысячи Кельвин) температур. Для измерения абсолютных +температур с высокой точностью термопары обычно не применяют. Однако, термопары "--- хорошее средство для +измерения разностей температур с высокой точностью (вплоть до $\pm0.01\degr$C). + +В аризонской обсерватории <> использовалась система мониторинга градиентов +температуры по составному главному зеркалу (диаметром 6.5~метров, в дальнейшем составное зеркало было +заменено монолитным) на основе дифференциальных измерений с использованием термопар. + +Высокоточное измерение температуры при помощи термопар "--- технически сложная задача. Ее реализация требует +значительно б\'ольших затрат времени и средств по сравнению с альтернативными методиками. + +\subsubsection{Терморезисторы} +Компания U.S. Sensor предлагает терморезисторы, имеющие погрешность $\pm0.05\degr$C на интервале +температур~$0\div50\degr$C с различными значениями сопротивления при температуре~$25\degr$C (от $2.252\,$кОм +для PR222J2 до $50\,$кОм для PR503J2. Цена одного такого датчика "--- около \$20. + +Еще один вариант высокоточных термосопротивлений от этой компании "--- USP3021 и USP3986 (сопротивление, +соответственно, $10\,$кОм и $100\,$кОм) с заявленной точностью не меньше~$\pm0.01\degr$C! Однако, и цена этих +датчиков соответствует точности: около \$500 за штуку. + +Pico Technology предлагает погружные терморезисторы серии PT100 в металлическом корпусе --- SE012, точность +которых по заявлению производителя не ниже~$\pm0.03\degr$C! Стоимость "--- около \$80 за штуку. +Компания предлагает и терморезисторы <<потребительского класса>> "--- SE011, обладающих +точностью~$\pm0.15\degr$C по цене около \$40. + +Для разрабатывающегося в САО РАН ИК-спектрофотометра IRBIS мониторинг температуры <<холодных>> узлов прибора +было решено выполнять при помощи изготавливаемых компанией Honeywell платиновых терморезисторов HEL-705, +позволяющих выполнять надежные измерения температуры и в диапазоне кипящего жидкого азота. Гарантированная +производителем точность (без калибровки) составляет $0.2\%$ (т.е. $\pm0.15\,$K при температуре жидкого азота +и $\pm0.60\,$K при комнатной температуре). Цена одного такого термодатчика составляет порядка \$45. +Однако, проведенные в 2013--2014\,гг. испытания показали, что после калибровка датчиков в совокупности с +высокоточной методикой измерения их сопротивления позволяет увеличить точность до $\pm0.05\degr$C в диапазоне +температур около $40\degr$C (например, от $-20\degr$C до $20\degr$C, чего вполне достаточно для работы с +ГЗ БТА). + +\begin{pict} +\includegraphics[width=0.7\textwidth]{TRD_hot} +\caption{Показания восьми некалиброванных терморезисторов HEL-705 при комнатной температуре.} +\label{trdhot} +\end{pict} + +\begin{pict} +\includegraphics[width=0.7\textwidth]{TRD_cold} +\caption{Показания двух некалиброванных терморезисторов HEL-705 при температуре жидкого азота.} +\label{trdcold} +\end{pict} + +Для высокоточного измерения сопротивлений термодатчиков применялась схема, в которой каждый из проводников +подсоединенных по трехпроводной схеме датчиков коммутировался отдельным мультиплексором, а для уменьшения +воздействия внутреннего сопротивления мультиплексора производились замеры с изменяемым опорным током и сменой +входных каналов 24-битного АЦП AD7794\footnote{Henry He, <>,\\ +http://www.analog.com/en/analog-dialogue/articles/minimizing-errors-in-multiplexed-3-wire-rtd.html}. + +При комнатной температуре производились долговременные измерения показаний восьми тщательно +теплоизолировынных датчиков HEL-705 (см. рис.~\ref{trdhot}), также наблюдались изменения показаний двух +термодатчиков, помещенных в закрытую пенопластовой термоизоляцией (вследствие чего температура кипения +азота в емкости была выше, чем в открытой емкости) емкость с жидким азотом (см. рис.~\ref{trdcold}). + +Численное моделирование показало, что в ограниченном диапазоне температур при помощи калибровки можно +добиться достаточно высокой точности измерения. Так, после простой линейной калибровки по точкам кипения +жидкого азота при давлении 680\,мм.рт.ст. (температура кипения азота при этом давлении составляет +$76.43\,$K\footnote{George T. Armstrong, <>, J.Res.Nat'l.Bur.Stand. 53, 263 +(1954).}) и плавления льда удалось обеспечить точность в широком диапазоне не хуже $\pm0.13\degr$C. + +Основной проблемой использования терморезистивных датчиков для построения карт распределения температуры в +толще ГЗ БТА является крайне высокая стоимость терморезисторов и систем регистрации температуры с требуемой +точностью. + + +\subsection{Цифровые температурные датчики} +В отличие от аналоговых термодатчиков, требующих наличия крайне сложной системы регистрации температур, +цифровые термодатчики фактически всю схему регистрации содержат внутри себя, что позволяет значительно +упростить электронику регистрирующей системы. Поэтому на техническом совете в декабре 2014\,года автором и +был озвучен выбор в пользу цифровых термодатчиков. + +Популярные недорогие 1-wire термодатчики (например, датчики DS18S20) имеют низкую точность ($\pm0.5\degr$C с +возможностью улучшения до $\pm0.25\degr$C при калибровке), что не позволяет использовать их в данной задаче, +однако, промышленностью выпускаются специализированные калиброванные цифровые датчики. + +\subsubsection{TSic-506} +\begin{pict} +\includegraphics[width=0.7\textwidth]{Tsic506} +\caption{Отклонения показаний трех датчиков TSic-506 от среднего значения в диапазоне от $11\degr$C до +$22\degr$C.} +\label{tsic} +\end{pict} +Компания <> производит цифровые датчики TSic\texttrademark~506F с +интерфейсом ZACwire, обеспечивающих (по утверждению производителя) точность измерения температуры не +хуже~$\pm0.1\degr$C в диапазоне $5\div45\degr$C. Стандартный интервал измерений~--- $-10\div60\degr$C. Цена +одного такого датчика --- около \$12. + +В 2013~г. в лабораторных условиях были испытаны три термодатчика TSic-506. Дискрет измерения температуры у +данных датчиков составляет $0.034\degr$C. Показания датчиков снимались в диапазоне температур от~$11\degr$C +до~$22\degr$C. Без калибровки разброс датчиков составил $\pm0.1\degr$C. После линейной калибровки +среднеквадратичное отклонение показаний датчиков составило не выше $0.2\degr$C (см. рис.~\ref{tsic}) с +воспроизводимостью не хуже $\pm0.05\degr$C. Однако, полный диапазон работы этих датчиков не позволяет быть +уверенным, что при работе в зимний период температура зеркала не выйдет за нижний предел их рабочей +температуры. Кроме того, формфактор TO-92, в котором выпускаются данные датчики, затрудняет осуществление +надежного температурного контакта между ними и поверхностью зеркала. + +\subsubsection{TSYS-01} +<> производит цифровые термодатчики TSYS-01 в удобном для выполнения надежного теплового +контакта корпусе QFN-16. Заявленная производителем точность работы датчика во всем рабочем диапазоне (от~ +$-40\degr$C до~$125\degr$C) составляет не хуже~$\pm0.1\degr$C, а в диапазоне от~$5\degr$C до $40\degr$C +гарантируется точность не хуже $\pm0.05\degr$C. Цена датчика~--- около~\$12. + +\begin{pict} +\includegraphics[width=0.7\textwidth]{T12_100pts} +\caption{Скользящее среднее для разницы показаний двух термодатчиков TSYS-01.} +\label{tsysmean} +\end{pict} + +\begin{pict} +\includegraphics[width=0.7\textwidth]{T12_diff} +\caption{Разность показаний пары TSYS-01 без усреднения.} +\label{tsysdiff} +\end{pict} + +Для анализа возможностей применения данных датчиков на ГЗ БТА в 2016--2017\,гг. было проведено их +исследование. Интерфейс работы датчиков "--- SPI или I2C (был выбран второй вариант, как требующий наименьшего +количества проводников). От стабильности источника питания датчиков (3.3\,В) зависит точность их показаний, +поэтому датчики запитывались от отдельного LDO. + +Показания двух тщательно термоизолированных датчиков, приклеенных к пластине из боросиликатного стекла +отличались крайне незначительно: на рис.~\ref{tsysmean} приведены графики температур, усредненные по +100~точкам, а на рис.~\ref{tsysdiff} "--- <<сырые>> разности температур без усреднения. Такие высокие +точности показаний датчиков без калибровки, простота опроса термодатчиков, а также возможность использования +достаточно длинных проводников для подключения датчиков к контроллерам (до 5\,м при скорости I2C 10\,кГц) +позволили остановить свой выбор именно на них. + +\section{Система температурного контроля} +\subsection{Организация системы} +Для подключения отдельного датчика к микроконтроллеру необходимо как минимум четыре проводника: два +сигнальных проводника шины I2C, питание и общий провод (<<земля>>). У датчиков имеется дополнительный вход, +позволяющий посредством подключения к нему общего или питания изменять младший бит адреса датчика (т.е. на +одной шине I2C одновременно может работать пара датчиков, либо же при помощи пятого сигнального проводника +можно выбирать нужный термодатчик). Чтобы подключение датчиков можно было выполнить стандартной витой парой +из двух пар проводников, был выбран вариант подключения датчиков попарно. Кроме того, как показали +исследования работы множества датчиков, одновременно подключенных к одной шине I2C, из-за наличия входной +емкости на затворах транзисторов каждого датчика уже наличие шестнадцати датчиков на шине требует снижения +сопротивления подтяжек на сигнальных входах с 4.7\,кОм до 750\,Ом (а это привело бы к увеличению +тепловыделения и уменьшению предельной длины соединительных проводников). В результате была выбрана +попарная схема подключения датчиков (с разными младшими адресами). Предельная длина проводников при этом не +уменьшилась, составляя 5\,м для тактовой частоты шины I2C 10\,кГц. + +Ограничение на максимальную длину сигнальных проводников не позволяет установить контроллер термодатчиков вне +оправы ГЗ БТА (кроме того, в этом случае к контроллеру шел бы жгут из не менее 30~кабелей). Было принято +решение использовать топологию <<звезда>>: к каждому контроллеру подключается до восьми пар термодатчиков, а +между собой все контроллеры соединяются при помощи шины CAN, не имеющей столь малого ограничения на +предельную длину линии данных. Адресация контроллеров в CAN-шине задается при помощи микропереключателей или +перемычек. Один из контроллеров выполняет роль ведущего, позволяя выполнять опрос всех контроллеров сети. + +\begin{pict} +\includegraphics[width=0.7\textwidth]{LUT} +\caption{Печатные платы прототипов контроллеров температур и креплений датчиков.} +\label{lut} +\end{pict} + +В 2017~году были изготовлены прототипы печатных плат для монтажа термодатчиков и плат контроллеров (см. +рис.~\ref{lut}). За основу плат контроллеров был взят микроконтроллер STM32F042, имеющий аппаратные +интерфейсы CAN и USB (второй необходим для подключения к управляющему компьютеру). Для коммутации шины I2C +(что необходимо для переключения между разными парами термодатчиков) использованы аналоговые восьмиканальные +мультиплексоры 74HC4051, переключающие оба сигнальных проводника шины I2C на нужную пару термодатчиков. + +Соединение контроллеров между собой выполняется при помощи стандартной витой пары пятой категории (четыре +пары проводников): одна пара используется для CAN-шины и по три проводника для питания (12\,В). Импульсный +источник питания на основе LM2576 преобразует 12\,В в 5\,В, которые при помощи раздельных LDO LM1117 +преобразуются в 3.3\,В питания микроконтроллера с периферией и термодатчиков. Все сигнальные входы защищены +при помощи супрессоров. Вход питания защищен от переполюсовки при помощи <<идеального диода>> на основе +полевого транзистора AO3407, а от короткого замыкания "--- при помощи плавкого предохранителя на +0.5\,А\footnote{Все принципиальные схемы, печатные платы и исходные коды для данного проекта находятся в +репозитории https://github.com/eddyem/tsys01}. + +\begin{pict} +\includegraphics[width=0.7\textwidth]{thermocontr} +\caption{Термоконтроллеры в сборе на CAN-шине.} +\label{thermocontr} +\end{pict} + +Для анализа потребления и потерь на линии связи уровень входного напряжения питания измеряется при помощи +внутреннего АЦП микроконтроллера, а для измерения силы тока используется датчик MAX471. Также внутренним АЦП +микроконтроллера измеряется уровень напряжения питания термодатчиков и уровень напряжения 5\,В после +импульсного источника питания. Переключатель напряжения на основе TPS2051 позволяет управлять питанием +термодатчиков, отключая его в случае необходимости, а также служит предохранителем, отключая питание датчиков +в случае, если потребление превысит 0.5\,А (для защиты компонент контроллера в случае короткого замыкания по +питанию при <<горячем>> подключении или отключении датчиков). + +Диагностика работы контроллеров выполняется посредством трех светодиодов. Отдельно стоящий в верхней части +платы светодиод является индикатором наличия напряжения питания микроконтроллера. Под микроконтроллером +распаяны еще два сигнальных светодиода: верхний является показателем активности микроконтроллера, мерцая один +раз в секунду; нижний светодиод загорается при наличии стабильного соединения на CAN-шине. + +\subsection{Установка и отладка системы} +Установка и отладка системы сбора данных началась с мая 2018~года "--- после замены ГЗ БТА. Для того, чтобы +иметь возможность аттестовать точности показаний датчиков в широких температурных диапазонах и произвести при +необходимости их калибровку был изготовлен стенд с мультиплексором на основе восьми 74HC4051, позволяющим при +помощи одного микроконтроллера работать с 96~термодатчиками. + +\begin{pict} +\includegraphics[width=0.7\textwidth]{stand_test} +\caption{Подготовка стенда для аттестации термодатчиков.} +\label{senstest} +\end{pict} + +На 18-мм плиту из дюралюминия было установлено 42~пары термодатчиков (в 40~парах термодатчики пары находились +в непосредственной близости друг от друга на расстоянии около 1.5\,см). На рис.~\ref{senstest} приведено +изображение конструкции во время монтажа последнего ряда термодатчиков на пластину. Пластина со стороны +датчиков была закрыта многослойной изоляцией из пенополиэтилена и помещена в бокс из листовой теплоизоляции. +По углам и в центре пластины были наклеены терморезисторы HEL-705 для независимого определения температуры в +разных частях пластины. + +Далее внутрь бокса заливался жидкий азот, охлаждающий пластину с термодатчиками, а поверх бокса +устанавливалась емкость с жидким азотом, чтобы исключить появление инея и водяного конденсата на платах с +термодатчиками и электрических контактах. + +К сожалению, из-за огромного количества проводников не удалось обеспечить равномерного распределения +температуры по поверхности пластины: при пассивном нагреве пластины до $-30\degr$C, когда и начались +измерения показаний термодатчиков, разница температур между противоположными краями пластины (по длине) +составила более $1.5\degr$C. Такой высокий градиент температуры не позволил осуществить массовую аттестацию +термодатчиков, однако, учитывая малое расстояние между датчиками каждой конкретной пары, появилась +возможность отбраковать те пары, где показания в диапазоне от $-30\degr$C до комнатной температуры отличались +больше, чем на $0.05\degr$C. После того, как пластина в среднем нагрелась до $10\degr$C, градиент по ее длине +снизился до $0.5\degr$C, а по ширине "--- до $0.1\degr$C, что позволило исследовать поведение +пар термодатчиков в группах по 6--8~пар. + +\begin{pict} +\includegraphics[width=0.4\textwidth]{Tsens0location}\hspace{2em} +\includegraphics[width=0.4\textwidth]{Tsens1location} +\caption{Расположение датчиков пары.} +\label{senspair} +\end{pict} + +В результате было отобрано 30~пар термодатчиков с разбросом показаний внутри пары не выше $\pm0.025\degr$C и +среднеквадратичным отклонением от среднего для всех пар не выше $0.05\degr$C. 28~пар термодатчиков +установлено в разгрузках ГЗ БТА, одна пара измеряет температуру внутри вспомогательного помещения фокуса~Н2 +(где расположена система регистрации) и еще одна пара оставлена в качестве резервной. +На рис.~\ref{senspair} приведены фотографии расположения термодатчиков одной из пар: один датчик приклеен к +донышку углубления под разгрузку (таким образом измеряя температуру на расстоянии около 20\,см от поверхности +зеркала), второй наклеен на заднюю часть зеркала вблизи соответствующей разгрузки. + +\begin{pict} +\includegraphics[width=0.7\textwidth]{Controllers} +\caption{Расположение термодатчиков в разгрузках ГЗ БТА.} +\label{sensloc} +\end{pict} + +На рис.~\ref{sensloc} приведено расположение термодатчиков (залитые розовым окружности) и контроллеров +(окружности с нумерацией внутри) на главном зеркале. Расположение изображения соответствует виду из стакана +первичного фокуса. Рядом с каждой разгрузкой указан ее номер. Цветной заливкой зеркало разделено на четыре +сектора, отображающих группы датчиков, подключенных к одному контроллеру. +Для обеспечения возможности контроля дрейфа разностей показаний термодатчиков в разгрузках \No15 и \No9 +пары термодатчиков продублированы. Обеспечить сверку показаний датчиков с реальными температурами можно при +помощи четырех терморезисторов HEL-705, установленных в разгрузках \No\No~40, 46, 52 и~58. Изготовлен +макет аналоговой части системы регистрации данных с терморезисторов на трех низкоомных +мультиплексорах NX3L4051 и АЦП AD7794. + +\begin{pict} +\includegraphics[width=0.5\textwidth]{hand_meter} +\caption{Устройство для ручного измерения температур ГЗ БТА.} +\label{handmeter} +\end{pict} + +\begin{pict} +\includegraphics[width=0.45\textwidth]{T0-180529}\hfil +\includegraphics[width=0.45\textwidth]{T1-180529} +\caption{Карты температур, построенные вручную 18~марта 2018~г. Слева "--- температура в глубине зеркала, +справа "--- на его нижней поверхности.} +\label{mirhandtemps} +\end{pict} + +К середине мая датчики были установлены на ГЗ БТА и специалисты СЭК БТА занялись установкой разгрузок. До +окончания работ по установке разгрузок не было возможности смонтировать коммуникационные линии в оправе +зеркал, поэтому на макетной плате было собрано простое устройство, позволяющее вручную измерять температуры +для каждой пары датчиков (см. рис.~\ref{handmeter}). На рис.~\ref{mirhandtemps} изображена одна из +температурных карт, построенных вручную. + +\begin{pict} +\includegraphics[width=0.6\textwidth]{CANbusBoard} +\caption{Прототип для отладки CAN и USB интерфейсов.} +\label{canusblut} +\end{pict} + +В июне--июле 2018~г. производилась отладка аппаратного и программного обеспечения системы мониторинга. Был +сформирован протокол передачи данных по CAN-шине, отлажен конечный автомат измерения температур в каждой из +двенадцати пар точек, завершена аппаратная отладка пяти распаянных плат контроллеров термодатчиков. +Для упрощения разработки программной части интерфейсов CAN и USB изготовлена отладочная плата (см. +рис.~\ref{canusblut}). Отладка на отдельной плате позволила уменьшить риск повреждения элементов основных +контроллеров на стадии разработки программной части, не связанной с опросом термодатчиков. На момент +написания данной документации разработка USB-CDC интерфейса еще не закончена, поэтому основной контроллер +соединен с управляющим компьютером посредством переходника UART$\leftrightarrow$USB. + +Контроллеры термодатчиков были смонтированы в оправе ГЗ БТА в августе 2018~г. Из вспомогательного помещения в +опоре фокуса Н2 в пространство между ГЗ БТА и его оправой были проложены коммуникационные линии на основе +витой пары cat5. Произведено временное закрепление коммуникационных линий и контроллеров в оправе ГЗ БТА. +Окончательное решение об местах установки термодатчиков и контроллеров, а также их количестве должно быть +вынесено после окончания периода пробной эксплуатации системы температурного мониторинга. + +\begin{pict} +\includegraphics[width=0.32\textwidth]{T0}\hfil +\includegraphics[width=0.32\textwidth]{T1}\hfil +\includegraphics[width=0.32\textwidth]{Tgrad} +\caption{Карты распределения температуры, генерируемые системой сбора данных. Слева "--- температура в толще +зеркала, в центре "--- температура на его нижней поверхности, справа "--- градиент температуры по толщине +(температура в толще минус температура на дне).} +\label{tempgraphs} +\end{pict} + +В августе 2018~г. был смонтирован компьютер системы сбора данных (Orage Pi Zero) в совокупности с блоками +питания и основным контроллером "--- в металлическом коробе, установленном на стене вспомогательного +помещения третьего этажа стойки фокуса Н2 телескопа. После отладки алгоритма опроса термодатчиков были +написаны сетевые демоны, позволяющие получить доступ извне к собранным системой данным. + +Основной сетевой демон системы сбора работает на машине mirtemp.sao.ru, обслуживая порт 4444. Один раз в +минуту демон дает команду запуска измерения температур и считывает полученные данные. Накопленные за 15~минут +данные усредняются и по ним при помощи утилиты gnuplot строятся графические карты распределения температур +(см. рис.~\ref{tempgraphs}), доступ к которым можно получить через веб. Последние считанные данные доступны +как из клиентского приложения, так и из любого браузера: по адресу mirtemp.sao.ru:4444/T0 можно получить +таблицу распределения температур в толще зеркала, mirtemp.sao.ru:4444/T1 "--- на дне +зеркала, mirtemp.sao.ru:4444/T2 "--- в помещении Н2, mirtemp.sao.ru:4444/Tgrad "--- разницу между T0 и~T1, +mirtemp.sao.ru:4444/Tmean "--- среднюю арифметическую температуру (рассчитанную по всем последним +данным с отбраковкой измерений, отличающихся от медианной температуры больше, чем на $3\sigma$). +Формат записей таков: в первой и второй колонке указаны координаты (в метрах) точки измерения температуры; в +третьей колонке "--- ее значение; а в четвертой "--- время, когда было произведено измерение (в формате UNIX +time). Графики усредненных последних 15~измерений не содержат времени последнего измерения и доступны по +адресам http://mirtemp.sao.ru/T0, http://mirtemp.sao.ru/T1 и http://mirtemp.sao.ru/Tgrad. + +На основе образцов исходных кодов систем сбора метеорологических данных для СУ БТА, предоставленных +с.н.с.~лабории информатики В.С.~Шергиным, разработан интерфейс, обеспечивающий передачу средней температуры +зеркала в систему управления телескопом. + +\section{Заключение} +В ходе эксплуатации системы регистрации температур ГЗ БТА до начала работ по его алюминированию +выявлено, что выбрано недостаточное количество опорных точек: для построения более точной карты распределения +температур желательно разместить термодатчики в каждой разгрузке зеркала. Кроме того, градиент по толще +зеркала не играет такой важной роли, как радиальный градиент. Видоизменить существующую систему можно, +используя датчики с нижней поверхности зеркала и дополнительные датчики. Использующихся четырех контроллеров +при этом хватит в~т.ч. для контрольного дублирования датчиков в четырех точках. + +% https://latex.org/forum/viewtopic.php?t=7732 +\makeatletter +\newcommand\appendix@section[1]{% +\refstepcounter{section}% +\orig@section*{Приложение \@Alph\c@section: #1}% +\addcontentsline{toc}{section}{Приложение \@Alph\c@section: #1}% +} +\let\orig@section\section +\g@addto@macro\appendix{\let\section\appendix@section} +\makeatother +\appendix + +\section{Программные протоколы} +\subsection{Протокол обмена данными по последовательному интерфейсу} +Связь управляющего компьютера с любым контроллером системы сбора возможна либо через последовательный порт +(отладочный интерфейс USART1 выведен на платах контроллеров) при помощи переходников +USART$\leftrightarrow$USB, либо при помощи соединения через USB (в разработке). Соединение через +последовательный интерфейс выполняется на скорости 115200~бод в формате 8N1. + +Рабочий протокол включает в себя служебные команды, предназначенные для отладки. Формат команды: +\verb'[]', где \verb'' "--- символ команды (большая или малая латинская буква), а +\verb'' "--- символ завершения строки (\verb'\n'). Если параметр \verb'[]' опущен (т.е. команда +состоит из одного символа), результат зависит от регистра команды: команда в верхнем регистре инициализирует +широковещательную передачу соответствующего сообщения всем контроллерам сети, а также локальный ее запуск; +команда в нижнем регистре запускается только локально на данном контроллере (существуют также команды, +не имеющие <<локального>> варианта). + +При необходимости послать сетевую команду конкретному контроллеру используется расширенный формат команд. В +этом случае параметр \verb'[]' является числом от 1 до 7, а команда "--- только в верхнем регистре. +Данный вариант команд доступен для исполнения лишь с ведущего контроллера, имеющего номер 0. Если номер +контроллера отличается от нуля, сетевые команды (как конкретному контроллеру, так и широковещательные) для +него недоступны (исключение сделано для отладочных команд \textbf{B} и \textbf{D}). + +Далее приводится список основных команд. Если команда пишется в обоих регистрах, то доступны как сетевые, так +и локальные ее варианты, для команд только в нижнем регистре доступен лишь локальный вариант, а только в +верхнем "--- лишь сетевой. Команды, использующиеся исключительно для отладки, отмечены как [\textit{отладка}]. + +\begin{description} +\item[B] [\textit{отладка}] посылка широковещательного тестового сообщения по CAN-шине; +\item[c] [\textit{отладка}] отобразить коэффициенты заводской калибровки для всех подключенных термодатчиков; +\item[D] [\textit{отладка}] послать по CAN-шине тестовое сообщение ведущему контроллеру; +\item[Ee] выйти из режима сканирования температуры; +\item[Ff] отключить питание термодатчиков (не рекомендуется часто отключать питание, иначе датчики быстро + выйдут из строя); +\item[g] отобразить адрес платы, считанный с перемычек при последней процедуре инициализации CAN; +\item[Hh] переключить I2C в режим скорости 100\,кГц (не рекомендуется для длинных линий); +\item[i] переинициализировать CAN (полезно для смены адреса платы <<на горячую>>); +\item[Ll] переключить I2C в режим скорости 10\,кГц (режим по умолчанию); +\item[P] ping "--- запрос на существование в сети контроллера с соответствующим адресом (либо + широковещательный ping всех, существующих в сети контроллеров); +\item[Rr] переинициализация I2C; +\item[Ss] войти в режим сканирования температуры (не чаще, чем 1~раз в 15~секунд автоматически запускается + процесс измерения температуры с выдачей данных в CAN-шину); +\item[Tt] запуск одиночного измерения температуры (стандартная команда для измерений по запросу с ведущего + контроллера); +\item[u] проверить состояние CAN-шины (были ли ошибки в последних транзакциях); +\item[Vv] переключить I2C в режим наименьшей скорости (около 5.8~кГц); +\item[Z] запросить состояние термодатчиков. +\end{description} + +\subsection{Протокол пересылки данных по CAN-шине} +Данные по шине CAN передаются пакетами переменной длины: от одного до семи байт. В каждом пакете нулевым +байтом является маркер типа пакета: данные (\verb'0x5A') или команда (\verb'0xA5'). В штатном режиме +эксплуатации ведущий контроллер отсылает только команды, а ведомые "--- только данные, однако, в тестовом +режиме ведомый контроллер может также пересылать данные. В случае отправки команды пакет имеет длину два +байта и байтом~1 следует передающаяся команда. + +Перечень команд (числовое значение команды, мнемоническое обозначение, расшифровка): +\begin{description} +\item[0x00] \verb'CMD_PING' ожидание пакета данных с эхом этой команды (используется для проверки + существования контроллера на шине); +\item[0x01] \verb'CMD_START_MEASUREMENT' начать одиночное измерение температуры; +\item[0x02] \verb'CMD_SENSORS_STATE' получить состояние датчиков; +\item[0x03] \verb'CMD_START_SCAN' войти в режим непрерывного измерения температуры; +\item[0x04] \verb'CMD_STOP_SCAN' выйти из предыдущего режима; +\item[0x05] \verb'CMD_SENSORS_OFF' отключить питание датчиков; +\item[0x06] \verb'CMD_LOWEST_SPEED' минимальная скорость I2C; +\item[0x07] \verb'CMD_LOW_SPEED' низкая скорость I2C; +\item[0x08] \verb'CMD_HIGH_SPEED' высокая скорость I2C; +\item[0x09] \verb'CMD_REINIT_I2C' реинициализация шины I2C; +\item[0xDA] \verb'CMD_DUMMY0' тестовая команда; +\item[0xAD] \verb'CMD_DUMMY1' тестовая команда. +\end{description} + +Формат данных имеет следующую структуру: +\begin{description} +\item[байт 1] номер контроллера (установленный перемычками на плате, т.е. число от~0 до~7); +\item[байт 2] полученная команда, ответ на которую отправляется в пакете; +\item[байты 3..7] данные (в ответе на команду \verb'CMD_PING' эти байты отсутствуют). +\end{description} + +Ответом на команду \verb'CMD_SENSORS_STATE' является число, характеризующее состояние датчиков у данного +контроллера: +\begin{description} +\item[0x00] \verb'SENS_INITING' питание включено, происходит инициализация; +\item[0x01] \verb'SENS_RESETING' процедура обнаружения датчиков командой сброса; +\item[0x02] \verb'SENS_GET_COEFFS' получение калибровочных коэффициентов обнаруженных датчиков; +\item[0x03] \verb'SENS_SLEEPING' <<спящее>> состояние между измерениями; +\item[0x04] \verb'SENS_START_MSRMNT' всем датчикам отправлена команда начала измерений температуры; +\item[0x05] \verb'SENS_WAITING' ожидание окончания измерений температуры; +\item[0x06] \verb'SENS_GATHERING' сбор температуры с обнаруженных термодатчиков; +\item[0x07] \verb'SENS_OFF' питание датчиков отключено; +\item[0x08] \verb'SENS_OVERCURNT' обнаружено короткое замыкание либо превышение допустимого тока, питание + датчиков временно отключено; +\item[0x09] \verb'SENS_OVERCURNT_OFF' попытка включения питания датчиков более 32~раз закончилась состоянием + \verb'SENS_OVERCURNT', питание отключено вплоть до получения внешней команды инициализации (команда + \verb'CMD_START_MEASUREMENT'). +\end{description} + +После окончания измерений температурных данных каждый ведомый контроллер пересылает значения температур со +всех обнаруженных термодатчиков ведущему. Формат температурных данных имеет следующую структуру: +\begin{description} +\item[байт 3] номер датчика ($10\cdot N + M$, где $N$~-- номер канала мультиплексора, $M$~-- номер датчика + в паре, т.е. 0, 1, 10, 11, 20, \ldots , 71); +\item[байт 4] старший байт данных; +\item[байт 5] младший байт данных. +\end{description} +Температура передается в формате \verb'int16_t', в сотых долях градуса Цельсия. Например, температуре +$-12.56\degr$C соответствует число $-1256$, а температуре $18.98\degr$C "--- число~$1898$. +При считывании данных через последовательный интерфейс в случае ошибки измерений (значение температуры, +полученное с шины, лежит вне допустимого диапазона) возвращается число -30000, а при ошибке передачи команды +считывания измеренных данных "--- число -31000. + +\vspace{3em} + +\hfill\parbox{0.4\textwidth}{ +\rule{20mm}{0.4pt}~~/Емельянов~Э.В./\\[1em] +<<\rule{7mm}{0.4pt}>>~\rule{30mm}{0.4pt}~\number\year\,г. \\ +} + + +\end{document} + + +\begin{pict} +\includegraphics[width=0.7\textwidth]{} +\caption{.} +\label{} +\end{pict} diff --git a/Report/pic/CANbusBoard.jpg b/Report/pic/CANbusBoard.jpg new file mode 100644 index 0000000..9f5a273 Binary files /dev/null and b/Report/pic/CANbusBoard.jpg differ diff --git a/Report/pic/Controllers.jpg b/Report/pic/Controllers.jpg new file mode 100644 index 0000000..ab44aa5 Binary files /dev/null and b/Report/pic/Controllers.jpg differ diff --git a/Report/pic/LUT.jpg b/Report/pic/LUT.jpg new file mode 100644 index 0000000..3700cd6 Binary files /dev/null and b/Report/pic/LUT.jpg differ diff --git a/Report/pic/Sensors_location.png b/Report/pic/Sensors_location.png new file mode 100644 index 0000000..5b0c7d4 Binary files /dev/null and b/Report/pic/Sensors_location.png differ diff --git a/Report/pic/T0-180529.png b/Report/pic/T0-180529.png new file mode 100644 index 0000000..3821e8f Binary files /dev/null and b/Report/pic/T0-180529.png differ diff --git a/Report/pic/T0.png b/Report/pic/T0.png new file mode 100644 index 0000000..8b65f64 Binary files /dev/null and b/Report/pic/T0.png differ diff --git a/Report/pic/T1-180529.png b/Report/pic/T1-180529.png new file mode 100644 index 0000000..b62ae32 Binary files /dev/null and b/Report/pic/T1-180529.png differ diff --git a/Report/pic/T1.png b/Report/pic/T1.png new file mode 100644 index 0000000..c973c23 Binary files /dev/null and b/Report/pic/T1.png differ diff --git a/Report/pic/T12_100pts.png b/Report/pic/T12_100pts.png new file mode 100644 index 0000000..2e13ff3 Binary files /dev/null and b/Report/pic/T12_100pts.png differ diff --git a/Report/pic/T12_diff.png b/Report/pic/T12_diff.png new file mode 100644 index 0000000..1e8e390 Binary files /dev/null and b/Report/pic/T12_diff.png differ diff --git a/Report/pic/TRD_cold.png b/Report/pic/TRD_cold.png new file mode 100644 index 0000000..b16de28 Binary files /dev/null and b/Report/pic/TRD_cold.png differ diff --git a/Report/pic/TRD_hot.png b/Report/pic/TRD_hot.png new file mode 100644 index 0000000..cbef7c6 Binary files /dev/null and b/Report/pic/TRD_hot.png differ diff --git a/Report/pic/Tgrad.png b/Report/pic/Tgrad.png new file mode 100644 index 0000000..ff1d5b9 Binary files /dev/null and b/Report/pic/Tgrad.png differ diff --git a/Report/pic/Tsens0location.jpg b/Report/pic/Tsens0location.jpg new file mode 100644 index 0000000..085136d Binary files /dev/null and b/Report/pic/Tsens0location.jpg differ diff --git a/Report/pic/Tsens1location.jpg b/Report/pic/Tsens1location.jpg new file mode 100644 index 0000000..3482488 Binary files /dev/null and b/Report/pic/Tsens1location.jpg differ diff --git a/Report/pic/Tsic506.png b/Report/pic/Tsic506.png new file mode 100644 index 0000000..88ecf9e Binary files /dev/null and b/Report/pic/Tsic506.png differ diff --git a/Report/pic/hand_meter.jpg b/Report/pic/hand_meter.jpg new file mode 100644 index 0000000..e11857e Binary files /dev/null and b/Report/pic/hand_meter.jpg differ diff --git a/Report/pic/stand_test.jpg b/Report/pic/stand_test.jpg new file mode 100644 index 0000000..187f524 Binary files /dev/null and b/Report/pic/stand_test.jpg differ diff --git a/Report/pic/thermocontr.jpg b/Report/pic/thermocontr.jpg new file mode 100644 index 0000000..8ba68f1 Binary files /dev/null and b/Report/pic/thermocontr.jpg differ diff --git a/STM32/TSYS_controller/Readme.md b/STM32/TSYS_controller/Readme.md index 4d8b3d7..042179d 100644 --- a/STM32/TSYS_controller/Readme.md +++ b/STM32/TSYS_controller/Readme.md @@ -43,9 +43,20 @@ Variable data length: from 1 to 7 bytes. First byte of every sequence is command mark (0xA5) or data mark (0x5A). Commands: -- CMD_PING - send from master to receive answer in data packet if target alive. -- CMD_START_MEASUREMENT - start single temperature measurement. -- CMD_SENSORS_STATE - state of sensors. +- CMD_PING request for PONG cmd +- CMD_START_MEASUREMENT start single temperature measurement +- CMD_SENSORS_STATE get sensors state +- CMD_START_SCAN run scan mode +- CMD_STOP_SCAN stop scan mode +- CMD_SENSORS_OFF turn off power of sensors +- CMD_LOWEST_SPEED lowest I2C speed +- CMD_LOW_SPEED low I2C speed (10kHz) +- CMD_HIGH_SPEED high I2C speed (100kHz) +- CMD_REINIT_I2C reinit I2C with current speed + +Dummy commands for test purposes: +- CMD_DUMMY0 = 0xDA, +- CMD_DUMMY1 = 0xAD Data format: - 1 byte - Controller number