Техническое задание:
В серверной установлены 4 шкафа с оборудованием. Требуется включать сигнальную лампу того шкафа в котором температуры достигнет 30 градусов.
Системы домашней автоматизации |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Системы домашней автоматизации » Программирование контроллера Alpha SE » Сигнализация о повышении температуры
Техническое задание:
В серверной установлены 4 шкафа с оборудованием. Требуется включать сигнальную лампу того шкафа в котором температуры достигнет 30 градусов.
Для реализации нам потребуется:
- контроллер Alpha SE или ПК с программой Alpha controller,
- преобразователь интерфейсов,
- ИБП (Источник бесперебойного питания) или БП (блок питания),
- 1 модуль ввода-вывода SE6i5o,
- 4 датчика температуры.
Подключим оборудование по следующей схеме:
Опишем логику работы контроллера человеческим языком.
Если температура 1 термодатчика >= 30 { Замыкаем выход Point 8 модуля SE6i5o, т.е. включаем сигнальную лампу №1. }; Если температура 2 термодатчика >= 30 { Замыкаем выход Point 9 модуля SE6i5o, т.е. включаем сигнальную лампу №2. }; Если температура 3 термодатчика >= 30 { Замыкаем выход Point 10 модуля SE6i5o, т.е. включаем сигнальную лампу №3. }; Если температура 4 термодатчика >= 30 { Замыкаем выход Point 11 модуля SE6i5o, т.е. включаем сигнальную лампу №4. }; # Вход Point 0 будем использовать для сброса тревоги Если замыкается вход Point 0 модуля SE6i5o, { Размыкаем Point 8 модуля SE6i5o, т.е. выключаем сигнальную лампу №1. Размыкаем Point 9 модуля SE6i5o, т.е. выключаем сигнальную лампу №2. Размыкаем Point 10 модуля SE6i5o, т.е. выключаем сигнальную лампу №3. Размыкаем Point 11 модуля SE6i5o, т.е. выключаем сигнальную лампу №4. }
Переведя описанный нами алгоритм в программу Alpha SE Configurator получим следующее:
После символа # приведены комментарии к программе.
var[0]=Get_Points_State(1, 5); # Получаем значение 5 точки 1 модуля var[1]=Get_SES1I_Data(1); # Получаем значение температуры 1-ого датчика и сохраняем в переменную 1 var[2]=Get_SES1I_Data(2); # Получаем значение температуры 2-ого датчика и сохраняем в переменную 2 var[3]=Get_SES1I_Data(3); # Получаем значение температуры 3-его датчика и сохраняем в переменную 3 var[4]=Get_SES1I_Data(4); # Получаем значение температуры 4-ого датчика и сохраняем в переменную 4 # Датчики возвращают температуру со сдвигом 100 градусов. # При температуре 30 градусов датчик вернет значение 130. if (var[1]>=130) # Если температура 1 шкафа превысила 30 градусов, то { var[255]=Set_Relay_State(1,8,1); # Замыкаем выход Point 8 }; if (var[2]>=130) # Если температура 2 шкафа превысила 30 градусов, то { var[255]=Set_Relay_State(1,9,1); # Замыкаем выход Point 9 }; if (var[3]>=130) # Если температура 3 шкафа превысила 30 градусов, то { var[255]=Set_Relay_State(1,10,1); # Замыкаем выход Point 10 }; if (var[4]>=130) # Если температура 4 шкафа превысила 30 градусов, то { var[255]=Set_Relay_State(1,11,1); # Замыкаем выход Point 11 }; if (var[0]==1) { var[255]=Set_Relay_State(1,8,0); # Размыкаем выход Point 8 var[255]=Set_Relay_State(1,9,0); # Размыкаем выход Point 9 var[255]=Set_Relay_State(1,10,0); # Размыкаем выход Point 10 var[255]=Set_Relay_State(1,11,0); # Размыкаем выход Point 11 };
Хм, не лучше было бы сделать гашение лампы, если t опустилась до 30-29 градусов.
Или здесь выкладываются реальные, уже сделанные проекты?
# Вход Point 0 будем использовать для сброса тревоги
Если замыкается вход Point 0 модуля SE6i5o,
{
Размыкаем Point 8 модуля SE6i5o, т.е. выключаем сигнальную лампу №1.
Размыкаем Point 9 модуля SE6i5o, т.е. выключаем сигнальную лампу №2.
Размыкаем Point 10 модуля SE6i5o, т.е. выключаем сигнальную лампу №3.
Размыкаем Point 11 модуля SE6i5o, т.е. выключаем сигнальную лампу №4.
}
Просто здесь немножечко не понятно. Ведь мы сбросили тревогу, разомкнулись реле. Но температура то не опустилась ниже, а значит условие
if (var[1]>=130)
{
var[255]=Set_Relay_State(1,8,1); # Замыкаем выход Point 8
};
будет продолжать срабатывать и реле снова будут замыкать и замыкаться?
Сброс тревоги отдельной кнопкой сделан по аналогии с системами обнаружения утечки воды.
Если произошло превышение температуры об этом нужно сигнализировать. Даже если температура после этого упала, факт превышения все равно был и об этом нужно сообщить.
Допустим превышение произошло ночью или во время обеденного перерыва, когда в помещении никого нет. Далее через 5 минут произошло падение температуры. Если лампочка перестанет мигать никто так и не узнает, что что-то происходило. А следовательно не сможет проанализировать ситуацию.
Хм, не лучше было бы сделать гашение лампы, если t опустилась до 30-29 градусов.
Если сигнальную лампу требуется выключать при возвращении падении температуры, то Вы Максим абсолютно правы. Код будет выглядеть примерно так
if (var[1]<130) # Если температура 1 шкафа упала ниже 30 градусов, то { var[255]=Set_Relay_State(1,8,0); # Разамыкаем выход Point 8 };
И в том же духе с остальными 3 группами.
Просто здесь немножечко не понятно. Ведь мы сбросили тревогу, разомкнулись реле. Но температура то не опустилась ниже, а значит условие будет продолжать срабатывать и реле снова будут замыкать и замыкаться?
Если температура не упала до нормальных значений сброс кнопкой действительно не поможет. Даже об этом не подумал.
Но мы можем спасти положение, если вместо кнопочного выключателя поставим обычный. Пусть этот выключатель будет включать и выключать процесс контроля температуры.
Т.е. если выключатель замкнут, контролируем датчики и будем, включать лампы при превышении температуры.
Но если выключатель разомкнут, то превышение температуры нам безразлично.
Тогда код будет выглядеть так:
var[0]=Get_Points_State(1, 5); # Получаем значение 5 точки 1 модуля var[1]=Get_SES1I_Data(1); # Получаем значение температуры 1-ого датчика и сохраняем в переменную 1 var[2]=Get_SES1I_Data(2); # Получаем значение температуры 2-ого датчика и сохраняем в переменную 2 var[3]=Get_SES1I_Data(3); # Получаем значение температуры 3-его датчика и сохраняем в переменную 3 var[4]=Get_SES1I_Data(4); # Получаем значение температуры 4-ого датчика и сохраняем в переменную 4 if (var[0]==1) # Если выключатель замкнут проверяем пороги превышения температуры { # Датчики возвращают температуру со сдвигом 100 градусов. # При температуре 30 градусов датчик вернет значение 130. if (var[1]>=130) # Если температура 1 шкафа достигла 30 градусов, то { var[255]=Set_Relay_State(1,8,1); # Замыкаем выход Point 8 }; if (var[2]>=130) # Если температура 2 шкафа достигла 30 градусов, то { var[255]=Set_Relay_State(1,9,1); # Замыкаем выход Point 9 }; if (var[3]>=130) # Если температура 3 шкафа достигла 30 градусов, то { var[255]=Set_Relay_State(1,10,1); # Замыкаем выход Point 10 }; if (var[4]>=130) # Если температура 4 шкафа достигла 30 градусов, то { var[255]=Set_Relay_State(1,11,1); # Замыкаем выход Point 11 }; }; if (var[0]==0) # Если выключатель разомкнут, выключаем включенные лампы. { var[255]=Set_Relay_State(1,8,0); # Размыкаем выход Point 8 var[255]=Set_Relay_State(1,9,0); # Размыкаем выход Point 9 var[255]=Set_Relay_State(1,10,0); # Размыкаем выход Point 10 var[255]=Set_Relay_State(1,11,0); # Размыкаем выход Point 11 };
Вы здесь » Системы домашней автоматизации » Программирование контроллера Alpha SE » Сигнализация о повышении температуры