Как uzer, могу сказать что в таком виде программой пользоваться неудобно. Желательно после её запуска должен "высветиться" в виде таблицы список режимов со считанными данными и вопросом - "будем редактировать?" Если да, то жмем соответствующую цифру необходимого режима и c подробной расшифровкой каждого пункта вводим соответствующие значения. Это, чтобы не писать GUI. А мощность ТЭНа разве не участвует в программе, если к примеру у меня 3 кВт, то тогда как быть?gol_avto, 18 Сент. 17, 08:41
Да. Конечно. Она (программа) в данном виде и не рассчитана на диалоговый режим работы. Для этого нужно писать еще один "программный слой" - слой UI. Sorry, за небольшое отступление от темы, но в природе существуют два основных способа взаимодействия человека с компьютером. Диалоговый и пакетный. По сути, ничего другого до сих пор так и не придумано. Вы говорите о диалоговой программе. К сожалению, большинство современных пользователей сызмальства крепко "подсажено" на диалоговый режим. Поэтому пакетный режим часто кажется им неудобным. На самом деле это не так - у каждого способа есть свои плюсы-минусы. Про все эти +/- можно почитать в Сети, поэтому перейдем сразу к сути.
Когда нужно много экспериментировать с совершенно разными вариантами ректификации (а именно для этого и создавалась данная установка и система ее автоматизации) предпочтительней второй способ. Который здесь и выбран. Поэтому диалоговые возможности программы сознательно сведены к
абсолютному минимуму. Иначе добрая половина времени будет уходить на латание и перелатывание диалогов :)
Что из себя представляет управляющая программа? Это - объектная модель реальной установки, которой она управляет. Установка и ее модель "живут" одновременно. Одна в реальном, а другая в виртуальном мире. Они непрерывно обмениваются информацией (синхронизируются) друг с другом. Особенности данной реализации:
1. Эта модель написана на скриптовом (интерпретируемом) высокоуровневом языке python, который не требует предварительной компиляции. Поэтому вместо диаловых окон, связанных с "настройкой" программы используется непосредственное редактирование текста скрипта. Поверьте, это действительно гораздо проще, гораздо удобнее и гораздо гибче.
2. За счет создания классов-оберток всех основных элементов реальной системы, уровень абстрагирования получился достаточно достаточно высоким. Поэтому писать/редактировать скрипты просто и удобно. До неприличия. Нужно просто предварительно потратить немного времени, чтобы научиться разговаривать с малинкой на языке python и, главное, более-менее отчетливо представлять как нужно управлять процессом ректификации, который нужно запрограммировать в модели.
Если отключиться от технических деталей, то моделирование установки и нового процесса ректификации в целом выглядит так.
1. Сначала "строится" виртуальная модель "железа". Т.е. в виртуальном мире (в скрипте) создаются объекты, соответствующие реальным объектам установки. Классы этих объектов описаны и реализованы в соответствующих модулях (см. файлы
contr.py, sens.py). При создании объектов (т.е. при вызове конструкторов) можно указать все необходимые параметры. Они все именованы. Значения по умолчанию, естественно, соответствуют моему "железу". Но можно поставить другие. Кстати, создавая объект ТЭН, вот так можно указать его номинальную мощность в конструкторе:
teh = contr.TEH(vs, W_220 = 3000.0) # Создадим объект "ТЭН" с номинальной мощностью 3 кВт
Здесь
contr - имя импортированного модуля, в котором я описал класс TEH и его реализацию,
vs - ранее созданный объект "датчик RMS", который необходим для правильной регулировки мощности нагрева, а
W_220 - как раз номинальная мощность Вашего ТЭНа в ваттах (при 220 В). Явное указание
W_220 = 3000.0 как и скажет малинке создать "виртуальный" ТЭН с номинальной мощностью 3 кВт.
Точно так же создаются и другие объекты (датчики, клапан отбора и пр.). Кстати, при создании объекта класса SD (устройство отбора), тоже нужно указать ваш коэффициент пересчета % ШИМа в мл/час, полученный в результате калибровка клапана отбора. Например вот так:
sd = contr.SD(coef = 9.5053486617) # Создадим объект "устройство отбора"
У моего клапана с моим жиклером получилось 9.5 мл/час на 1% ШИМа. У Вас, естественно, будет свое значение.
2. После создания объектов описываются алгоритмы их взаимодействия. Это - режимы работы установки. Они пронумерованы (от 0 до 9) и описываются в так называемой "карте режимов". В карте режимов указываются все необходимые параметры режимов: мощность нагрева ТЭНа, необходимость стабилизации этой мощности, скорость отбора, необходимость регулирования скорости отбора и по какому алгоритму, условия окончания режима (по нескольким критериям) и номер режима, в который перейдет установка по окончанию данного. Все это очень подробно прокомментировано в скрипте управления (файлы nna_XX.py, где XX - номер версии). Если какие-то фрагменты непонятны - дайте знать - расширю комментарии. Параметры режимов тоже, естественно, указываются непосредственно в тексте скрипта. Какие-то дополнительные диалоги (типа "чего изволите?"), ИМХО, здесь просто неуместны.
3. Вот и все. Т.е. - буквально все. Ничего больше делать/писать не нужно. Запускаем скрипт на выполнение
и, если в карте режимов не предусмотрены "ручные" варианты управления, можем просто изредка подходить и любоваться работой установки. Весь процесс пройдет автоматически. Правда приемные емкости пока менять нужно вручную. Но это уже не относится к заданному вопросу.
Понятно, что для отлаженных/серийных процессов ректификации, все написанное выше нужно сделать только один раз. А потом, когда нужно, просто тупо запускать нужный скрипт командой python nna_XX.py :)