Главная Проекты Идеи Soft О авторе
 

Управляем мощным UPS с нескольких компьютеров по USB HID.

Рис. 1 Внешний вид мощного напольного UPS.
Фото повернули на 90 град.
Увеличить

Вступление.

       После реализации первой версии проекта Smart UPS для китайского DVR - своими руками мне пришло очень много отзывов по UPS, их стыковки с персональными компьютерами, а также разнотипными записывающими устройствами (ТВ тюнерами, DVB ресиверами, DVR и т.д.).
       Если с последними все более или менее понятно (необходим контроль статуса и обратная связь по ИК - эмулируя комплектный пульт), то для работы с персональными компьютерами диапазон возможных решений существенно расширяется, с разнотипных простейших аппаратных решений (типа контроля +12V и замыкания контактов кнопки PW), до аппаратно-софтовых (от замыканий концов на RS232 интерфейсе до Smart решений на RS232 или USB интерфейс).

Рис. 2 "USB to Serial" внешний вариант.
Вид со стороны компонентов.

Постановка новой задачи.

       Как то мне по емайлу пришло письмо от Тесленко К. (его сайт Laboratory 'DA' ) с предложением разработать USB HID блок к его блочной системе "Умный дом". В задачу USB HID блока должно было входить оповещение одного или нескольких компьютеров о состоянии аккумуляторов питающего их UPS (если кто знает китайский, то подробнее про этот UPS в мануале к нему SSECO-010). Для серверных решений одним из условий было применение обкатанного "стандартного" софта со стороны сервера. В планируемой системе все блоки сидели на общей шине токовая петля (логический уровень RS232, но с дифференциальной опторазвязкой, на подобие RS485), гальваническая опторазвязка блоков между собой реализована на оптопаре PC817, USB HID блок питается от компьютера через USB, а опторазвязка от блока питания "Умный дом"...

Рис. 3 "USB to Serial" на заднюю планку.
Вид со стороны компонентов.

       Немного о причинах подобного решения: в управляемых компьютерах (а тем более серверах) аппаратного интерфейса RS232 изначально не было, к тому же городить USB<->RS232 блок или TTL<->RS232 блок на отдельной микросхеме экономически не выгодно, так как в случаи USB HID можно все сделать и без него.
       Т.е. требовалось встроить USB HID блок в готовую систему работая с подручными материалами. Поэтому, для ускорения проектирования, USB HID блок было решено делать на ранее разработанных заготовках блока USB HID - IR приемника , отображенных на рис.2 и рис.3 (дизайн топологии плат на заднюю планку и в корпусе разработал Тесленко К.) доработанного двумя оптопарами PC817. Другие варианты дизайна плат проекта IgorPlug2 вы можете найти на этой странице. Все они построены по общей схеме проекта IgorPlug2.

Протокол обмена.

       После беглого просмотра протоколов обмена на имеющихся UPS выяснилось, что во всех найденных моделях используется или Megatec протокол (в RS232 версии или USB HID почему-то названный "USB to Serial" ) или USB HID протокол основанный на футуре репортах.
       USB у нас софтовый, футуре репорты не тянет по определению, а в простом USB HID режиме работает. Почему режим USB HID назвали "USB to Serial" для меня так и осталось загадкой. Т.к. в HID спецификации нет RS232 режима. И никакой виртуальный порт RS232 (как в случаи с аппаратным USB и виртуальным RS232 портом построенным на CDC) в системе после подключения не появляется. Т.е. с виду самый обычный USB HID как USB мышка или USB джойстик.
       Но так казалось только в начале, при более подробном рассмотрении выявились управляющие пакеты на нулевой едпоинт. Т.е. если в мышке, клавиатуре или джойстике кроме ендоинта для передачи данных в компьютер имеется возможность принимать данные от компьютера (мигать светодиодами или для организации FeedBack), то под цели приема выделяется еще один едпоинт. Тут же прием управляющих пакетов ведется на нулевой ендпоинт...
       Т.к. описания протокола "USB to Serial" от Megatec в сети не обнаружилось, а большинство команд в нем совпадали с RS232 версией протокола Megatec, то немного понаблюдав за передаваемыми пакетами между разными программами контроля ( Winpower, Energy_Controller и UPSAssistant ) и исследуемым UPS удалось выяснить назначение, мнемонику и правила упаковки команд RS232 версией протокола Megatec , в 8 байтные USB пакеты.
       Так, повторяем все пакеты и дескрипторы 1 в 1, заливаем новую прошивку в собранное железо и подключаем его к компьютеру... И тут происходит совершенно непонятное - работает только официальный софт - Winpower, а две другие самодельные программы ( Energy_Controller и UPSAssistant ) вешаются сразу после передачи первого же пакета - даже ответ не смотрят.
       Как выяснилось позже во время дебагинга, свежесобранная прошивка, в начале, по недосмотру теряла несколько первых АСК пакетов и в результате программы ( Energy_Controller и UPSAssistant ) уходили в бесконечный цикл ожидания АСК пакета.
       Отступая от нашей темы, на примере USB HID - IR приемника , скажу, что Windows иногда сам теряет часть пакетов к USB HID устройству или от USB HID устройства. Ну например при отключении одного из устройств USB хаба переопрашиваются все устройства подключенные к нему и часть запросов могут потеряться сами по себе. А если софт обслуживающий устройство не рассчитан на такое, то это приводит к зависанию самодельных программ контроля и дешевых USB - SATA переходников. Вон плагин от USB HID - IR приемника три месяца лечили от детских болезней (потери устройства после Hibernate, выхода из спячки, отключения других устройств хаба и других подобных казусов).

Программа контроля.

       Но несмотря на найденные недостатки, по удобству использования, лучшей оказалась UPSAssistant v.2.3.2.76, ее более тяжелые аналоги (Winpower и Energy_Controller) имеют практически тотже функционал, но в десятки раз более тяжелые и требовательны к ресурсам компьютера (за счет этого немного более красивые - и все).

Рис. 4 Окно программы UPSAssistant v.2.3.2.76..
Работает с тестовой прошивкой для USB HID - IR приемника.

       Но рассмотрим функционал программы контроля на примере программы UPSAssistant v.2.3.2.76:
Данная программа имеет возможность отправлять отчеты о состоянии ИБП по электронной почте (с заданной периодичностью или по событию - предупреждая об аварийных ситуациях), предоставлять доступ ко всем тестовым функциям протокола Megatec /Centralion (таких как: включения/отключения звуковой сигнализации ИБП, теста батареи ИБП, прием данных о частоте и всех напряжениях), управлять энерго режимами компьютера (перевод компьютера в ждущий/спящий режим и выключение компьютера при отключении сетевого питания через заданный интервал времени или при снижении напряжения на батарее ниже допустимого уровня), имеет возможность отправки отчетов через Web (с помощью встроенного HTTP-сервера).
       После запуска иконка программы, UPS Assistant отображается в трее и показывает информацию по текущему статусу UPS с помощью трех возможных вариантов иконок – поступление энергии в норме, AVR и поступление энергии прекратилось.
       На тот случай если сайт автора программы UPSAssistant опять упадет или переедет - выкладываю копию UPSAssistant v.2.3.2.76 у себя.

Тестовая прошивка.

       Так как блочная система "Умный дом" практически полностью разрабатывалась Тесленко К. (его сайт Laboratory 'DA' ), а я не зная всей системы помогал создать только один стыковочный модуль (реализуя управление по командам от центрального модуля), то с разрешения автора всей системы Тесленко К., на своем сайте, я выкладываю только свою часть. То есть, набор прошивок (для процессоров ATMtga88, ATMtga48, ATMtga8 и схему железа проекта USB HID - IR приемника), которые используя встроенный USB эмулируют только верхний уровень протокола Megatec.
       В последствии выяснилось, что данный набор прошивок удобно использовать для отладки связи железа и программы на компьютере (написанной на Delphi 7 + компонент JVCL336 Build3248). В качестве интерфейса был задействован USB интерфейс от джойстика (прародитель модулей Hid джойстика проекта Mercury13 ) сначала вылеченный мной от глюков, а потом переделанный под работу с Future report (одна из модификаций HID протокола обмена). Для любителей копаться в чужом исходном коде выкладываю программу контроля, ее исходник и демонстрационный набор прошивок - одним архивом.
       Если данное направление читателем будет интересно, то набор прошивок можно расширить до самодельного контроллера UPS (его схема и печатная плата рассматривались в проекте Smart UPS для китайского DVR - своими руками) или до конвертора между Smart RS232 протоколом других фирм и USB HID протоколом Megatec почему-то названным "USB to Serial" (как писалось выше Serial'ом там и не пахнет там чистый USB HID и больше ничего нет). Или создать свой центральный модуль и к нему подключить несколько ведомых для вывода информации о состоянии общего UPS на несколько компьютеров. Так что все зависит от вашей фантазии... если данное направление будет мне интересно, то помогу с реализацией ваших хотелок в железе...




Продолжение следует....




Ограничения.

       Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.

       Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

       Если вы нашли на моём сайте что-либо интересное или полезное для себя и хотите видеть на этом сайте новые интересные проекты, а также поддержку, доработки существующих проектов, то все желающие могут поддержать данный проект, частично покрыть оплату хостинга, затраты на разработку и переделку проектов.

       Кошелёк для оплаты накладных расходов на сайт Z158779319858 в системе WebMoney.

       Принимаю только безвозмездную помощь :)


       Все статьи, опубликованные на этом сайте защищены Частью 4 Гражданского Кодекса Российской Федерации. Запрещено полное или частичное копирование материалов без согласия их авторов. Незаконное использование материалов сайта влечет за собой административную ответственность в виде компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст. 1301, 1250, 1252, 1253 ГК РФ]. При согласованном использовании материалов сайта обязательна активная ссылка на www.mindrunway.ru и указание авторства.



Copyright© 2007-2012 QuickWitted Почта     grani СОБАКА mindrunway РУ
Ссылки
Гостевая
Форум