В данной статье рассматривается возможный вариант реализации автоматизированной системы управления аппаратными ресурсами (на примере электромагнитных реле), привязанной к абсолютному времени.
Такая система может оказаться весьма полезной при решении задачи автоматизации испытаний различного оборудования.
Например, в некоторой испытательной лаборатории возникает необходимость автоматизировать перезагрузку по питанию исследуемых/испытываемых устройств в строго заданные моменты времени, привязанные к абсолютной шкале (например, в понедельник в 10:00).
Однако задача усложняется тем, что на решение о возможности выполнения операции управления питанием влияет текущее состояние других аппаратных ресурсов исследуемого устройства (например, того или иного уровня на выходной линии GPIO).
.
Последнее обстоятельство несколько усложняет решение и заставляет задуматься об использовании некоторого внешнего аппаратного модуля, имеющего поддержку необходимых аппаратных ресурсов для решения такой задачи, а именно: реле, часов реального времени, входных линий GPIO. Первые эксперименты мы провели на платформе Arduino. Однако когда возникла необходимость копировать это решение в больших количествах со стабильным качеством, стали смотреть в сторону готовых решений.
В результате мы настроили систему с использованием внешнего аппаратного модуля «Лоран-5» с возможностью контроля процесса управления через Ethernet.
Если говорить конкретнее, нам нужно было ненадолго сбрасывать питание тестируемого устройства каждый день ровно в 07:00 утра.
Однако никогда не следует выполнять сброс, если устройство продолжает выполнять критические операции.
В этом случае на выходной дискретной линии GPIO устройства устанавливается высокий логический уровень (+3,3 В).
Модуль Лорана-5 подключался к тестируемому устройству следующим образом.
Сигнал готовности устройства подавался на линию дискретного входа IO_1. А питание устройства проходило через нормально замкнутые контакты реле RELE_1. Если реле включено, питание тестируемого устройства будет прекращено.
Для настройки системы в первую очередь необходимо изменить направление GPIO IO_1 модуля Лорана-5 «на вход».
Самый простой способ настройки — через веб-интерфейс (адрес по умолчанию 192.168.0.101).
Заходим в раздел «Линии общего назначения IO1 – IO8» на главной панели управления.
Нажмите на «стрелку» рядом с линией IO_1 и измените направление этой линии GPIO на состояние «вход», чтобы проанализировать состояние линии «готовность» тестируемого устройства.
Далее мы создадим логические CAT-правила, которые будут обслуживать автоматический анализ «готовой» линии и управлять реле.
Перейдите в раздел CAT и нажмите кнопку «Создать новое событие».
Появится вот такое окно, в котором новому логическому правилу будет присвоен ID=1.
Выберем тип события RTC – выполнение задачи в указанное время.
В настройках события укажем время срабатывания – каждый день в 07:00.
В качестве реакции при возникновении этого события с помощью Ke-команд мы включим работу CAT-событий 2,3 и 4, которые создадим дальше.
Дополнительные логические правила нужны для того, чтобы проанализировать сигнал «готовность» устройства и избежать сброса питания, если оно к этому не готово.
Для ясности дадим символическое имя этому логическому правилу.
В результате в списке логических правил появится новое событие с ID = 1:
Добавим следующее логическое правило с ID=2, которое будет выполняться по таймеру с частотой 1 раз в секунду.
Укажем дополнительное условие, которое должно быть выполнено для того, чтобы логическое правило сработало, а именно, мы указываем необходимость низкого логического уровня на IO_1, тем самым сигнализируя о готовности устройства к сбросу питания.
Если все условия выполнены, то отключим события 2,3 и 4. Сбросим счетчик срабатываний по событию 3 (см.
ниже) и включим реле RELE_1 на 4 секунды, после чего оно автоматически вернется в исходное состояние.
исходное (выключенное) состояние.
Однако что делать, если устройство зависло, а будильник постоянно включен? Для этого мы будем использовать события с ID=3 и 4, в которых реализуем что-то вроде сторожевого таймера с отправкой тревожного сообщения, если в течение заданного времени устройство не сигнализировало о готовности к аппаратному сбросу.
Создадим событие с ID=3 с помощью обычного таймера с частотой срабатывания раз в 1 секунду.
Это событие на самом деле ничего не сделает, просто отправит пустую команду $KE. Однако каждый раз, когда оно срабатывает, счетчик триггера для этого события будет увеличиваться.
С помощью логического правила с ID=4 мы будем следить за этим значением и если оно превысит определенный порог (например, 300 операций, что соответствует 5 минутам), остановим работу и увеличим значение программной переменной VAR_1 на последующий анализ количества неудачных операций.
Общий набор логических правил будет выглядеть следующим образом.
Для запуска всей системы достаточно включить обработку событий с ID=1.
И тогда произойдет следующее: каждый день в 07:00 утра будет срабатывать логическое правило с ID=1. В этом случае в качестве реакции будет включена обработка событий с ID 2, 3 и 4. Если тестируемое устройство готово к сбросу питания (логический уровень 0 на сигнальной линии) - в рамках работы правила ID=2 обработка событий 2-4 будет отключена, счетчик срабатываний для 3-го правила будет сброшен в случае возникновения чрезвычайной ситуации, а питание устройства будет сброшено кратковременным включением реле.
Параллельно запускаем сторожевой таймер, который отсчитывает время раз в секунду.
Проверив значение сторожевого таймера в правиле ID=4, мы можем прервать ожидание и сигнализировать о сбое всей операции за этот день, увеличив программную переменную VAR_1, значение которой затем можно запросить через TCP/HTTP. для последующего анализа.
Теги: #тестирование ИТ-систем #автоматизация тестирования #реле управление по расписанию
-
Топливо
19 Oct, 24 -
7 Минут Ужаса
19 Oct, 24 -
Индийские Программисты Покидают Америку
19 Oct, 24 -
В Преддверии Праздника Связиста
19 Oct, 24 -
Экстремальное Именование Доменов
19 Oct, 24