Перейти к содержимому

Open

Фотография
- - - - -

Мониторинг параметров аквариумной воды.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 BorisKramer

BorisKramer

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 586
  • Откуда:New-York - Peterburg

Отправлено 12 Март 2017 - 03:17

*
Популярное сообщение!

Небольшой экскурс в историю.

Как-то раз обратился ко мне океанариум с предложением сделать небольшую систему для мониторинга состояния аквариумной воды. Задача была довольно интересной и я решил попробовать. Смысл задачи был очень простой. Незадолго до этого был инцидент с отказом систему регулирования подачи озона. В результате акулам пришлось чуть ли искусственное дыхание делать. Были потери. Основная задача системы любыми путями предотвратить подобное в будущем.

Вкратце описание задачи было следующим.
1. Контроль неограниченного количества танков в достаточно большом количестве помещений.
2. Контроль pH, Redox и температуры.
3. Максимальная устойчивость к отказам или вранью электродов.
4. Вывод всех параметров в диспетчерский пульт с круглосуточным дежурным.
5. Подача аварийного сигнала (сирена) при выходе параметров за границы дозволенного.
6. В случае опасной ситуации и отсутствия реакции персонала физическое отключение питания озонаторов.
7. Минимизация количества вновь прокладываемых проводов.
8. Максимальная надежность и дурако-устойчивость.
9. Остальные требования уточнить в процессе проектирования.

Далее попробую рассказать процесс решения задачи, основные технические решения и трудности которые пришлось преодолеть.

1. Проектирование надо было начать с выбора архитектуры системы. В качестве архитектуры решил выбрать просто набор независимых контроллеров исходя из одного или двух контроллеров на танк. Независимость контроллеров обеспечит повышенную живучесть системы, так как выход из строя одних никак не повлияет на другие. Иметь возможность использовать два контроллера на один танк захотелось по причине очень большого размера некоторых танков. При объеме главного танка в 750 тыс. литров разница в редоксе в месте озонирования воды и в месте слива может достигать значительных величин и хотелось иметь возможность измерения в двух удаленных друг от друга точках. Заодно можно будет оценить эффективность перемешивания воды.

2. Далее встала необходимость выбора интерфейса связи. Об использования wifi особо не думал в связи с большими размерами помещений, наличию толстых бетонных стен, кучи сторонних фирм с большим количеством wifi и общему недоверию в этой технологии для условно промышленного применения. Различные промышленные интерфейсы связи типа CAN тоже решено было не использовать, так как надо было кидать кучу проводов и не хотелось применять последовательные линии связи. В результате решили использовать обычный ethernet. Это было достаточно удобно, так как от нужных нам точек достаточно было дотянуться до ближайшего свитча. Отказоустойчивость самих свитчей во-первых достаточно высока, а во-вторых это забота персонала океанариума.

3. Теперь надо выбрать на базе чего делать контроллер. Тут подход был простой. Сделать можно на чем угодно, смотрим что есть под рукой и на что есть необходимые наработки. Под руку попался процессор Silabs C8051F120. Простой и неплохой чип.
Стандартная 8-ми разрядная архитектура.
8 канальный 12-ти битный АЦП с программируемым усилителем + 8 канальный 8-ми битный АЦП.
100 MIPS, 8кБ RAM и 128кБ флэша за глаза для достаточно простой задачи.
Сторожевой таймер на случай зависания.
Все основные интерфейсы тоже есть, хотя особо и не нужны.

Ну, раз процессор взяли silabs то и интерфейс ethernet решили у него же поискать. Вполне подошел С2200. Стандартный 10 BASE-T с возможностью подключаться к 100/1000 BASE-T.

4. Теперь подключение электродов. Для обеспечения максимальной надежности решили поставить по три электрода на каждое измерение. В этом случае можно сравнивать каждый электрод с двумя другими и отключать если его показания начинают сильно отличаться от двух других. А если не сильно отличаются то можно брать среднее арифметическое.

5. Выбрали первый попавшийся корпус и дисплейчик, подходящий по размерам, сбацали клавиатурку нарисовали схему и приступили к разводке. В процессе проектирования схемы на всякий случай добавили туда 4 оптоизолированных входа, 6 мощных выходов через IRFR9024, часы на DS1307 и два выхода ЦАП 0..12В. Запихали туда это все просто на всякий случай по принципу что может пригодится в будущем.

 

Получили платку

DAC03-back.jpg

и запихали ее в корпус.

В результате на первом этапе получили небольшую симпатичную конструкцию (у заказчика она выглядит еще лучше, это мой экземпляр).
IMG_5484.JPG IMG_5485.JPG IMG_5486.JPG

 

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


  • vahegan, Vladimir, Abelavin и 6 другим это нравится

#2 Илья+

Илья+

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 605
  • Меня зовут:Илья
  • Откуда:Пермь

Отправлено 12 Март 2017 - 07:11

какая в итоге была цена изделия?



#3 BorisKramer

BorisKramer

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 586
  • Откуда:New-York - Peterburg

Отправлено 25 Март 2017 - 10:33

не помню, это было 10 лет назад. даже в бухгалтерии думаю таких данных уже не сохранилось.



#4 BorisKramer

BorisKramer

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 2 586
  • Откуда:New-York - Peterburg

Отправлено 25 Март 2017 - 10:41

*
Популярное сообщение!

продолжение...

 

Далее набросали программу верхнего уровня.

Решили не делать никаких многооконных интерфейсов а просто запускать по одной копии программы на один танк. В танке могут размещаться до двух контроллеров. Соответственно получилось два окошка с показаниями электродов, 6 окошек для графиков и некоторые базовые элементы управления.

прога - главное окно.jpg

Сначала напихали в главное окно больше управления, но потом оставили только то, чем реально пользуются. Это выбор от какого комплекта датчиков управлять озонатором и по многочисленным просьбам зрителей кнопка, которая на 30 мин заглушает сигнал тревоги. Чтобы не орала пока разбираются с проблемой.

 

На графики вывели реперные линии с соответствующими настройками.

прога - настройки уровней.jpg

 

Линии верхнего и нижнего аварийных уровней когда начиная начинает орать сирена (а в случае превышения редокса еще и насильственно вырубается питание озонатора) и линии предупреждения когда на экране просто висит сообщение что неплохо было бы проверить банку. Для озонатора еще реперные линии гистерезиса управления для включения и выключения подачи озона (не питания озонатора).

Небольшое окошко настроек пределов осей графиков.

прога - настройки графиков.jpg

 

Окно настройки датчиков.

прога - настройки датчиков.jpg

Здесь указывается сколько контроллеров использовать - один или два. И для каждого контроллера можно отключить любой датчик. Это нужно например если датчик неисправен или физически отсутсвует, например, из-за того что кончились а новые забыли закупить.

Здесь также указывается очень важный параметр - допустимый разброс датчиков. Он работает довольно просто. Если немного утрировать алгоритм то датчик - дающий показания, отличающиеся от среднего арифметического двух других датчиков более чем на указанную величину, считается неисправным и отключается. Реально там немного более сложно, так как еще проверяется общая разумность показаний датчиков, их изменения на протяжении всей жизни датчика (можно предсказать когда он сдохнет) и т.д.

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

Далее задается период опроса датчиков. Он не особо принципиален и влияет в основном на размер файлов в которых сохраняются данные. раз в минуту признано вполне достаточным.
И важный момент - задержка реакции на плохие данные. Плохие (некорректные) данные могут прийти по любой причине. Это может быть просто включенный рядом сварочный аппарат :).
Не стоит на них быстро реагировать. Лучше подождать - может само собой рассосется.

 

Далее окно настроек связи.

прога - настройки связи.jpg

 

IP адреса контроллеров, серийные номера контроллеров (удобно как автотест наличия связи). Ручное включение-выключение подачи озона и питания озонатора и вызов окна MIO если надо вручную посмотреть/пощелкать входами/выходами.

прога - MIO.jpg

Ну и последний штрих - пароль, чтобы не лазили кто попало в настройки.

прога - пароль.jpg

 

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


  • Sleepy, spawn.adt, Vladimir и 2 другим это нравится




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных