mirror of
https://github.com/eddyem/tsys01.git
synced 2025-12-06 10:35:14 +03:00
543 lines
33 KiB
TeX
543 lines
33 KiB
TeX
\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).
|
||
|
||
В аризонской обсерватории <<Multiple Mirror Telescope>> использовалась система мониторинга градиентов
|
||
температуры по составному главному зеркалу (диаметром 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, <<Minimizing Errors in Multiplexed 3-Wire RTD
|
||
Data-Acquisition Systems>>,\\
|
||
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, <<Vapour Pressure of Nitrogen>>, 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}
|
||
Компания <<IST innovative sensor technology>> производит цифровые датчики 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}
|
||
<<TE Connectivity>> производит цифровые термодатчики 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'[<num>]<char><endline>', где \verb'<char>' "--- символ команды (большая или малая латинская буква), а
|
||
\verb'<endline>' "--- символ завершения строки (\verb'\n'). Если параметр \verb'[<num>]' опущен (т.е. команда
|
||
состоит из одного символа), результат зависит от регистра команды: команда в верхнем регистре инициализирует
|
||
широковещательную передачу соответствующего сообщения всем контроллерам сети, а также локальный ее запуск;
|
||
команда в нижнем регистре запускается только локально на данном контроллере (существуют также команды,
|
||
не имеющие <<локального>> варианта).
|
||
|
||
При необходимости послать сетевую команду конкретному контроллеру используется расширенный формат команд. В
|
||
этом случае параметр \verb'[<num>]' является числом от 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}
|