Хочу предложить для рассмотрения свой вариант автоматизации.
Оказалось, что принципы, которые я положил в основу проекта уже сформулированы коллегой. Полностью поддерживаю и полагаю, что я их воплотил в железе и софте.
Тут уже ответили, напишу и свою позицию:
1. Автоматика должна быть максимально "умной", чтобы самостоятельно управлять объектом автоматизации и принимать решения по нештатным ситуациям.
2. Вмешательство оператора в работу автоматики необходимо только для её первоначальной настройки и в случае аварии.
3. Контроль со стороны оператора должен быть удалённым (лучше по воздуху, чтобы не тянуть лишних проводов).
4. Автоматика должна собирать статистику своей работы для последующего анализа и более тонкой настройки.
Если первые три пункта ещё может выполнить процессор с небольшой памятью (типа Ардуино), то последний пункт, требующий достаточных объемов памяти для сохранения статистики и достаточных вычислительных мощностей для её анализа, таким процессорам не по зубам.
Одноплатные же компьютеры с такой задачей справляются уверенно.C-Bell, 01 Янв. 17, 05:28
При некоторой схожести с [Ненавязчивая автоматизация ректификационной установки]
проект самостоятельный с иной идеологией.
Проект называется Дистибот (дисти[лляционный] [ро]бот). Программы написаны на python под Raspberry Pi (исходные тексты на github).
Нагрев осуществляет индукционная плитка, управляемая программно Raspberry Pi.
Аппаратная часть была спроектирована в KiCad (тоже есть на github):
принципиальная схема
distibot2-2.pdf
и разводка печатной платы
pcb.pdf
Для оповещения использую pushbullet и получаю на смартфон сообщения о ходе процесса:
Сценарий работы задаётся текстовым файлом, например для дробной перегонки из СС:
dib-body-from-low-wine.play
В каждой строчке файла:
температура срабатывания, температурный датчик (boiler-куб, condenser-холодильник), выполняемое действие (метод на python), комментарий
Первая строчка сценария
00.0, boiler, start_process # старт
означает: при превышении 0°С по датчику куба запустить метод start_process,
в котором включается плитка на максимальную мощность и взводится таймер. Таймер нужен для борьбы с автооключением плитки, он раз в заданный период (у меня 1 час) делает выкл-вкл на 1 секунду.
Вторая строчка
65.0, condenser, start_watch_heads # включить датчик голов и охлаждение
указывает, что при достижении 65°С по датчику на входе холодильника запустить метод start_process, в котором:
- включается охлаждение холодильника (клапан на пуск водопроводной воды)
- активирует датчик потока на выходе холодильника
- плитка переводится на малую мощность
- активируется датчик старта голов
- блок соленоидных клапанов включает путь до сосуда сбора голов
Как только пошли первые головы, срабатывает датчик старта голов и активирует датчик окончания голов.
Далее при достижения уровнем собранных голов датчика окончания голов (уровень выставляется по расчётам от спиртуозности СС) плитка переводится на среднюю мощность для отбора тела и блок клапанов переключает путь до сосуда отбора тела.
Следующая строчка сценария
94.2, condenser, stop_body # прекратить отбор тела, переключиться на отбор хвостов
прекращает отбор тела, плитка - на максимум, путь для дистиллята (хвосты) переключается на третью ёмкость.
Последняя строчка сценария
98.5, condenser, finish # финиш
выключает плитку, питание с блока клапанов, отключает охлаждение.
На выходе системы охлаждения стоит датчик потока, который при отсутствии потока (перекрыли водопровод, обрыв подводки и т.п.) остановит весь процесс.
На протяжении всего процесса собираются данные с датчиков температуры, ведётся протокол действий, отправляются оповещения об этапах на смартфон, на веб-сайте дистибота строятся графики температуры датчиков, отображаются фазы процесса:
- отбор голов
- отбор тела
- отбор хвостов
На последнем снимке виден провал на оранжевом графике температуры от датчика холодильника: это сработала автоматика выкл-вкл плитки.
Проект, конечно же, ещё в развитии. Очень надеюсь получить от заинтересовавшихся конструктивную критику и советы.