32х канальный ребутер, для технических узлов, с интерфейсом RS-232

Мой старый проект, выполнен на базе микроконтроллера PIC18F452. 32х канальный Rebooter с интерфейсом RS-232. Решил с вами поделиться свой старой поделкой… :) Проект делался в марте-апреле 2008го года, заказали сделать, сделал… Сейчас можно и с вами им поделиться. В прочем, всё что написано далее это по сути копи-паст моего документа, которое сопровождалось с выполненным проектом…

Ребутер, для технических узлов с распределенной системой энергообеспечения. Rebooter_rs232

Фото спаянной платы устройства:

Читать далее… 

Содержание
    1.            Описание
    2.            Назначение
    3.            Возможности
    4.            Функции, команды
    5.            Примеры функций
    6.            Пример применения
    7.            Ограничения
    8.            Обратная связь

 

  1.            Описание

Настройки RS232 порта
— скорость порта — 9600
— аппаратное управление отключить
— включить «Echo»

Для работы с ребутером необходимо иметь:
 — права доступа к устройству /dev/ttyS0 на чтение, если это Линукс или FreeBSD
 — иметь терминальную программу — minicom, cu…
 — в терминале должно быть включено «Echo» что бы можно было контролировать что вводится.

 

Если ребутер исправен, то при включении должен мигать светодиод и в терминале должна появиться строка об версии устройства и его разработчике. Это сделано для проверки работоспособности COM-порта и устройства в целом.  Если этого нет, то это означает что:

— не корректно настроен терминал (должен мигать светодиод)
— поломка в rs232 кабеле (должен мигать светодиод)
— вышел из строя драйвер rs232, например, из-за некорректных заземлений (должен мигать светодиод)
— ребутер не исправен (не должен мигать светодиод)

Внутри каждой розетки должно быть установлено  реле. (или возле разетки)

 

2.    Назначение

— автоматизация управления зависшим оборудованием на местах удаленных от присутствия человека через RS-232 порт, позволяет администратору решать проблемы с зависшим оборудованием   расположенным в другом конце здания или города. (модемы, свичи…) удаленно, а так же возможность выявления проблемного оборудования не вставая с рабочего места.
— управление через RS-232 порт.
— установка в 19″ стойку(по желанию).

 

3.    Возможности

— Управление происходит через RS-232 порт на скорости 9600.
— Управление происходит через программу терминал, ASP,PHP или bash-скрипты
— Возможность коммутировать 1..32 розетки, задав их через терминальную программу.
•    по выбору, командой set (с восстановлением предыдущей конфигурации при включении)
•    по очереди, командой reboot (не влияет на значение при включении)
— Подключается к компьютеру посредством RS-232 порта ПК
— Мощность коммутируемого устройства, зависит от коммутируемого реле — до 250 Вт (при замене реле — возможно и 2КВт)
— Выбранная конфигурация командой set, сохраняется во внутреннюю память, т.е. — при пропадании питания в серверной и его появлении конфигурация восстанавливается.
Для его управления необходимо подключение к компьютеру (сервер, роутер и т д или преобразователь RS232<->Ethernet).

 

4.    Функции, команды

При включении устройства на терминал должны поступить данные с подсказкой об использовании и авторе
#, ?, reboot, set, *
Example: reboot 03 10+05+31!
Example: set 04 1(0)!
Rebooter v.6.0 www.projects.org.ua
(Stanislav G. Prihodko)

Команды доступные в ребутере:

?     — выводит сообщение подсказку, все строки сопровождаются переводом строки [0x0d],[0x0a]
*     — выводит 4байта состояний памяти об установках реле. сопровождаются переводом строки [0x0d],[0x0a]
#    — сброс некорректно введенной строки, возвращает [0x0d],[0x0a]
reboot  — перезагрузка выбранных реле и их последовательности
set    — установка отдельного реле в состояние 1 или 0  (значение зависит от распайки на реле)
! везде возвращаются коды 0x0d,0x0a

 

5.    Примеры функций

Команда » ? »
?
Для того что бы посмотреть помощь или пример работы с устройством, нужно в терминале дать команду: ? (не нажимая клавиши Enter) и появится следующее:

#, ?, reboot, set, *
Example: reboot 03 10+05+31!
Example: set 04 1(0)!
Rebooter v.6.0 www.projects.org.ua
(Stanislav G. Prihodko)

Команда » # «
#
Если в момент ввода ошибочно был введен не тот символ или ввели все верно но из за ошибки скорости RS-232 порта (это самая вероятная причина) не произошла операция перезагрузки, необходимо ввести команду — # (Shift+3). По этой команде происходит полная переинициализация буфера контроллера и устройство переходит в режим ожидания новой посылки команды с RS-232 порта.
Команду # можно нажимать в любой момент, включая профилактическую причину или если необходимо прервать длинный пакет который был только что послан на RS-232 порта.
После каждой команды # — осуществляется перевод строки, возвращает [0x0d],[0x0a]

Для контроля что команда была обработана микроконтроллером и исполнена должен осуществиться в терминале перевод каретки на новую строку. На некоторых терминалах: курсор может просто переместиться на строку ниже, не изменив положения в строке. Для профилактики можно просто дать команду # и после этого курсор переместится на новую строку в начало принужденно,
Если работа с устройством не через терминал, а через программу — то просто можно при подаче команды переключиться на чтение порта что бы узнать что все корректно.
На работу программы микроконтроллера это не влияет — это всего лишь отображение его верного опознания команды и ее исполнения! В этот момент на самом устройстве, сбоку, должен засветиться на 0.1с светодиод и погаснуть.

 

Команда «reboot»

reboot 03 10+05+31!
«reboot » — какую именно операцию выполнить(преамбула).
«03 » — количество устройств с которыми необходимо произвести  операцию перезагрузки — (выключить+3секунды ожидания + включить).
«10+05+31» — с какими именно розетками и в каком порядке произвести перезагрузку.
«!» — обязательный признак окончания команды. После ввода ! — начинается разборка указанного пакета микроконтроллером.

Если необходимо всего одну розетку ребутнуть (например 21-ю) — соответственно команда должна выглядеть следующим образом:
reboot 01 21!

— Задержка на выключение около 10 секунд
— момент включения и выключения другой реле почти мгновенный — программная задержка 0.1с

После того как была подана и распознана команда, по очереди (в той, в какой были указанны) устройства начинают перезагружаться, при чем — последовательно.

 

Пример BASH скрипта:

./TEST_RBTR.sh
#!/bin/bash
echo «#» > /dev/ttyS0
./reset.sh;
sleep 1;     cat all1.txt > /dev/ttyS0
sleep 60;     cat all2.txt > /dev/ttyS0
sleep 60;

./all1.txt
reboot 16 01+02+03+04+05+06+07+08+09+10+11+12+13+14+15+16!

./all2.txt
reboot 16 17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32!

./reset.sh
#!/bin/bash
echo «#» > /dev/ttyS0

 

Команда «set»

set 04 0! – снять напряжение с реле
set 04 1! – подать напряжение на реле
«set » — какую именно операцию выполнить(преамбула).
«04» — с каким именно реле выполнить операцию.
«1» — подать напряжение на реле. Или «0» — снять напряжение с реле.
«!» — обязательный признак окончания команды. После ввода ! — начинается разборка указанного пакета микроконтроллером.

Данная установка запоминается в памяти контроллера на все время пока не будет она изменена касательно именно этой розетки

— момент включения и выключения другой реле почти мгновенный — программная задержка 0.1с

Для того что бы узнать состояние всех розеток есть команда « * »

 

Команда » * «

*   – узнать стояние всех реле

* — выводит 4байта состояний памяти об установках реле.  Битовое поле из 4-х байт данных и 2 символа перевода строки, всего 6 байт:
[байт 3] – реле 32..25
[байт 2] – реле 24..17
[байт 1] – реле 16..9
[байт 0] – реле 8..1
[0x0d]
[0x0a]

При установки командой * — любого значения, оно запоминается тут же в памяти
При включении устройства ребутер – это состояние считывается и сохраняется в внутренние регистры, которые отображают значения регистров на состояние реле. Таким образом при включении восстанавливается состояние включенных розеток.

 

6.    Пример применения

Пример применения:
Удаленный узел с большим количеством модемов или серверов которые необходимо перезагружать по «скрипту» или удаленно определенные.
Обычно это технические узлы:
— интернет провайдеров
— кабельных операторов
— телекоммуникационные узлы
— всевозможные датчики

 

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

Настоятельно не рекомендуется командой «set» устанавливать подачу напряжения на реле больше чем в 3-4 розетки. Следствием нарушения этого ограничения может быть выходом из строя стабилизатора питания.
Причина — изначально устройство позиционировалось как «rebooter», а не как в «devices power manager»

•    Напряжение питания устройства         9-12Вольт
•    Ток БП должен быть из расчета         40мА*4 =320..350мА
•    Минимальное напряжение не ниже         9 Вольт
•    Максимальное напряжение не больше    13-14Вольт

Возможно следующее поколение, в будущем, будет реализовано как «devices power manager».

 

8.    Обратная связь
Stanislav G. Prihodko aka inVEnTER — xx/04/2008
ICQ#83332014

 

Исходный код и прочие исходники:

запайка елементов — Elements_to_solder

список элементов — Perechen_elementov

схема — rbtr_v6_sch

плата — rbtr_v6_T_B

шелкография — rbtr_v6_TS_BS

Описание и инструкция — Ребутер для технических узлов ver.6

Прошивка — кому понадобится — спросите…

 

3 комментария

Добавить комментарий