Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Ненавязчивая автоматизация ректификационной установки

Форум самогонщиков Автоматика
1 ... 75 76 77 78 79 80 81 ... 132 78
OldBean Доцент Красноярск 1K 1.4K
Отв.1540  19 Февр. 19, 05:03
17.8. Клиенты redis для решения разных задач

Праздники не за горами, а спирт неуклонно заканчивается. Но сахарный сырец в достаточном количестве уже был в наличии. Решил провести ректификацию с помощью новой системы (ака вариант LITE). Получился хороший повод написать первое клиентское приложение для БД redis, которое позволяло бы это делать. Написал. Заодно сразу его проверил в реальном деле. Параллельно вносил в код исправления, дополнения и комментарии. С вечера пятницы провел две первичных ректификации спирта-сырца. Полученный ректификат (СР1) залил, не разбавляя, в куб. И сейчас неспешно (с перерывами "на работу" ;) идет вторая ректификация СР1 в СР2. Из части отобранного СР2 уже сделал 40%-ю сортировку. Органолептика "на нюх" очень даже приличная. Посторонних запахов нет. Да и сам запах спирта очень-очень слабый, "тонкий". На вкус еще не пробовал. Пусть постоит несколько дней. "Отдохнет". А там как раз и праздники...

В целом, результаты испытаний таковы. Вариант LITE в реальном процессе отработал, как говорят, "на пять". Ни одного критического сбоя. Ни в железе, ни в прошивках, ни в БД redis с прослойкой lsync, ни в только что написанном клиенте. Несколько раз были "выбросы" единичных отсчетов температур (причем, безо всяких корреляций с чем-нибудь ;). Они никак не влияли на работу. Поэтому отложил "разборки" с ними "на потом".

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

17.8.1. Простой клиент для классической кубовой ректификации (v.0.0.1.4)

Внешний вид приложения, работающего непосредственно на малинке, показан на рисунке ниже. Скриншот сделан во время запуска колонны (после перерыва) в процессе второй ректификации (получение СР2). Интерфейс приложения простой. Слева расположена инструментальная панель с элементами управления и полями вывода значений параметров процесса. На панели справа в графической форме представлена 20-минутная история изменения температур и невязки, используемой для старт/стопа (разность между температурой в нижней части колонны и уставкой). Точка 0 на оси времени справа - это текущий момент времени. Слева - история. Понятно, что "глубина" истории задается параметром, который можно менять. Цвета кривых на графике совпадает с цветами цифровых полей слева.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Смысл элементов управления и полей вывода информации в общем-то понятен ректификаторам. Поэтому ограничусь лишь краткими комментариями. На самом верху панели расположен таймер, который показывает время, прошедшее с момента запуска программы или последнего сброса таймера (кнопочка справа). Удобная опция.

Следующий элемент управления - чекбокс для управления контактором, подающим высокое на шины. Тут комментировать нечего.

Ниже идет группа радиокнопок для индикации и/или ручного выбора текущего режима работы установки. Набор режимов достаточен для проведения ректификации и обслуживания установки. Скриншот слегка устарел: сейчас добавлен еще один режим "Слив", про который я совсем забыл в начале разработки. Это слив остатков флегмы из узла отбора. В этом режиме клапан отбора полностью открыт, а ТЭН выключен.

"Пробежимся" кратко по режимам работы установки.

0) Мониторинг. Нагрев выключен, отбор тоже выключен. С этого режима система начинает свою работу после запуска. Если необходимо, это режим (как и все остальные) можно в любой момент выбрать вручную. Это, по сути дела, будет быстрое программное выключение установки.
1) Разгон. В этом режиме ТЭН включен на максимум, отбор выключен. После того, как кубовая жидкость закипит, пар пойдет в колонну и температура датчика в нижней части колонны превысит пороговую (сейчас установлено 65°C), система автоматически перейдет в следующий режим работы - холостой ход.
2) Холостой ход. В этом режиме мощность нагрева снижена до рабочей (у меня это 600 Вт). Отбор выключен.
3) Следующий режим "Головы". Как видно из названия, он предназначен для отбора голов. Мощность нагрева - рабочая, скорость отбора небольшая (у меня сейчас установлена - 50 мл/час). Включение этого режима (после установки соответствующей приемной емкости) и выключение его пока производится вручную.
4) и 5) Режимы "Подголовники" и "Тело" в данном релизе ничем не отличаются. Их разделение введено для будущих версий клиента. Мощность нагрева - рабочая (600 Вт), а скорость отбора - "базовая" (у меня 500 мл/час). В этих двух режимах может быть включено импульсное регулирование средней скорости отбора (старт/стоп), о котором поговорим чуть ниже. Также, как режим отбора голов, эти режимы (в данном релизе) включаются и выключаются вручную после замены соотвествующих приемных емкостей.
6) Хвосты. После того, как средняя скорость отбора тела (в частности, периоды "стопов" начинают существенно превышать периоды "стартов") и спиртуозность кубовой жидкости становится малой, этот режим может использоваться для отбора, так называемых, "исправимых" хвостов (оборотный спирт с примесями высококипящих фракций). Мощность нагрева - рабочая, скорость отбора базовая (у меня установлено 500 мл/час). Регулирование скорости отбора в этом режиме не производится. Завершение режима "Хвосты" автоматическое: после достижения температуры дефлегматора порогового значения (у меня установлено 78.5°C) система переходит в режим холостого хода. В данном релизе коррекция этого порога на атмосферное давление не производится.
7) и 8) Режимы "Пропарка колонны" и "Слив" предназначены для обслуживания установки. В первом случае мощность нагрева и скорость отбора максимальные. Во втором - нагрев выключен, а клапан отбора полностью открыт.
9) Ну и, наконец, последний режим "СР2" предназначен для отбора спирта во время второй ректификации. Мощность нагрева рабочая, скорость отбора понижена (у меня сейчас установлена половинка от базовой - 250 мл/час).

После группы радиокнопок "Режимы работы" на инструментальной панели расположен чекбокс для включения/выключения блокировки системы по температуре в трубке связи с атмосферой (ТСА). В отличие от блокировки по температуре охлаждающей воды (которая включена всегда), блокировку по температуре ТСА в некоторых вариантах работы приходится отключать. В частности, при пропарке колонны или при отборе голов при наличии большого количества летучих примесей в сырце. Поэтому и добавлен этот чекбокс на инструментальную панель.

Следующая группа полей - это текущие температуры всех датчиков DS18B20, подключенных к системе (соответствуют моменту 0 на графиках). Тут, в общем-то тоже комментировать нечего.

После полей температур, на инструментальной панели расположены средства управления регулятором скорости отбора в режимах отбора подголовников и тела. Текущее значение уставки выводится справа. Три кнопочки предназначены для редактирования значения уставки. Кнопочки "+" и "-" увеличивают/уменьшают уставку на один квант датчика DS18B20 (0.0625°C), а кнопочка с галочкой позволяет выбрать в качестве уставки к текущую температуру в нижней части колонны (потом, естественно, это значение можно скорректировать при помощи кнопочек "+" и "-"). Чекбокс в этой же группе элементов управления предназначен для включения/выключения регулятора средней скорости отбора.

Необходимо сказать пару слов по поводу самого регулятора средней скорости отбора в режимах "Подголовники" и "Тело. В данной версии клиента реализован самый простейший импульсный вариант регуллятора (ака старт/стоп) с фиксированной базовой скоростью отбора, с гистерезисом +- 1 квант относительно уставки и без коррекции самой уставки на атмосферное давление. Недолго было написать более качественный регулятор, но  тестирование и подбор параметров регулятора - довольно длительный процесс. Поэтому, из-за нехватки времени, и было выбрано простейшее решение. При правильном выборе базовой скорости отбора, уставки и без фанатизма в вопросе перевода остатков спирта в исправимые хвосты, можно получать неплохие результаты и с помощью простого старт/стопа ;)

Следующие поля на инструментальной панели носят чисто информативный характер и не нуждаются в специальных комментариях.

Исходный текст клиента - в архиве в приложении к данному топику. Текст очень подробно прокомментирован. Поэтому за остальными деталями можно обратиться к нему.

В заключение - пару слов как запускать клиента.

1. Поскольку клиент практически ничего не знает о реальном железе и может общаться только с базой данных, синхронизированной с железом, в системе должна быть установлена и запущена СУБД redis. См. топик про это.
2. Естественно, предварительно должен быть запущен и сам "синхронизатор" железа с БД. Т.е. модуль lsync должен быть запущен как обычное приложение или демон. См. топик и про то. После запуска, про синхронизатор можно просто забыть. Там кольцевая организация БД с двухсуточной историей.

После этого можно запускать клиентский скрипт и проводить ректификацию. Для этого, в отдельном терминале на малинке пишем:
python3 cli_0014.py
После небольшой паузы на загрузку модулей (графическая библиотека matplotlib мощная и замечательная, но для малинки, все-таки, тяжеловата), должно появиться главное окно приложения и начать обновляться информационные поля и графики. После этого, открываем кран с водой, включаем сетевой автомат, щелкаем по чекбоксу "контактор", затем "Разгон" и, как говорил Юрий Алексеевич: "Поехали!"... ;)

Добавление от 08.08.2019

Коллега ekochnev сделал исправления в скрипте cli_0014.py, обеспечивающие совместимость с версией Python 3.7.3
Модифицированный файл можно скачать из приложения к этому топику.


Ps
Для иллюстрации добавил несколько скриншотов, которые делал в процессе испытаний. Краткие комментарии прямо на картинках.

Предыдущий топик  Вернуться к оглавлению  Следующий топик
01_общий_вид_приложения.png
01_общий_вид_приложения.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
02_начало работы_с_сырцом.png
02_начало работы_с_сырцом.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
03_разгон_и_выход_на_стационар_в_кубе_сырец.png
03_разгон_и_выход_на_стационар_в_кубе_сырец.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
04_колебания_т-ры_вызванные_старт_стопом.png
04_колебания_т-ры_вызванные_старт_стопом.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
05_колебания_нарастают_пора_переходить_к_хвостам.png
05_колебания_нарастают_пора_переходить_к_хвостам.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
06_4_минуты_назад_перешли_к_отбору_хвостов.png
06_4_минуты_назад_перешли_к_отбору_хвостов.png Ненавязчивая автоматизация ректификационной установки. Автоматика.

cli_0014.py.zip 8.2 Кб
nic2015 Магистр Феодосия 219 56
Отв.1541  19 Февр. 19, 07:23
Пробую запустить cli_0014.py, выдает i@raspberrypi:~/Downloads $ python3 cli_0014.py
Traceback (most recent call last):
  File "cli_0014.py", line 8, in <module>
    import matplotlib.pylab as plt # Библиотека для построения графиков (и ниже)
ImportError: No module named 'matplotlib'. matplotlib установлена!

Добавлено через 7мин.:

На педыдущих тестах все работало.


Добавлено через 20мин.:

Модули прошиты новыми прошивками.
2019-02-19-072717_1824x984_scrot.png
2019-02-19-072717_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
2019-02-19-074824_1824x984_scrot.png
2019-02-19-074824_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1542  19 Февр. 19, 08:02, через 40 мин
Скриншоты мелковаты, но, похоже, у Вас не установлен matplotlib для 3-го питона. Попробуйте его установить:
sudo apt install python3-matplotlib
.
сообщение удалено
nic2015 Магистр Феодосия 219 56
Отв.1543  19 Февр. 19, 08:24, через 22 мин
С matplotlib получилось, спасибо. Пробую запустить lsync.py, просит адафруит. То же для 3 питона установить?
2019-02-19-081530_1824x984_scrot.png
2019-02-19-081530_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1544  19 Февр. 19, 08:40, через 17 мин
Да. Следуйте инструкции по установке, но, когда зайдете в папку адафруит, запускайте setup при помощи python3, а не просто python. Т.е. пишите
sudo python3 setup.py install


Исправил - добавил sudo
m16 Модератор Тамбов 1.9K 1K
Отв.1545  19 Февр. 19, 08:51, через 12 мин
Что не так с Raspberry Pi - интересная статья на хабре. каменты тоже стоит почитать.
сообщения удалены (5)
nic2015 Магистр Феодосия 219 56
Отв.1546  19 Февр. 19, 11:59
вот покрупней скриншот

Добавлено через 7мин.:

pi@raspberrypi:~/Downloads $ python3 lsync.py
Найдено следующее оборудование:
x11 Датчик RMS ( 65541.5535, 255, 255)
x12 Твердотельное реле
x13 PDM-контроллер ( 65541.5535, 255, 255)
x14 PWM-контроллер ( 65541.5535, 255, 255)
x15 Хаб 1-Wire. К каналам хаба подключены:
    0 Нормально разомкнутый контакт или пусто
    1 Нормально разомкнутый контакт или пусто
    2 Нормально разомкнутый контакт или пусто
    3 Нормально разомкнутый контакт или пусто
    4 Нормально разомкнутый контакт или пусто
    5 Нормально разомкнутый контакт или пусто
    6 Нормально разомкнутый контакт или пусто
    7 Нормально разомкнутый контакт или пусто
x16 PWM-контроллер ( 65541.5535, 255, 255)
x17 Твердотельное реле
x77 Датчик давления BMP180
Здорово работает!!!
2019-02-19-115825_1824x984_scrot.png
2019-02-19-115825_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1547  19 Февр. 19, 12:11, через 12 мин
Ну что-ж, первый вздох Ваша система сделала. Поздравляю!
Нужно прописать калибровки в датчик RMS и в контроллеры.
nic2015 Магистр Феодосия 219 56
Отв.1548  19 Февр. 19, 12:18, через 8 мин
А вот когда запускаю cli_0014.py не находит 16 PWM контроллер и 17 твердотельное реле.

Добавлено через 10мин.:

Нужно прописать калибровки в датчик RMS и в контроллеры.OldBean, 19 Февр. 19, 12:11
  Я наверно впереди паравоза бегу, калибровки это в cli_0014.py,

Добавлено через 1мин.:

?
2019-02-19-121736_1824x984_scrot.png
2019-02-19-121736_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1549  19 Февр. 19, 12:57, через 40 мин
А вот когда запускаю cli_0014.py не находит 16 PWM контроллер и 17 твердотельное реле.nic2015, 19 Февр. 19, 12:18
Оно и понятно. Универсален синхронизатор (модуль lsync). Он будет обслуживать все, что Вы подключите к шинам и хабам. Но клиент не универсален. В данном случае он "заточен" уже под мою конфигурацию и задачу (мне нужно было срочно спирт делать). Ну откуда клиент знает Что Вы собираетесь делать со вторым PWM-контроллером или вторым реле? Это же ему нужно как-то объяснить.

В данный клиент я заложил только то, что первый датчик RMS (с минимальным адресом на шине I2C) он будет рассматривать как основной. По нему он будет управлять мощностью нагрева ТЭНа. Он также будет считать, что ТЭН подключен к первому контроллеру PDM. Что первое твердотельное реле управляет контактором, а первый PWM-контроллер управляет электромагнитным клапаном отбора. Посмотрите текст клиентского скрипта. Там в самом верху про это написано.

Логику работы дополнительного (по сравнению с моим) оборудования Вам нужно будет задавать самому. Посмотрите внимательно текст скрипта клиента. Введите удобные имена для Ваших дополнительных устройств, в нужных местах добавьте нужную логику и т.д. Ежели что непонятно - спрашивайте. Подскажу, если буду знать что. Мне тоже интересно, как все будет функционировать на других конфигурациях оборудования. Но, для начала, советую подключить к хабу температурные датчики, сделать калибровку там, где это нужно и убедиться что все работает нормально. В той самой минимальной конфигурации, как у меня. Если не все датчики есть - можно слегка "подстричь" клиента.

PS
Калибровки - редкая/почти_разовая операция. Поэтому специального приложения с GUI для этой цели у меня нет. Есть консольный вариант. О нем писал раньше (кажется когда про lsync речь была). Сейчас мне уже уезжать нужно. Вечером расскажу подробнее как записывать калибровки в EEPROM.

PSPS
Хотя, может быть будет проще быстренько слепить панельку с GUI. Я подумаю.
nic2015 Магистр Феодосия 219 56
Отв.1550  19 Февр. 19, 21:06
запускаю в минимальной конфигуращии, ошибка(((

Добавлено через 5мин.:

Если не все датчики есть - можно слегка "подстричь"OldBean, 19 Февр. 19, 12:57
Подстричь нужно на 4 датчик?
2019-02-19-210451_1824x984_scrot.png
2019-02-19-210451_1824x984_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1551  20 Февр. 19, 05:25
Подстричь нужно на 4 датчик?nic2015, 19 Февр. 19, 21:06
Я рассчитывал, что моя конфигурация "минимальна", но, похоже, что-то из моего минимального набора у Вас отсутствует.

Мой минимальный набор, без которого клиент отказывается работать:

Исполнительные устройства:
1. Одно твердотельное реле (для управления контактором - это защитная функция)
2. Один PDM-контроллер (нужен для регулирования мощности нагрева ТЭНа)
3. Один ШИМ-контроллер (нужен для управления клапаном отбора с помощью ШИМ)

Датчики:
4. Датчик RMS (нужен для 1) контроля наличия напряжения в сети и 2) для регулирования мощности нагрева ТЭНа)
5. Датчик атмосферного давления (нужен для оценки спиртуозности в кубе и корреции уставки при длительных процесса ректификации)
6. Как минимум один 1-Wire хаб, к первым каналам которого подключены 5 датчиков температуры, установленные в следующих узлах установки:
  5.1. Датчик температуры в кубе (нужен для оценки спиртуозности кубовой жидкости по температуре кипения и завершения этапа отбора тела)
  5.2. Датчик температуры в нижней части колонны (20-40 см от нижней части колонны). Датчик нужен для регулирования скорости отбора при отборе тела.
  5.3. Датчик в дефлегматоре (нужен для определения окнчания отбора хвостов)
  5.4. Датчик в ТСА (носит в основном защитную функцию, но может, правда очень приблизительно, послужить и индикатором окончания отбора летучих в головах).
  5.5. Датчик охлаждающей воды на выходе дефлегматора (носит защитные функции).
7. Датчик дифференциального давления в кубе с 1-Wire интерфейсом, подключенный к любому свободному каналу любого 1-Wire хаба (если их несколько). Датчик, в сочетании с датчиком атмосферного давления, служит для уточнения давления пара в кубе. Я использую пленочный режим работы колонны. Поэтому поправка от этого датчика невелика. Но на него можно повесить и защитную функцию (если ТЭН пойдет в разнос и колонна захлебнется). Поэтому я решил его поставить.

Если конфигурация оборудования шире, чем описано выше, то эти "лишние" устройства должны иметь б'ольшие адреса на шине I2C и/или большие номера каналов, если речь идет об 1-Wire устройствах. Или, говоря на языке redis, иметь б'ольшие значения ключей, чем другие устройства этого же семейства. Данный клиент (cli_0014.py) просто сортирует список ключей устройств и берет первые подходящие устройства для "минимального набора". Остальные (в данной версии) он просто игнорирует. Их не обязательно отключать. Но если чего-то не хватает из "минимального набора" - клиент будет ругаться.

Как я понял из скриншота, по сравнению с моим "минимальным" набором, у Вас отсутствует диф. датчик давления и один DS18B20. Кстати, а где расположены Ваши датчики температуры?

Я думаю, более-менее универсальной клиент можно попробовать сделать. Это интересная задачка. Если четко определить минимальный набор оборудования и сформировать некие правила, по которым количество и ассортимент оборудования можно наращивать, то задача может иметь решение.
nic2015 Магистр Феодосия 219 56
Отв.1552  20 Февр. 19, 05:40, через 16 мин
Универсальный клиент, т е имеем минимальный набор по умолчанию, остальное оборудование определяется? Правила это тогда алгоритм работы установки?
OldBean Доцент Красноярск 1K 1.4K
Отв.1553  20 Февр. 19, 05:56, через 16 мин
остальное оборудование определяетсяnic2015, 20 Февр. 19, 05:40
Оно все и сейчас определяется, все есть и синхронизируется в БД. Клиент тоже знает о "лишнем" оборудовании. Он просто не знает Что с ним делать. Поэтому игнорирует ;)

Правила это тогда алгоритм работы установки?nic2015, 20 Февр. 19, 05:40
Ну первое правило понятно: дополнительное, по сравнению с минимальным набором, оборудование должно быть прошито и подключено так, чтобы значения их ключей были больше, чем аналогичные устройства из минимального набора. Чтобы клиент не перепутал, например, регулятор воды охлаждения с регулятором отбора. Или, скажем, реле контактора с реле включения разгонного ТЭНа.

Я еще мало думал на эту тему, поэтому по поводу других правил пока ничего сказать не могу. Можем вместе подумать и пообсуждать здесь.
nic2015 Магистр Феодосия 219 56
Отв.1554  20 Февр. 19, 06:08, через 13 мин
Дополнительное оборудование подразумевает изменения в конфигурации ректификации гной установки. Т.е тогда  некие стандартные конфигурации(варианты у клиента) должны быть?
OldBean Доцент Красноярск 1K 1.4K
Отв.1555  20 Февр. 19, 06:35, через 27 мин
Т.е тогда  некие стандартные конфигурации(варианты у клиента) должны быть?nic2015, 20 Февр. 19, 06:08
Скорее всего - да.

Одна стандартная конфигурация - это базовая (с минимальным набором оборудования). Я думаю, для простоты, пока можно ограничиться кубовой ректификацией. Поэтому должны быть: 1) куб, как минимум с одним регулируемым ТЭНом, как минимум с одним датчиком температуры и датчиком давления (?), 2) колонна как минимум с одним датчиком температуры, 3) дефлегматор с датчиком температуры и 4) как минимум один узел отбора с регулятором скорости отбора. С точки зрения электрики - обязательно нужно хотя бы одно реле для включения,отключения высокого. А дальше нужно проанализировать существующие схемы организации кубового ректификационного процесса: дополнительные узлы отбора, дополнительные ТЭНы, дополнительные реле, например, на воду и т.д.

Мне для жизни хватает и базовой конфигурации. Поэтому другой нет. Но если заинтересованные коллеги опишут здесь свои конфигурации оборудования то можно будет наметить какую-то стратегию реализации более-менее универсального клиента.
nic2015 Магистр Феодосия 219 56
Отв.1556  20 Февр. 19, 07:02, через 28 мин
Два узла отбора(головы из дефлегматора, тело из царги пастеризации) датчик температуры тса, датчик температуры колонны, датчик температуры куба. Отбор по температуре куба (польского буфера). Автономное охлаждение. Датчик диф.давления. Датчик атмосферного давления.Моя конфигурация такая. Для клиента сложно будет понять что от него хотят.

Добавлено через 11мин.:

В дополнение к базовой место на крейте позволит минимум одно решение добавить. Что наиболее популярно.
OldBean Доцент Красноярск 1K 1.4K
Отв.1557  20 Февр. 19, 07:58, через 57 мин
Для клиента сложно будет понять что от него хотят.nic2015, 20 Февр. 19, 07:02
Да не очень сложно. Если клапан отбора тела (из царги пастеризации) считать главным (т.е. именно он определяет температуру в колонне и имеет минимальный адрес из всех ШИМ-контроллеров), то регулятор отбора сейчас автоматически будет иметь дело именно с ним и будет при помощи него пытаться удержать температуру в колонне на нужном уровне.

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

Поэтому Вам понадобится только добавить логику для вспомогательного клапана. Отбора голов. Но если там отбор небольшой (т.е. не сказывается на температуре в колонне) и постоянный, то никаких проблем вообще не возникнет. Это можно заложить и в базового клиента. Т.е., например, если клиент находит в системе второй ШИМ-контроллер - он его рассматривает именно в таком качестве и автоматически генерирует необходимый интерфейс для управления им.

А температуру воды после дефлегматора Вы не контролируете? Ну если, допустим, помпа встала.
nic2015 Магистр Феодосия 219 56
Отв.1558  20 Февр. 19, 08:14, через 16 мин
Если неприятность с помпой датчик тса выручает, хотя по температуре воды оперативней будет. Отбор из второстепенного клапана мизерный( сначала головы 200 мл/час шим15%, затем когда отбирается тело ,от предыдущего отбора голов берётся шим11% , отбор того что окисляется в дефлегматоре при контакте с кислородом)

Добавлено через 3мин.:

По температуре кипения можно автоматически объём голов определять.
OldBean Доцент Красноярск 1K 1.4K
Отв.1559  20 Февр. 19, 08:39, через 26 мин
По температуре кипения можно автоматически объём голов определять.nic2015, 20 Февр. 19, 08:14
А это как?