Система предварительной водоподготовки представляет собой две 200л бочки, которые работают поочереди. Главная цель системы заключается в обеспечении достаточно длительного (больше двух часов) контактного взаимодйествия воды с гипохлоридом натрия, чтобы окислить все органические и неорганические вещества, удалить сероводород и аммиак.
Каждая из двух бочек обвязана двумя трубами с входным и выходным моторизованными шаровыми кранами. В каждой бочке находится два поплавковых датчика: полного заполнения и полного опустошения. Помимо этого, каждая бочка оснащена поплавковым выключателем, задача которого обесточить входной насос в аварийном случае отказа контроллера/кранов для предотвращения затопления помещения.
В основном - рабочем - режиме оба ВХОДНЫХ крана закрыты. У одной из бочек ВЫХОДНОЙ кран открыт, у другой закрыт. Выходной насос качает воду из бочки. При откачке сначала сработает верхний поплавковый датчик. Датчик слеп, он всего лишь говорит об отсутсвии воды, однако, он расположен высоко и вода еще есть. Поэтому этот сигнал игнорируется. По истечении неопределенного времени сработает нижний поплавковый датчик. Бочка оказывается действительно пустой. Сигнал с нижнего поплавкового датчика является триггером переключения бочек, заполнения опустевшей бочки и дозации гипохлорида. Обозначенные режимы активируются и выполняются асинхронно.
- Инициализация
- Расход воды (основной)
- Переключение бочек
- Заполнение бочек
- Дозация гипохлорида натрия
- Промывка колонн
- Аварийный
- Промывка колонн
Выполняется при подаче питания на контроллер.
- опрос датчиков уровня
- если обе бочки пустые, то:
- заполнить каждую
- выполнить дозацию в каждую
- выставить активную бочку
- если обе бочки полные, то:
- узнать, какая активная, ничего не менять
- если одна полная, вторая расходуется, то:
- узнать, какая активная, ничего не менять
- если одна полная, вторая пустая:
- выполнить переключение бочек
- если обе расходуются
- не предусмотрено
- если обе бочки пустые, то:
Основной цикл:
- периодический опрос датчиков уровня
Во время расхода воды возникнет могут наступить следующие события:
- опустится верхний поплавковый датчик (цепь замкнется), сигнал игнорируется
- опустится нижний поплавковый датчик (цепь замкнется), требуется переключение бочек
- время промывки: запрет на дозацию
После получения сигнала с нижнего поплавкового датчика:
- ВЫХОДНОЙ кран полной бочки открывается
- ВЫХОДНОЙ кран пустой бочки закрывается
- запускается режим дозации
- запускается режим заполнения бочки
- Контроллер открывает ВХОДНОЙ кран пустой бочки
- сигнал с нижнего поплавкового датчика игнорируется
- По сигналу с верхнего поплавкового дачтика (цепь размыкается), ВХОДНОЙ кран закрывается
Дозация выполняется при помощи дозирующего насоса только при переключении бочек. Насос получает импульс от контроллера и делает N впрысков на 200л воды. N рассчитывается по формулам, исходя из загрязненности воды.
- контроллер отправляет ШИМ-сигнал на сервопривод, который наклоняет коромысло к пустой бочке
- контроллер отправляет импульс на насос, выполняется дозация в нужном объеме
Фаза и ноль силового кабеля входного насоса разрываются поплавковыми выключателями. В рабочем режиме силовая цепь всегда замкнута и насос находится под напряжением. При заклинивании/отказе моторизованных кранов, ошибке контроллера начнеться переполнение. Любому из полпавков достаточно всплыть, чтобы разорвать фазу или ноль и обесточить насос.
В бесконечном цикле микроконтроллера производится регулярный опрос датчиков уровня. Любой датчик может сообщить: есть вода (1) или нет воды (0). Таким образом, можно интерпретировать сигналы с датчиков как биты. Поскольку датчиков всего четыре, а в байте 8 бит, то они будут складываться в младшие биты. Выбранная схема записи состояния:
- НП1_ВП1_НП2_ВП2 где НП - нижний поплавок, ВП - верхний поплавок, 1,2 - номера бочек Например, первая бочка расходуется, вторая полная. Тогда с датчиков будет снято 1011. Если записать их как биты, то будет 00001011, или 0x0B, или 11.
Возможны следующие состояния: Требуют действия: Bin - Dec - HEX 0000 - 0 - 0x00: воды нет вообще, поочередное заполнение 0011 - 3 - 0x03: переключение 1100 - 12 - 0x0C: переключение 1111 - 15 - 0x0F: бочки заполнены, открыть нужный OUT кран, закрыть IN кран
Промежуточные неопределённые, не требуют действия: Bin - Dec - HEX 1011 - 11 - 0x0B: вторая готова, первая расходуется или заполняется 1110 - 14 - 0x0E: первая готова, вторая расходуется или заполняется 1010 - 10 - 0x0A: активный расход или заполнение обеих бочек 0010 - 2 - 0x02: заполнение пустой системы, заклинило IN кран 1000 - 8 - 0x08: или это краткий миг при переключении при промывке
Невозможные состояния (могут рассматриваться как аварийные): Bin - Dec - HEX 0001 - 1 - 0x01 0100 - 4 - 0x04 0101 - 5 - 0x05 0110 - 6 - 0x06 0111 - 7 - 0x07 1001 - 9 - 0x09 1101 - 13 - 0x0D Тем не менее, несмотря на то, что верхний поплавок действительно не может подняться раньше нижнего поплавка, не исключены случаи залипания контактов.