Многим администраторам, обслуживающим серверную инфраструктуру так или иначе приходилось сталкиваться в своей работе с широко распространённой линейкой источников бесперебойного питания (ИБП) Smart-UPS торговой марки APC by Schneider Electric . Многие из тех, кому самостоятельно приходилось заниматься заменой батарейных картриджей и/или (о боже!) заменой аккумуляторных батарей в батарейных картриджах в этих ИБП, хорошо знают о том, что после замены батарей нужно проводить калибровку ИБП (Runtime Calibration ) для того, чтобы ИБП скорректировал расчётное время работы от батарей. Однако далеко не все знают о том, что после смены батарей на некоторых моделях "умных" ИБП APC требуются дополнительные манипуляции по сбросу внутренних регистров блока управления ИБП для того, чтобы время работы от батарей рассчитывалось действительно корректно. В этой заметке мы рассмотрим пример того, как отсутствие необходимых действий может привести к некорректной работе ИБП и то, как это можно исправить.
В качестве примера мы будем рассматривать одну из старых моделей линейки APC Smart-UPS – ИБП APC Smart-UPS 5000
(SU5000RMI5U
), 5kVA, 3750W.
После длительного срока эксплуатации ИБП (6 лет) без замены батарей, расчётное время работы от батарей (при условии их полной зарядки) даже при невысоком уровне нагрузки стало выглядеть очень уныло – порядка 11 минут при нагрузке ~33%
Чтобы узнать о том, каким на самом деле должно быть время работы от батарей при конкретной нагрузке, можем обратиться к сайту производителя, где на странице информации об ИБП на вкладке Technical Specifications в разделе Batteries & Runtime есть ссылка на график Runtime Graph
Так как в графике нагрузка указана в Ваттах, нам потребуется перевести процентную величину нагрузки, которую нам показывает ИБП в Ватты, то есть 3750W * 32,7/100 = ~1226W. Пройдёмся по кривой графика курсором мыши до, примерно, нашего значения нагрузки в Ваттах (шаг графика - 25Ватт) и узнаем какое ориентировочное время работы от батарей должно быть при такой нагрузке. В нашем случае это ~38 минут.
Таким образом, время работы от батарей на нашем ИБП при текущей нагрузке должно быть примерно в три раза больше от того, что мы сейчас имеем. Понятно, что в нашем случае для решения проблемы, в первую очередь, необходима замена аккумуляторных батарей, так как они уже отработали приличный период и вышли за пределы Expected Battery Life (см. скриншот выше), заявленный производителем, который оставляет до 5 лет.
Однако, проведя на ИБП горячую замену аккумуляторных батарей (без отключения продуктивной нагрузки) и выполнив после этого процедуру калибровки, мы обнаруживаем, что расчётное время работы от батарей не изменилось в большую сторону и по прежнему составляет около 10 минут.
Причиной такого поведения ИБП может являться то, что в процессе эксплуатации в блоке управления ИБП со временем могут меняться в меньшую сторону значения некоторых регистров, которые используются при расчёте времени работы от батарей. Поэтому при замене батарей, как минимум, может потребоваться корректировка регистра "0 " для того, чтобы последующий расчёт времени работ от батарей в процессе калибровки был высчитан корректно и не давал в дальнейшем ощутимых перекосов.
Сделать корректировку регистра можно при прямом подключении к COM-порту, расположенному на задней части ИБП. В Интернете можно найти материалы, в которых для корректировки регистра используются какие-то специализированные утилиты, например, утилита UpsDiag , описание использования которой можно найти в статье Калибровка ИБП APC Smart-UPS 1000 RM . В нашем случае данная утилита по какой-то причине не заработала, поэтому мы будем использовать подключение на COM-порт с помощью PuTTY .
Итак, общая последовательность действий по приведению нашего ИБП во вменяемое состояние будет такой:
1) Подключаемся к COM-порту и устанавливаем на ИБП регистр "0" в максимальное значение.
2) Устанавливаем на ИБП дату замены батарей и количество внешних блоков батарей.
3) Убедившись в полном заряде батарей и небольшой нагрузке (35/40%), запускаем калибровку.
4) Проверяем результат
Для подключения к COM-порту ИБП APC потребуется специальный кабель от производителя, который, как правило, поставляется в комплекте с ИБП. Этот кабель используется для прямого подключения к ИБП из ПО управления PowerChute Business Edition и он же может использоваться для прямого подключения через сторонние утилиты типа PuTTY .
Использовать какие-то сторонние и непроверенные кабели крайне не рекомендуется, так как на разных моделях ИБП последовательной порт используется для управления такими операциями, как, например, выключение ИБП, поэтому, по некоторым сведениям , даже само подключение неправильного кабеля может привести к неожиданным результатам.
В нашем случае, для подключения к ИБП SU5000RMI5U требуется кабель с интерфейсом RS-232C (DB-9M/DB-9F) с кодом APC 940-0024 (Кабель связи с ИБП по протоколу Smart Signalling )
На всякий случай приведу схему распиновки данной модели кабеля:
Прозвонив кабель, и убедившись в том, что это именно то, что нам нужно, подключаем его к COM-порту на задней панели ИБП (выделен оранжевым)
Если в Smart-Slot ИБП установлен модуль управления APC Network Management Card /NMC (выделен красным), то для возможности корректировки регистров ИБП через COM-порт, потребуется на время извлечь из слота этот модуль (в наше случае модуль из Smart-Slot может быть извлечён или включён обратно "на горячую"). Если этого не сделать, то мы попросту не сможем подключиться к ИБП в режиме программирования.
Второй конец кабеля подключаем к стандартному COM-порту компьютера. В нашем случае в качестве компьютера выступает физический сервер с COM-портом на базе ОС Windows Server 2012 R2 . На сервере запускаем утилиту PuTTY (с правами администратора), переходим на вкладку Serial и настраиваем параметры подключения к последовательному порту:
Открыв подключение к порту, аккуратно (не нажимая никаких лишних клавиш), нажимаем сочетание "Shift " + "Y ". Если нет никакой реакции со стороны ИБП, повторно нажимаем это сочетание, пока не появится ответ "SM ", что означает переключение сессии в режим Smart Mode
Затем нажимаем "1 ", ждём пару секунд и снова нажимаем "1 ". Опять же, важно не нажимать никаких других кнопок, и если с первого раза ИБП не ответил, то повторяем попытку снова, варьируя интервал между нажатиями "1" от одной до 4-5 секунд. Если ИБП не отвечает, можно попробовать перезапустить сессию подключения к COM-порту, так как замечено, что после некоторой безуспешной последовательности нажатий, ИБП может полностью перестать отвечать.
В результате парных нажатий "1" мы должны добиться от ИБП ответа "PROG ", что означает что мы успешно перешли в режим программирования.
Теперь мы можем обратиться к интересующему нас регистру "0". Для этого нажимаем на клавиатуре "0 ", на что ИБП должен нам вернуть некоторое hex-значение (в нашем примере это "44")
Увеличить или уменьшить это значение мы можем с помощью кнопок "+
" или "-
", при этом каждое нажатие будет сопровождается звуковым сигналом ИБП. Нам нужно выставить редактируемый регистр "0" в максимально возможно значение. Нажимаем кнопку "+
" до тех пор, пока не дойдём до самого большого значения "FF
" (если вдруг проскочили это значение, то значения пойдут повторно, начиная с самого малого "00").
После того, как нужное значение регистра установлено, нажимаем сочетание клавиш "Shift " + "R " для того, чтобы покинуть режим программирования. В ответ от ИБП мы получим "BYE "
На этом корректировка регистра закончена и окно PuTTY можно закрыть.
Дополнительно можем повторно переподключиться к COM-порту и убедиться в том, что ИБП возвращает именно то значение, которое мы установили. Используем туже последовательность кнопок ("Shift " + "Y ", "1 "…"1 ","0","Shift " + "R ")
Дополнительную информацию о том, какие ещё значения мы можем получать и передавать в режиме Smart Mode (SM ) при прямом подключении на COM-порт ИБП, можно, например в статье APC’s smart protocol.
После того, как работа с COM-портом завершена, можем снова вставить в Smart-Slot ранее отключенный модуль NMC .
Отдельное внимание стоит обратить на правильность установки констант, содержащих количество батарей и дату установки батарей, так как эти показатели, в купе с выше откорректированным регистром, влияют на расчёт времени работы от батарей. Установить правильные значения этих констант нужно до того, как запускать калибровку.
Если ИБП, как в нашем примере, управляется с помощью модуля NMC , то изменить значения количества батарей и времени их установки можно, например, через веб-интерфейс NMC, перейдя на вкладку UPS и выбрав в меню Configuration > general
Если со значением Last Battery Replacement всё понятно, то относительно значения External Batteries можно сказать, что всё не всё так просто, как кажется. Дело в том, что у разных моделей ИБП APC используется разная логика для подсчёта этого показателя. Некоторую обобщенную информацию по этому поводу можно найти в документе APC FAQ - FA156601 - Adding External Batteries to an SU, SUM, SURT, SURTA, SURTD or SUA series Smart-UPS XL . Помимо этого некоторую информацию можно получить на форуме поддержки . Точную информацию по той или иной модели ИБП можно попробовать поискать в документации к ИБП. Говорю "попробовать" по той причине, что не у всех моделей ИБП можно найти эту информацию в документации. Например, у рассматриваемого в нашем примере ИБП, такой информации в доступном на сайте документе User’s Manual просто нет. Возможно это связано с тем, что данная модель ИБП не предполагает подключение каких-либо дополнительных блоков батарей. Поэтому в нашем случае, в соответствии с вышеупомянутым документом FAQ, в поле количество батарей устанавливается значение равное 0 .
В качестве дополнительного примера приведу выдержку из документа Installation and Operation Smart-UP RT к другой модели ИБП (APC Smart-UPS RT 6000VA RM SURT6000XLI ), где конкретно расписано то, по какому принципу рассчитывается показатель External Batteries . Здесь объясняется, например то, что в случае, если к ИБП подключен один внешний блок батарей (SURT192XLBP ), то показатель External Batteries будет равен 2 , так как в подсчёт включается внутренняя батарея ИБП.
После корректировки регистра "0" и изменения количества батарей, ИБП может резко увеличить показатель времени работы от батарей. Для наглядности покажу этот скачок на графике в системе мониторинга Icinga :
Перед запуском калибровки ИБП нужно дождаться полного заряда батарей. В разных источниках в Интернете можно встретить схожую рекомендацию проводить калибровку при небольшой нагрузке в районе 35-40% от предельно допустимого значения. Рассматриваемый в нашем примере ИБП как раз имеет приблизительно такую нагрузку. Запустить процедуру калибровки можно, например, через веб-интерфейс NMC, перейдя на вкладку UPS и выбрав пункт меню Diagnostics
По окончании процесса калибровки расчётное время работы от батарей должно скорректироваться. На нашем графике хорошо видно, что после скачка, вызванного реконфигурацией ИБП, идёт провал, вызванный калибровкой, а после завершения калибровки расчётное время выходит на более вменяемый показатель.
В конечном итоге, в рассматриваемом нами примере, ранее отображаемое ИБП время работы от батарей с ~10 минут увеличилось до ~30 минут, то есть ощутимо приблизилось к показателю, который мы видели на графике на сайте производителя.
Дополнительные источники информации :
Подробности Опубликовано 29.11.2012 00:06Замена аккумуляторов и калибровка APC SMART-UPS
В процессе ремонта APC SMART-UPS часто приходится производить замену аккумуляторных батарей. Для дальнейшей правильной работы APC SMART-UPS необходимо корректно откалибровать батареи. Для этого очень удобно производить калибровку с помощью программы UpsDiag . Связь компьютера с APC SMART-UPS производится по последовательному интерфейсу RS232 2400 bps / 8N1. Схема кабеля для соединения по последовательному интерфейсу RS232 , приведена на рисунке.
Режим калибровки.
В режиме калибровки производится калибровка всех сервисных параметров. Ее суть заключается в измерении ёмкости аккумуляторных батарей методом заряда и их разряда на нагрузку. При этом вычисляется коэффициент ("регистр 0"), который прописывается в настройках. Калибровку батарей запускают командой "D". APC SMART-UPS не способны изменить показания "регистра 0" в большую сторону, увеличивая его при замене батарей. Для преодоления этого создана кнопка "Устранение неисправности при замене батарей". При нажатии на эту кнопку "регистр 0" прописывается большим числом и включается калибровка. При этом после калибровки APC SMART-UPS успешно переписывает "регистр 0" реальное значение.
Калибровка напряжения батарей
Необходимо измерить напряжение батарей прибором и сравнивать с показаниями APC SMART-UPS. Если необходимо скорректировать показания, вводите необходимую коррекцию. Регистры 4,5 и 6 являются неизменными константами и корректируются только согласно таблицы.
Команды для работы в терминальном режиме
(кнопка Терминал в программе или с помощью Гипертерминала) с APC SMART-UPS.
Работая в терминале, для ввода аппарата в режим мониторинга, первой подаётся команда "Y".
^A |
0x01 | Тип модели APC SMART-UPS. |
^N--^N | 0x0E | Включить APC SMART-UPS. |
^Z | 0x1A | Строка возможностей. |
A | 0x41 | Тест индикации и звука 2 сек. |
B | 0x41 | Напряжение батареи. |
C | 0x43 |
Температура внутреннего термодатчика. |
D | 0x44 | Калибровка батарей. |
E | 0x45 | Интервал самотестирования (14дней, 7дней, при включении, нет самотестирования) |
F | 0x46 | Линейная частота. |
G | 0x47 | Причина перехода на батарею. |
K--K | 0x4B |
Выключение с установленным интервалом. |
L | 0x4C | Входное напряжение. |
M |
0x4D | Максимальное напряжение от посл. опроса. |
N | 0x4E | Минимальное напряжение от посл. опроса. |
O | 0x4F |
Выходное напряжение, см. при работе от батарей. |
P | 0x50 | Мощность нагрузки %. |
Q | 0x51 | Флаг статуса. |
R | 0x52 | Выключение режима мониторинга. |
S | 0x53 | Команда выключения, выполняется за установленный период,действительна при работе от батарей. При появлении входного напряжения APC SMART-UPS включается. |
U | 0x55 | Имитирует сбой питания. |
V | 0x56 | Cтарая марка изготовления |
W | 0x57 | Self test . Тест работоспособности батарей. |
X | 0x58 | Результат Selftest |
Y | 0x59 | Вводит Smart в режим мониторинга. |
Z--Z |
0x5A |
Немедленно выключает APC SMART-U PS. |
a | 0x61 | Информация протокола. |
b | 0x62 | Ревизия программы. |
c | 0x63 | Имя определяемое пользователем. |
e | 0x65 | Минимальный уровень разряда батарей в %, для включения APC SMART-UPS после возврата питающего напряжения. Предотвращает частые переключения в связи со сбоями питания |
f | 0x66 | Уровень заряда батарей в процентах %. |
g |
0x67 |
Номинальное напряжение батарей. |
j |
0x6A | Runtime. |
k |
0x6B | Задержка подачи звукового сигнала. |
l |
0x6C |
Минимальное напряжение переключения UPS на батарею. |
m |
0x6D | Дата изготовления. |
n |
0x6E |
Уникальный серийный номер. |
o | 0x6F | Выходное напряжение при работе от батарей. |
p |
0x70 | Задержка выключения в сек. |
q |
0x71 | Время сообщения о разряженной батареи перед выключением питания в минутах. |
r |
0x72 | Задержка подачи сигнала в секундах. |
s |
0x73 |
Чувствительность. |
u |
0x75 |
При достижении данного напряжения в сети UPS переходит на батареи. |
x |
0x78 | Дата замены батарей. |
у |
0x79 |
(C)APCC Объявление авторского права. |
z |
0x7A |
Сброс пользовательских настроек к заводским. |
Shift + |
Команда увеличения юстируемых значений. | |
Shift
- |
0x2D | Команда уменьшения юстируемых значений. |
@nnn |
При вводе четырёх символов подряд выключает APC SMART-UPS на "nnn" десятых часа. | |
DEL |
0x7F | Отмена выключения т.е. команд @, S, K--K. |
~ |
0x7E | Регистр 1. |
" |
0x27 | Регистр 2. |
0 |
Коэффициент пропорциональный ёмкости батарей. | |
4 |
Регистр 4. | |
5 |
Регистр 5. | |
7 |
0x37 | Позиция переключателей. |
8 . | 0x38 | Регистр 3 |
9 |
0x39 | Оценка APC SMART-UPS качества сети. |
> |
0x3E | Сообщает о количестве установленных батарей в APC SMART-UPS. |
12:48 29.07.2016
Лечение психических расстройств ИБП на примере APS Smart-UPS 1000 (и калибровка)
Итак, предыстория. Дома есть сервер, есть комп жены и есть старенький проектор, лампа которого может очень обидеться на резкое пропадение напряжения. Поэтому в кладовке с сервером стоит достаточно мощный бесперебойник, к которому эти три потребителя подключены. Зовут его APC Smart-UPS 1000, модель SUA1000I.
Всё бы ничего, но в один прекрасный день бесперебойник посетило психическое расстройство...
Да, согласен, видок у него тот еще. Да и общий бардак в кладовке из-за неудобного размещения севера. Не подумал, надо было напротив входа ставить.
Его мощность 1000 ВА или примерно 630 Вт (в случае импульсных потребителей). Внутри живут две батареи по 12В, 12А/ч, что даёт 288 Вт/ч ёмкости. Мощности-то в принципе хватает, а вот время работы от родных батарей было не очень, плюс они старые и эксплуатируются при повышенной температуре (юг, как-никак).
Да и как водится у бесперебойников, последний комплект батарей он банально "надул" (перегрел при заряде, вплоть до деформации корпуса). Для увеличения времени работы от батарей были куплены два 53А/ч автомобильных аккумулятора, с которыми сервер мог работать уверенно несколько часов. А уж сколько он держал чисто сервер...
Когда руки дошли его откалибровать, я столкнулся с трудностями. По порядку. В общем, подцепил к серверу (для информации - стоит Centos 7) и начал установку необходимого ПО.
# yum -y install httpd apcupsd apcupsd-cgi
После установки надо заставить исполнять cgi скрипты, иначе не будет видно web-консольку.
Идем в /etc/httpd/conf/httpd.conf
и исправляем.
В разделе
Options Indexes FollowSymlinks ExecCGI
(строка 144)
Это разрешит исполнение CGI скриптов.
Если правильно помню, cgi скрипты сами по себе исполняться будут, подключение дополнительных модулей апачу не нужно. Ну да ежели чего - описаний в нете навалом.
Далее надо перетащить скрипты apcupsd-cgi в папку cgi-bin:
# ln -s /var/www/apcupsd /var/www/cgi-bin/apcupsd
Это создаст символическую ссылку, и именно для неё надо было разрешить символические ссылки в cgi-bin.
Теперь надо поправить /etc/apcupcd/apcupsd.conf. Для моего бесперебойника ничего не понадобилось менять, т.к. подключение по USB было уже настроено. Для других ИБП или вариантов подключений надо будет настроить соответственно.
После этого можно настроить запуск и запустить сервисы:
# systemctl enable httpd
# systemctl enable apcupsd
# systemctl start httpd
# systemctl start apcupsd
Теперь можно открыть браузер и поглядеть на дело рук своих. Открываем браузер и идём по адресу http://адрес-сервера/cgi-bin/apcupsd/multimon.cgi
Будет показано нечто вроде:
# yum -y install usbutils
и поглядел на вывод lsusb:
# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Опачки, никаких признаков подключенного по USB бесперебойника. Замена кабеля не дала ничего. Тут я начал подозревать нехорошее...
Пришлось искать альтернативу. К счастью, есть разъем сигнализации, через который бесперебойник можно прицепить к com-порту. И схема элементарная:
Надо только найти доноры разъемов. Когда доноры обнаружились, открылся забавный факт - это и был нужный кабель, изготовленный давным-давно. И рабочий.
Пришлось только прописать, что это кабель этой модели, подключенный к порту COM1 (/dev/ttyS0) в файле /etc/apcupsd/apcupsd.conf :
UPSCABLE 940-0024C
UPSTYPE apcsmart
DEVICE /dev/ttyS0
После перезапуска демона (systemctl restart apcupsd
) удалось добраться до бесперебойника. Оказалось, что это какой-то совсем странный, неизвестный науке зверь - Smart-???2 XL RM
.
Пришлось выключить apcupsd и подключаться консолью, для чего понадобится утилита screen
(ей проще всего).
# yum -y install screen
# systemctl stop apcupsd
# screen /dev/ttyS0 2400
То есть устанавливаем screen, останавливаем сервис бесперебойника (чтобы не лез в консоль), ну а последняя строка включает виртуальную консоль с подключением к бесперебойнику через порт /dev/ttyS0 (com1) на скорости 2400 бод. Остальные настройки стандартны (один стоп, без четности, 8 бит), поэтому мы их не трогаем.
Общение через консоль возможно текстовыми командами и может осуществляться в двух режимах - просто SMART (включается по послыке Y, ответ бесперебойника SM), либо в режиме PROG, позволяющем менять настройки (включение - посылка двух 1 с интервалом в 3-4 секунды).
Если кратко, то когда я начал глядеть регистры - ужаснулся: бесперебойник не знал кто он, почти все регистры содержали FF (все единицы), то есть на лицо была полная амнезия.
Самый примечательный момент, что бесперебойник думал, что он выпущен для канады (M в конце модели), причем вопреки всем описаниям в нете поменять этот параметр у меня почти не получилось. Но по-порядку.
Основополагающим документом для лечения было вот это описание команд:
apc
-fix.com/?r=attach2&a=dl&id=198
Также полезным оказалось руководство от apcupsd:
http://www.apcupsd.org/manual/manual.pdf ,
содержащее на странице 54 информацию о изначальных установках регистров для моей модели бесперебойника (формат изменён, чтобы удобнее было читать):
Модель: SUA1000I
Регистр 4: 07
Регистр 5: B5
Регистр 6: 13
Регистр 0: BC
Firmware: 652.12.I
Регистры 4-6 отвечают за какие-то внутренние процессы, нормального описания что они делают я так и не нашел. Но вот регистр 0 это изначальное состояние "качества" батареи. Если там будет 00, то бесперебойник считает батарею клинически мёртвой. Параметр изменяется в процессе эксплуатации самим бесперебойником (при самотестировании и при калибровке), но при замене батарей надо бы записать его назад, иначе будет не хорошо.
Итак, что прописать я знал, а вот осуществить переписывание....
В общем, при запросе версии прошивки я получал странный ответ "???.3.M ". Эти цифры описывают свойства бесперебойника. Последняя буква - регион. И буква M означает, что этот агрегат выпущен для канады. Вопросики - не отображаемые в данной кодировке консоли символы.
Анализ версии прошивки в старом формате показал, что это вообще стоечный вариант для серверов, а никак не тот "отдельный" бесперебойник, которым он на самом деле является. В общем, навязчивое состояние во всей красе. Судя по региону он считал себя Теренсом и Филлипом в одном флаконе...
Неприятными моментами тут были:
Напряжение в розетке влияет только на работу стабилизатора и моменты перехода на батарею. Поэтому, его вполне можно поправить как нужно для имеющейся версии с помощью масштабного коэффициента (через настройки).
Напряжение на выходе. Да пусть выдает, сколько ему хочется. Это поправится частично тем же масштабным коэффициентом, а также фактом того, что трансформатор внутри, обеспечивающий выходное напряжение, стоит от правильной модели.
Остаётся проблема с четыремя батареями. Но это не проблема. Берём масштабный коэффициент и меняем его так, чтобы 24в превратились в 48. Подключены 2 свинцово-кислотные батареи, которые в режиме поддержки (используемом в бесперебойнике для постоянного поддержания батарей в заряженном состоянии) требуют напряжение 2.32 В на ячейку, то есть для пары аккумуляторов это 2.32*6*2 = 27,84 В. Это при 20 градусах. А при бОльшей или меньшей температуре напряжение надо уменьшать или увеличивать на 0,025 В на градус. То есть для 27 градусов надо обеспечить примерно 17,6 В. На самом деле можно и чуть больше, лишь бы не превысить 29,5в, так как начнется бурное выделение водорода.
Запускаем консоль и включаем режим программирования, нажав 1, обождав 4 секунды и нажав еще раз 1. Получим ответ PROG.
Для просмотра номера модели надо послать ^A (то есть нажать Ctrl и не отпуская нажать латинскую A). Но в screen эта ^A отвечает за всякие настройки, поэтому там надо жать Ctr+A, отпускать, нажимать просто А, без контрола (маленькую а, без шифта).
У меня это действие вывело невообразимую чушь. Причем, исправить заблуждение через изменение модели бесперебойника (настройка b) мне так и не удалось.
Но оживить удалось, причем в результате двумя способами: убедить как есть и провести сеанс электрошоковой терапии (стереть память) с последующей психотерапией.
Жмем shift+b, чтобы послать заглавную B. В ответ я получим цифру вроде 55.74 , которую получил я (множитель был задвинут в максимальные FF). Это измеренное сейчас напряжение на батарее с учётом примененного множителя. При таких показаниях мой бесперебойник думал, что батарея заряжена по самое немогу и даже не пытался дозарядить.
А вот вольтметр показывал 26 с копейками, что весьма неприятно. Поэтому первой моей задачей было заставить бесперебойник заряжать батареи. То есть объяснить ему, что сейчас напряжение меньше нужного, а потом обеспечить правильное напряжение заряда.
Кстати, гелевые батареи бесперебойника требуют меньшего напряжения, так что надо обмануть бесперебойник и заставить выдавать столько, сколько надо нам, то есть считать, что он выдаёт МЕНЬШЕ, чем на самом деле.
Так что цепляем параллельно аккумуляторам вольтметр и начинаем крутить множитель следующим образом: после нажатия B беспребойник сообщает текущее измеренное значение, и если следующими посланными символами будут + или -, то он будет корректировать множитель (не так чтобы напрямую на единицу туда или сюда, но все же изменять), увеличивая или уменьшая его значение, что будет отражаться на измеренном напряжении батарей.
После нажатия + , беспербойник ответил 00 (что есть FF + 1, произошел переход через ноль) и я немедленно услышал щелчок реле и гул преобразователя, обеспечивающего заряд батареи. Ну и напряжение на батарее поползло вверх.
Жмём B, смотрим текущее напряжение. У меня было что-то вроде 11 вольт (множитель стал 0), теперь жмём попеременно + (можно несколько раз) и B и подгоняем вывод под нужный нам.
Вольтметр показывал 26,63 В, поэтому я постарался подогнать вывод B поближе к 53.0 (это удвоенные 26.5 В), чтобы бесперебойник не насиловал батарею, и в то же время был ближе к режиму заряда аккумуляторов с классическим электролитом, а не с гелевым (у них напряжение чуть меньше). При перелёте можно послать -, что уменьшит множитель.
После заряда батареи до почти полного состояния этот множитель также должен быть подогнан , чтобы получить 27,6-27,7 в на батареях, но уже не взирая на показания измеренного напряжения бесперебойника. Ну и еще несколько раз потом проконтролировано.
В таком состоянии уже идёт зарядка батарей, но надо настроить остальные параметры. Ну, удалось занести, настроить напряжения, переходы в тот или иной режим, запустить сервер и, смирившись с некоторыми непонятками в выводе проверить работу.
К сожалению, после приведения бесперебойника в относительно рабочее состояние, оценки связи с apcupsd, мне пришла в голову гениальная идея - вышибить клин клином - провести электрошок, то есть осуществить полный сброс настроек (команда ^Y). Поэтому описание настроек переключения на батареи я опишу в разделе второго метода лечения, так как точно не помню значений, которые были занесены в память и чего я там ему в первый раз накрутил.
Так что если захотите повторить - вы сделаете это на свой страх и риск, и главное - ДЕЛАЙТЕ ЭТО ПОСЛЕ ЕДЫ, зарядив бесперебойник.
Первым делом запрещаем запуск apcupsd и выключаем сервер:
# systemctl disable apcupsd
# shudown now
После выключения переключаем сервер на питание от сети, а к бесперебойнику подбираем какую-нибудь известную нагрузку (пару ламп на 100 Вт, 220 В, к примеру). Далее включаем сервер (или другой компьютер, куда подключите бесперебойник) и нагрузку.
Если не запретить запуск apcupsd, то после сброса настроек, когда бесперебойник впадёт в маразм, есть шанс самоотключения сервера. Да и вообще, мешается он консоли пока что.
Переходим в консоль, запускаем screen, переходим в режим PROG и сбрасываем настройки, нажав Ctrl и Y. Возможно, надо нажать пару раз. В результате бесперебойник ответит OK и запустит панику (впадёт в кому).
У меня он сразу же вырубился и отказался оживать, цыкая при нажатии на питание и отрубаясь через доли секунды. Пришлось полностью отключить от сети и батарей, подцепить батареи, воткнуть в сеть и прижать кнопку включения и удерживать её. Далее он может включиться и пищать, а может и не включиться и молчать, главное сейчас - прописать множители для батарей и сети. Он думает, что напряжения на входе нет, батареи разряжены и вообще жизнь не удалась.
НО. Хотя бы на батареях, при нагло зажатой кнопке включения можно с ним пообщаться, работа
В консоли запускаем режим PROG и смотрим версию через ^Aa и через b. У меня после сброса он стал считать себя Smart-UPS 500 разновидности D, то есть для рынка США. То есть номинально батареи 24в (как оно и есть), но при этом напряжение сети 110в. То есть сильно не получшело, но хотя бы батареи правильно стали. Хотя, конечно же, хрен редьки не слаще.
Можно ознакомиться с номинальным выходным напряжением бесперебойника, нажав o (малое латинское O). Он ответит что-то вроде 110, 208 или 230, в зависимости от половой идентификации.
Теперь о напряжении на входе. Жмём L, получаем что-то вроде 210.7, то есть сколько вольт сейчас на входе бесперебойника. У меня после сброса оно было 000.0, то есть сеть не видать (множитель сбросился в ноль).
Пока что оно нам надо только для запуска, то есть в районе номинального выхода. Жмём + и L попеременно, (+ можно по нескольку раз), пытаясь довести до номинального для нашей модели бесперебойника (или сколько он там думает). То есть в моём случае до 110в. Точность рояля не играет, это потом нужно будет. Где-то в районе 100 (измеренного напряжение) в моём случае бесперебойник перешел из аварийного режима в относительно нормальный, перейдя на питание от сети.
Теперь жмём l (малая L), получаем наименьшее напряжение перехода на батареи. Я у себя я установил l, выбирая наименьшее значение (жал попеременно + и l, пока не определил минимум и на следующем цикле не оставил его). Я для своего "псевдоамериканца" поставил 97. Запоминаем это значение, оно далее пригодится.
Жмём u (малая U), это максимальное напряжение перехода на батареи (для защиты оборудования от перенапряжения). Смотрим какие есть варианты (жмём + и u), оставляем максимум (у меня 133). Записываем его.
Теперь надо решить при каких напряжениях должен происходить РЕАЛЬНЫЙ переход на батареи. Для чего надо знать, что обычно творится у вас в сети. И тут уж сами помучайтесь, периодически записывая напряжения в сети.
Но главное, нам надо определиться, какой диапазон нам приблизительно нужен. Например, в моей сети часто бывает меньше 200 В. Обычно это от 195 до 230 В. Меньше бывает редко, больше - крайне редко, хотя 324 В в розетке было, даже фото имеется.
Итак, есть интересующий дипазон , есть диапазон =. Нам надо определить какой множитель ставить в измеряторе напряжения. Считаем коэффициент a = 97/195=0.5 и b=133/230=0,58. Как видим, имеется очень "вкусный" вариант с коэффициентом 0.5, когда показания будут отличаться от реальных ровно в 2 раза. Надо только установить верхний предел переключения в 230*0,5=115в, хотя на самом деле современные приборы прекрасно будут работать при повышенном напряжении. Я снизил порог до 127в.
Далее, берем вольтметр, измеряем напряжение в розетке и подгоняем показания L к нужному. Для коэффициента 0,5 и напряжении в розетке 210в надо получить 210*0,5=105 в показаниях. Жмём + или - и контролируем нажимая L.
Прописываем начальные настройки
Регистры 0, 4, 5, 6 - как описано выше. Не забываем про них, особенно про 0, так как это коэффициент емкости батарей, описывает их "живость".
Корректное отображение нагрузки
Вот тут понадобится одна-две (а то и больше) ламп накаливания. Нагружаем бесперебойник и смотрим чего нам скажет про нагрузку, послав ему P (большое латинское p).
Мне изначально сообщило 000.0, так как множитель был сброшен. Жмём - и подгоняем по вкусу. Мне удалось довести до 032.1 при множителе FF для нагрузки примерно в 280 Вт (300Вт лампа при пониженном напряжении в сети). Это примерно соответствует номиналу, так как для лампы 280 Вт это как раз примерно 320-350 ВА, то есть треть от номинальных 1000 ВА бесперебойника).
2) Идентификатор ИБП, получается по c. Жмём + и прописываем 8 символов нового идентификатора. У меня аккурат влезло SUA1000I.
3) Порог возврата питания после разряда батарей, получается по e, может принимать фиксированные значения (00, 15, 50, 90), перебираемые циклически по +/-. Поставил 15 (фактическое значение 01), чтобы после подачи питания он ожидал 15% заряда батарей. В противном случае если выключат свет и бесперебойник выключится, исчерпав заряд, а потом сразу после подачи питания включится, а свет снова выключат, то есть шанс получить аварийное выключение питания до отключения сервера, что не идёт на пользу жестким дискам...
4) Серийный номер ИБП, получается по n. Можно посмотреть на задней панели бесперебойника, под номером модели:
Я прописал свой. Кстати, первые две буквы - модель ИБП, первые две цифры (03) - год производства бесперебойника.
5) Дата производства ИБП, получаем по m, жмём + и прописываем что хотим. Например 01/01/03. Как-то в таком формате. Чисто информационная запись.
6) Дата последней замены батарей, получаем по x, чисто информационная. Аналогично дате производства прописал 01/01/15.
6) Чувствительность ИБП. получается по s, циклически переключается +/-, возможные значение H,M,L,A (высокая, средняя, низкая, авто, и у меня нет A.) Выставил M.
7) Количество подключенных доп. батарей, получаем по >. До сброса было 255, что весьма забавно. После стоял 0, что я и оставил.
Помним, что если на батарее напряжение больше необходимого, то жмём B, затем + и ждём некоторое время,а если меньше необходимого, то B и - и тоже чутка ждём. Время ожидания тем меньше, чем ближе заряд к 100%.
Для контроля степени заряда из консоли жмём f, получим что-то вроде 085.0 для 85% заряда. Подчёркиваю, что это МНЕНИЕ бесперебойника и оно будет правильным только после КАЛИБРОВКИ ЕМКОСТИ.
Закрываем консоль связи, для чего открываем новое окно терминала и убиваем screen:
# killall screen
Screen в соседнем окне терминала вылетит в командную строку с криком:
Terminated
Запускаем утилиту apctest, который после некоторого тупления и общения с бесперебойником выдаст меню:
# apctest
2016-07-22 16:19:55 apctest 3.14.12 (29 March 2014) redhat
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = Custom Cable Smart
mode.type = APC Smart UPS (any)
Setting up the port ...
Doing prep_device() ...
You are using a SMART cable type, so I"m entering SMART test mode
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing Smart UPSes.
Please select the function you want to perform.
1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
Q) Quit
Данная статься посещена некоторым аспектам эксплуатации и несамостоятельного ремонта APC SmartUPS 700 и аналогичных ИБП.
Вся эта информация подается «как есть» для ознакомления и за ее применение на практике ни я, ни корпорация APC ответственности не несем. На Ваш страх и риск. Там 220 Вольт, я Вас предупредил.
Предыстория.
Жил этот представитель источников бесперебойного питания у меня много лет в добром здравии, пока на крышку по центру не уронили нечто тяжелое, после чего у пациента полностью «отвалился мозг» и он не перешел в бессознательное состояние.
(надо отметить, что защитной пленки сверху платы уже не было, потерялась в сервис центрах)
Вскрытие показало несколько обгорелостей в районе соприкосновения заземленной крышки с платой и следы старых(не моих) ремонтов. Так как была возможность, ИБП был сдан в сервис, где его привели в чувство, и он еще пол года работал, после чего стал вести себя неадекватно. Решено было подключить его к компу и проверить пороги срабатывания, заряд батарей, и.т.п, ну на то он и «смарт», что много всего умеет показывать.
Подключаемся.
И вот тут начались проблемы, ни одна из схем шнурков для подключения его к компу не заработала, равно как и ни один имеющийся шнур. Все программы говорили что ИБП не подключен, а единственное что было видно в терминале это знак "?", появляющийся при включении, что говорило о якобы неожиданном исчезновении сетевого напряжения. После длительного изучения мануалов были найдены следующие данные:
Для коммуникации по Smart протоколу нужен шнур 940-0024С, вот он сам и его распайка.
Но, Как уже было сказано, подключение по этой схеме успехов не принесло. После дальнейшего копания во всемирной помойке, была раскопана схема Smart UPS 700, точнее платы версии 640-0730P, хотя у меня оказалась версия 640-0730N, различия оказались не принципиальными. Было выяснено, что на разъем DB9F на задней панели ИБП сигналы попадают через специализированную микросхему IC2(по схеме), очевидно, помимо всего прочего выполняющую развязку и согласование TTL UART с уровнями RS232.
Интересующие нас лини подключения RX(1 DB9) и TX(2 DB9) подключаются, соответственно, к выводам 15(SDI) и 4(SDO) этой микросхемы. Проверка резисторов и конденсаторов в этих линиях ничего не дала, из чего было выдвинуто предположение о выгорании входа SDI IC2. Поскольку заменить микросхему оказалось нечем, решено было попытаться подключиться к UPS минуя её. В данной модели ИБП используется микроконтроллер P83C654. Быстрое прочтение даташита на него показало, что общение с внешним миром происходит через стандартный Full Duplex UART, c TTL уровнями 5В, и приходят они на выводы SDO-UP(3 IC2)(TXD) и SDI-UP(14 IC2)(RXD) почившей микросхемы IC2.
Далее дело техники. В ближайшем магазине сотовой связи закуплен телефонный шнурок, а по сути USB-UART адаптер на контроллере PL2303, телефонный разъем удален, оставлены только линии RXD, TXD, GND.
Соединяем шнурок с выводами 3(TXD), 14(RXD), 8(GND), подключаемся на скорости 2400бод, данные 8бит, 1 стоп бит, без проверки четности, и ура! Всё работает.
По SMART протоколу, конечно, остальные линии IC2 ведь не использованы.
Калибровка.
Теперь о том, ради чего все и начиналось. По случаю у меня оказались 2 новых аккумулятора 12В 7,2А/Ч, после их установки, включения и проверки под нагрузкой в 2x100Ватт лампочки, результаты не обнадежили - ИБП проработал пару минут и отключился при полностью заряженных АКБ… Ну ясно, что что-то тут не так. Выполнение калибровки командой «D» в Smart режиме ничего не дало. Опять курим маны.
Все динамические характеристики батареи микроконтроллер хранит в регистре 0 энергонезависимой памяти, и при старении батареи, уменьшающееся значение коэффициента для расчета емкости заносится в этот регистр.
Так вот, сам UPS не умеет увеличивать значение этого регистра при выполнении калибровки! Необходимо записать туда значение по умолчанию - 0х96(в шестнадцатеричном виде)(для Smart UPS 700) вручную, через терминал, перед калибровкой, а далее, запустив калибровку с нагрузкой 30-40%, набраться терпения и ждать…
PS. Пара ссылок, которые помогли в решении вопроса. Протокол SmartUPS, описание регистров, схемы, всё что тут не поместилось.
Если замена аккумуляторов в бесперебойнике APC не дала ожидаемого результата: время работы от батарей не увеличилась, а утилиты говорят о неисправностях или низком заряде источника резервного питания - с большой долей вероятности поможет калибровка.
Все дело в том, что уровень заряда со временем уменьшается и эти данные сохраняются в специальной части памяти бесперебойника, т.н. 0-м регистре. При замене батарей значения этого регистра автоматически не увеличиваются, а при зарядке и управлении электропитанием ИБП ориентируется на это значение.
Поэтому, мало просто заменить аккумуляторы в именитом девайсе, нужно еще и выполнить тонкую настройку программной составляющей. Как это сделать на примере APC Smart-UPS SC1000 читайте в этой статье.
Изменение нулевого регистра, как и дальнейшие действия по калибровке необходимо производить подключив бесперебойник APC к COM-порту компьютеру (RS232) специальным фирменным кабелем DB9.
USB-кабели, а также кабели RS232m-RS232f, лежащие на полках магазинов по 100 рублей, в этом случае не подходят!
Изменение значений можно производить напрямую, используя Hyperterminal или более дружелюбные программы, например UpsDiag, бесплатно доступную для скачивания на официальном сайте .
Программа не требует установки и интуитивно понятна, с ее помощью можно просматривать в режиме реального времени основные параметры ИБП и изменить регистры. Кстати, настоятельно не рекомендуется менять какие-либо параметры не понимая последствий.
В сети и на форумах, после замены аккумуляторов в ИБП APC, рекомендуют изменять значения 0-го регистра на различные значения. Опыт показывает, что можно установить максимальное значение - FF, которое после калибровки бесперебойник сам изменит на правильное. Изменение значения регистра с помощью UpsDiag выполняется из вкладки “Калибровка”, нажатием правой кнопки мыши.
При всем богатстве возможностей, ничего кроме 0-го регистра изменять этой программой не рекомендуется, дабы не повредить оборудование. Во время внесения изменений бесперебойник может издавать звуковые сигналы, после чего можно закрывать программу и переходить непосредственно калибровке.
Калибровку батарей следует проводить штатной утилитой PowerChute, доступной для скачивания на официальном сайте APC . Весь процесс состоит из нескольких этапов:
С первыми двумя пунктами, думаю, проблем возникнуть не должно, для выполнения 3-го и 4-го скачиваем и устанавливаем PowerChute Windows Agent. Установка проблем обычно не вызывает, поскольку типична для Windows-приложений.
В ходе установки программа просканирует COM-порты, обнаружит подключенные ИБП APC и попросит придумать логин и пароль администратора.
После завершения установки агента, из программы установки можно выходить и запускать программу. Все управление осуществляется из браузера.
Для начала работы с PowerChute Windows Agent вводим придуманный только что логин и пароль администратора. Далее переходим в раздел Configuration и изменяем дату замены батарей, выбирая значения выпадающих списков месяца и года строчки Last Battery Replacement Date.
И наконец, из раздела Diagnostics в строке Select Diagnostic Action изменяем значение выпадающего списка на Runtime Calibration и нажимаем кнопку Apply .