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

Автоматика CONTRONIUS (продвигаемая Счастливчиком)

Форум самогонщиков Товары и услуги Обсуждение товаров
1 ... 4 5 6 7 8 9 10 ... 29 7

Для автоматики разрабатывается мобильное приложение. Оно должно быть...

  1. простым, наглядным, полнофункциональным
    41
  2. тупым показометром основных настроек, а также сообщать об авариях
    8
  3. Оно нафиг не нужно
    14

Всего голосов: 63

Phisik Доктор наук Екатеринбург 656 1.4K
Отв.120  26 Авг. 21, 12:15
Это в нашем новом регуляторе реализовано, на выставке Винокур Экспо показывали.Счастливчик, 26 Авг. 21, 11:10
Вот то, что вы продаете в данный момент за 23-25к на своем сайте. Силюсь найти контактор или хоть что-то для программного/автономного размыкания ТЕНа...
контактор.png
контактор. Автоматика CONTRONIUS (продвигаемая Счастливчиком). Обсуждение товаров. Товары и услуги.

Ну это супербаза.Счастливчик, 26 Авг. 21, 11:10
Правда? Тогда будьте добры, перестаньте раздавать советы типа "Два датчика температуры, два реле и два клапана, твердотелку или регулятор - дистилляция и ректификация за те же 200 рублей без обвеса."?
сообщения удалены (2)
Счастливчик Специалист Москва 180 23
Отв.121  26 Авг. 21, 12:16
Иначе как объяснить Ваше появление здесь, и вашего адепта?АЛКОнавт 163, 26 Авг. 21, 11:47
Сергей не адепт, он член нашей команды - разработчик. Схемотехника вся наша - его рук дело.
В реальной жизни автоматизирует крупнейшую в России ткацкую фабрику. Тысячи промышленных контроллеров его собственной разработки и софт единый.
И мы все вечерами играем в Contronius)) Играем в серьезном смысле.
И пользуясь случаем упомяну ещё третьего нашего адепта, его здесь нет, Сергей Мицковец - в реальной жизни пишет веб-системы для РЖД, Минобороны, Ростуризма, и правительства Москвы. Если Вы покупали через мобильник билет на поезд, то уже пользовались плодами его труда.
Вот он веб-часть делает и приложения под Андроид и iOSx
gxtkjdjl Профессор архангельск 6.4K 1.7K
Отв.122  26 Авг. 21, 12:19, через 3 мин
Знаю, был там забаненАЛКОнавт 163, 26 Авг. 21, 11:47
это по нашей теме форум-секта?просто попадал по поиску в один форум так там п.б головы, генерирует, нбк бытовая-миф, и колонна настоящая для них-залупа какого то юсовца. толи мейсона толи тайсона. (у её деф в сторону смещён) остальное и не колонны вовсе
Счастливчик Специалист Москва 180 23
Отв.123  26 Авг. 21, 12:25, через 7 мин
Вот то, что вы продаете в данный момент за 23-25к на своем сайте. Силюсь найти контактор или хоть что-то для программного/автономного размыкания ТЕНа...Phisik, 26 Авг. 21, 12:15
Это просто силовой блок со стабилизацией без этого всего.

Новый регулятор мы на выставке ВинокурЭкспо в мае показали, он пока готовится к производству. Если интересно видос могу выложить, где при пробое симистора, обрыве любого провода регулятор выдает сообщение "Обрыв". Ну и на ножку сигнал выводится. Дальше на контактор можно или куда.

Вот только вопрос - а готовы пользователи это покупать?

Я вот пока честно не знаю. После какой-то цены на блок, они даже супер-пупер безопасные перестают тупо продаваться.

И китайцы например их не хотят продавать. Я же упоминал, что мы сами железом не занимаемся, в смысле продаж и изготовления. Мы разрабатываем только.
Так что кроме технического решения вопрос гораздо многогранные.
Железку сделать это пол дела.

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

мейсона толи тайсонаgxtkjdjl, 26 Авг. 21, 12:19
Никсон - Стоун
Phisik Доктор наук Екатеринбург 656 1.4K
Отв.124  26 Авг. 21, 13:42
Вот только вопрос - а готовы пользователи это покупать?Счастливчик, 26 Авг. 21, 12:25
Собственно этим все сказано. Кто-то готов жертвовать безопасностью, ради прибыли, кто-то нет.

Мне много раз предлагали сделать тот же ХД под заказ, особенно после гибели Максима. Но я этого не делаю, т.к. в отсутствии нормальных систем безопасности я не готов брать на себя ответственность за существующие риски, а времени довести все до ума пока нет, да и ковырятся в чужом коде надоело.
После какой-то цены на блок, они даже супер-пупер безопасные перестают тупо продаваться.Счастливчик, 26 Авг. 21, 12:25
Ну, давайте прикинем на 3-4 кВт: контактор 1тр в розницу, УЗО в розницу 1тр, коробка из леруа в розницу 1к, собранная плата электроники на attiny/atmege/stm-ке/чем угодно c того же JLCPCB 500р (при штучных заказах),симистор с радиатором + 1к, трансформатор тока, экранчик другая мелочь, ну, пусть еще 1к.

Итого безопасный блок из купленных в розницу деталей обойдется 5.5тр. Накинем 100% прибыли, получим 11тр. С учетом оптовых закупок у поставщиков должно получиться меньше 10тр. Т.е. столько же, сколько ваш текущий стабилизатор.

И китайцы например их не хотят продавать.Счастливчик, 26 Авг. 21, 14:25
Было время, когда вы, Павел, сидели у себя в каморке, сверлили отверстия в тарелках, рассказывали о том, что все надо делать в России, оставляя прибыль и формируя рабочие места в стране, что кругом на нас пытаются заработать жадные товарищи перепродавая нам китайские железки, или впаривая дорогущие темы типа режима эмульгации(aka "Лохотрон от Шульмана"), "Польский буфер, УНО и другое УГ". Было даже интересно наблюдать за вами.

А теперь вы рассказываете, что не можете предложить людям безопасные блоки, т.к. ленивые китайцы отказываются их производить, и пытаетесь дважды собрать с людей за китайское железо и возможность этим железом пользоваться. Ну, такое себе превращение куколки в бабочку.
AsFhg Доктор наук UUS 717 184
Отв.125  26 Авг. 21, 13:42, через 1 мин
Счастливчик, вы манерой общения напоминаете МЛМщика высшего уровня.Третий, 26 Авг. 21, 10:03
он не напоминает, он и есть такой. он и видео на канале специально в такой манере делал, хайповой. поэтому столько дизлайков Улыбающийся
возможно такой подход работает, он ведь не первый день в бизнесе

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

Было время, когда вы, Павел, сидели у себя в каморке, сверлили отверстия в тарелках, рассказывали о том,Phisik, 26 Авг. 21, 13:42
это вообще - в точку
Автоматика CONTRONIUS (продвигаемая Счастливчиком)
Автоматика CONTRONIUS (продвигаемая Счастливчиком). Обсуждение товаров. Товары и услуги.
сообщение удалено
Счастливчик Специалист Москва 180 23
Отв.126  26 Авг. 21, 14:39, через 58 мин
Итого безопасный блок из купленных в розницу деталей обойдется 5.5тр. Накинем 100% прибыли, получим 11тр. С учетом оптовых закупок у поставщиков должно получиться меньше 10тр. Т.е. столько же, сколько ваш текущий стабилизатор.Phisik, 26 Авг. 21, 13:42

Вы отлично считаете деньги, прибыль и учитываете желание заказчиков. Отвечу коротко, при наличии реального интереса сделать такое - двери открыты. Давайте обсудим. Железки есть, мы ищем партнеров, пишите в личку. Мы не производственная компания. Мы разработчик, работаем не как хотим, а с учетом сложного клубка инвестиции, спрос, возможность и т.д. и т.п. Не все очевидно в реальном мире из того, что пишется в рамках общения на форумах.

Было время, когда вы, Павел, сидели у себя в каморке, сверлили отверстия в тарелкахPhisik, 26 Авг. 21, 13:42

И получались отличные тарельчатые колонны. До сих пор пылятся на складе. Ибо на царге с медной рпн то же самое, а геморроя меньше. Это был процесс накопления опыта и щупания технологий изнутри.

А теперь вы рассказываете, что не можете предложить людям безопасные блоки, т.к. ленивые китайцы отказываются их производитьPhisik, 26 Авг. 21, 13:42

Ау, ищутся партнеры))) С инвестициями на организацию производства, которое на наш взгляд (и китайцев, считающих каждую копейку) будет убыточным. Хотите поиграть - пожалуйста. Технологии есть. Я пока не готов.

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

он ведь не первый день в бизнесеAsFhg, 26 Авг. 21, 13:42

Я всю жизнь в бизнесе. И всю жизнь в промышленных ИТ системах. Мы в реальном мире локомотивами и ж/д логистикой управляем. Автоматика это хобби, которое тоже стало бизнесом. Ну что тут поделать, для разработки хороших решений нужны деньги на эту разработку)) Диалектика. И люди, которые кушать тоже любят. Тут стыдиться нечего.
Третий Академик МосОбл 7.1K 6K 2
Отв.127  26 Авг. 21, 14:53, через 14 мин
форум-секта?gxtkjdjl, 26 Авг. 21, 12:19
Я нашел! )))) И это про наш форум орут, что здесь диктатура?
OldBean Доцент Красноярск 1K 1.4K
Отв.128  26 Авг. 21, 15:41, через 48 мин
Не кажется ли Вам, что именно концепция ПЛК как ничто иное пригодна для построения такой, "на все случаи жизни" системы автоматизации?игорь223, 26 Авг. 21, 11:17
Ну так любой МК с обвязками для повышения надежности и с более-менее универсальными интерфейсами для датчиков и исполнительных устройств, по сути и есть ПЛК. Универсальность достигается за счет стандартизации интерфейсов, а программирование ПЛК на более высоком уровне обеспечивается специализированным (фирменным) софтом. Но промышленные (фирменные) решения слишком дороги для дома. Поэтому приходится избретать и городить собственные велосипеды.

ИМХО, правильный подход мне видится таким.

1. Создается максимально полный список периферии для конкретной предметной области (датчики и исполнительные устройства). Кстати, в данном случае это может не только винокурение, но еще и "бытовуха".
2. Для каждого типа устройств, если нужно, разрабатывается адаптер в один или более стандартных интерфесов. Я, например, использую пару - I2C и 1-Wire. Не знаю, стОит ли делать что-то более серьезное. Возможно, не стОит. Очень простое решение получается, если каждый адаптер выполнен на отдельном недорогом МК (такая маленькая ПЛКашка ;). В этом случае на адаптер можно повесить дополнительные функции: защита, контроль и предобработка данных и т.п. Адаптеры на МК позволят также полностью стандартизировать и протоколы.
3. Определяемся с управляющим микрокомпьютером. Это главный ПЛКан ;) на котором реализуется логика управления процессами. Если для каждого периферийного устройства разработать соответствующую класс-обертку (на C++ или даже на Python), то программирование ПЛКана существенно облегчится. В этом случае модификацию или даже полную разработку софта для ПЛКана может выполнить обычный пользователь.

PS
В последние годы я много экспериментировал с такой архитектурой (причем, не только по части ректификации, описанной здесь на форуме). Вывод такой: "Что-то в этом есть!". При разумных требованиях к надежности, безопасности и комплектующих "бытового класса", это будет существенно дешевле промышленных решений. К сожалению, у меня только "любительский" уровень по части электроники. Да и по программированию тоже. Поэтому все сделано, как говорят, "из г... и палок". Но сам концепт представляется вполне рабочим.

Впрочем, закругляюсь. Итак сильно выскочил за, если можно так сказать, "темы" этой ветки ;)
Вот здесь подробнее.
Счастливчик Специалист Москва 180 23
Отв.129  26 Авг. 21, 16:06, через 26 мин
ИМХО, правильный подход мне видится такOldBean, 26 Авг. 21, 15:41

Ой, я Вам уже писал про то, что у Вас очень правильное видение.

Среду управления забыли для настройки всего этого многообразия контроллеров.

И получите идеальную копию Contronius)))

И зависимые устройства у нас есть - "весы самогонщика", кстати, в открытом доступе. И насос перистальтический. Прототип готов. У нас контроллер его шаговиком управляет, можно дозирование по бутылкам делать, НБК управлять. Насос появится в прошивке до конца года.

Чудесно, что мысли одинаковые. Точнее это нормальный ИТ подход к конструированию)))
Shobby Доцент Ленинград 1.1K 322
Отв.130  26 Авг. 21, 16:36, через 30 мин
Итого безопасный блок из купленных в розницу деталей обойдется 5.5тр. Накинем 100% прибыли, получим 11тр. С учетом оптовых закупок у поставщиков должно получиться меньше 10тр.Phisik, 26 Авг. 21, 13:42
К сожалению сейчас формирование цены зависит не от себестоимости продукции, а от возможности граждан заплатить за неё деньги. Продукт может стоить 1 рубль, но продаваться он будет хоть за 10, хоть за 100. Пока граждане готовы платить.
Поэтому не надо пытаться логически обосновать цену. Продавцы смотрят друг на друга и продают товар с оглядкой на конкурента. Продукция схожего функционала будет у разных продавцов стоить схожих денег. Независимо от набора комплектующих.
Тут можно хоть уписаться, объясняя продавцу какой он редиска и прочее. Но пока его продукцию покупают, он не поменяется. Ему пофиг. А вот если его продукция перестанет покупаться, то он начнёт шевелиться в попытках выяснить что же у него не так.
OldBean Доцент Красноярск 1K 1.4K
Отв.131  26 Авг. 21, 17:11, через 36 мин
Среду управления забыли для настройки всего этого многообразия контроллеров.Счастливчик, 26 Авг. 21, 16:06
Она (настройка) происходит автоматически. При загрузке библиотек.
Третий Академик МосОбл 7.1K 6K 2
Отв.132  26 Авг. 21, 17:27, через 16 мин
Тут можно хоть уписаться, объясняя продавцу какой он редиска и прочее. Но пока его продукцию покупают, он не поменяется. Ему пофиг.Shobby, 26 Авг. 21, 16:36
Продавцы смотрят друг на друга и продают товар с оглядкой на конкурента. Продукция схожего функционала будет у разных продавцов стоить схожих денег.Shobby, 26 Авг. 21, 16:36
Да неужто? Конкурент (если действительно конкурент, а не ещё один дилер)) поставит маржу не 100%, а 70%. Цена станет ниже на четверть, допустим. Два покупателя ищут схожий товар, и находят, только один за 100, другой за 75 уе. И покупают тот, что дешевле. В результате, тот, кто заложил меньшую прибыль получил 2х70%, а второй продавец кукиш с маслом. Это и есть прямая конкуренция.
Но, в случае равной, или большей цены, при равном качестве, нужно УБЕДИТЬ потенциальных покупателей (рекламой, семинаром, медиа, нлп), что продаваемый товар имеет лучшее качество, больше возможностей, сделан с использованием внеземных технологий, и тп, и тп.. А это называется маркетинг, по русски - искусство продаж. Что мы и наблюдаем здесь уже 8 страниц ))))
Плохого в этом немного, насильно не заставляют, но, к сожалению людей, разбирающихся в технике гораздо меньше всех остальных.
Счастливчик Специалист Москва 180 23
Отв.133  26 Авг. 21, 17:38, через 11 мин
Она (настройка) происходит автоматически. При загрузке библиотек.OldBean, 26 Авг. 21, 17:11

Не контроллеров. Процессов. Температуры отсечки, паузы при затирания, там куча нюансов. Само железо из коробки по протоколам работает, это вообще не в счёт.
игорь223 Академик таганрог 30.2K 20.6K
Отв.134  26 Авг. 21, 17:55, через 18 мин
Но промышленные (фирменные) решения слишком дороги для дома.OldBean, 26 Авг. 21, 15:41
Это как раз не так. В Китае сейчас масса ПЛК ценою в 70-100 долларов с отличными характеристиками. Мой приятель (не по этой теме, производство продукта из нефтехимии))) их ставит в производимые станки, не нарадуется уже третий год.
Все мне советует - переходи, типа, на них, горя знать не будешь с самоделками.

Язык программирования стандартный, не помню какой из пяти основных.
Пишет оболочку сторонний программист, за обычные деньги.
Счастливчик Специалист Москва 180 23
Отв.135  26 Авг. 21, 18:15, через 20 мин
Стандарт 61131 https://ru.m.wikipedia.org/wiki/IEC_61131-3

Все языки подробно описаны.

Есть даже опенсорсные попытки сделать свои среды управления и кастомные ПЛК, даже на esp32. Правда весь опен-сорс на эту тему дохлый где пару лет, где дольше.

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

А я же упертый. Среды разворачивал, железки щупал, и raspberry pi даже как систему систем настраивал. Там кстати, node-red такая среда есть - вообще красивая.

В общем, могу только порадоваться, если получится. Там все для промки заточено. Или надо могучую экосистему на чужих продуктах городить.

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

Нет, реализовать можно черта лысого. Но либо монстр получится, либо узкая преднастроенная железка под конкретный процесс. Середины с низким порогом вхождения пользователя не прослеживается.

Но с удовольствием послежу за процессом.

Конкуренция двигает технологии.

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

Железо вообще я бы из уравнения выкинул при анализе проекта. Его можно под любую задачу либо найти, либо собрать.
Спецификации открытые, референс дизайнов - вагон. Бери блоки, компонуц и любая контора незадорого сделает платы и изготовит, это вообще фигня.

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

Если эта зада сложится - далее анализ инструментария разработки из имеющихся на рынке или мысли о собственной разработке. Если своя, то смотрим какие компетенции нужны: системщик по контроллерам, веб, дизайн, сисадмин (в широком смысле - развертывание сред требует отдельной квалификации) и т.д.

Просто советы, время съэкономить и учесть все при планировании проекта

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

Сейчас меня Сергей Регнер прибьет, за то что про железо сказал и его кусок фигнёй назвал)))

Договоримся, что я только про стандартные ПЛК говорил)))

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

Системного архитектора забыл. Я просто своего с работы основной мучал. Там нагрузку надо считать, если распределенные решения делать (наш случай) и типы баз данных для быстрой одновременной обработки событий подбирать и конфигурить. Но в случае с локальным решением возможно это лишнее
OldBean Доцент Красноярск 1K 1.4K
Отв.136  26 Авг. 21, 19:01, через 46 мин
Не контроллеров. Процессов.Счастливчик, 26 Авг. 21, 17:38
При загрузке базовых библиотек производится автоматическая идентификация подключенного оборудования, генерация объектов соответствующих классов (на Python) и их именование по определенным правилам. Эти имена пользователь всегда может посмотреть.

Далее система загружает пользовательский скрипт в котором описана логика управления, пользовательские константы и переменные. Т.е. - специфичные вещи для предстоящего процесса. Это обычный текстовый файл на языке Python, который пользователь может либо составить сам, либо модифицировать соответствующий шаблон.

Пример пользовательского скрипта для кубовой ректификации сырца на стандартном оборудовании ниже. Конфигурация: 1 ТЭН, 1 клапан обора, фракционник, датчики температуры: в кубе, в нижней части колонны, в дефлегматоре, ТСА и вода на выходе из дефлегматора. Последние два - для мониторинга аварийных ситуаций.

Для затирки скрипт будет гораздо проще. Но я не "тру" ;) Поэтому готового пользовательского скрипта для затирки у меня нет. Поэтому привожу первый рект.

Пользовательский скрипт для первой ректификации сырца
'''
Пользовательский скрипт для первой ректификации спирта-сырца
--------------------------------------------------------------------------------
История изменений в конце файла
OldBean, 25.07.2021
'''
#-------------------------------------------------------------------------------
from lite import *
#-------------------------------------------------------------------------------
''' Для работы в локальной сети, небходимо разремовать следующую строку и 
задать IP-адрес малинки, на которой будет активирован TCP-сервер, через который
клиенткие приложения могут удаленно мониторить процесс и управлять им.
В противном случае TCP-сервер будет работать в локальном режиме на малинке и
клиентское приложение может быть запущено тоже только на малинке.
'''
#server_addr = ('xxx.xxx.xxx.xxx', 5238)
#-------------------------------------------------------------------------------
'''Для отправки сообщений в телеграм-чат, необходимо разремовать следующие две
строки и задать реальный токен телеграм-бота и id чата. См. инструкцию по 
созданию телеграм-ботов на сайте telegram.
'''
#token = '1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
#chat_id = 1234567890

url = 'https://api.telegram.org/bot' + token + '/'
u.bot_flag = True if token and chat_id else False # Флаг отсылки сообщений боту
if not u.bot_flag: # Добавим переменную в список скрытых переменных
  uhide.append('bot_flag')
#-------------------------------------------------------------------------------
s0.v = 0 # Фракционник - в нулевое состоянии
s0.delay = 5 # Замедлим скорость вращения сервы
#-------------------------------------------------------------------------------
''' Определяем пользовательские переменные. Эти пользовательские переменные
будут находиться в контейнере u (объект класса Cont). Этим и определяется
необходимость использования префикса u при создании переменных.
'''
u.Qg = 200.0 # Количество отбираемых голов, мл
u.Qpg = 1000.0 # Количество отбираемых подголовников, мл

u.T1cr = 65.0 # Температура в колонне при котором прекращается режим разгона
u.T2cr = 78.6 # Т-ра в дефлегматоре окончания отбора исправимых хвостов
u.T3cr = 50.0 # Критическая т-ра в ТСА -> аварийное отключение
u.T4cr = 40.0 # Критическая т-ра воды охлаждения -> аварийное отключение

u.ww = 600.0 # Рабочая мощность нагрева куба, Вт
u.qg = 50.0 # Скорость отбора голов, мл/час
u.qw = 400.0 # Рабочая скорость отбора (подголовники, тело, хвосты), мл/час

u.dT = 0.0625; uhide.append('dT') # Квант датчика DS18B20, скрытая переменная
u.T1max = 0.0 # Максимальная температура в царге во время отбора подголовников
u.Tset = u.Tsb = 0.0 # Текущее и базовое значения уставки старт-стопа
u.Pb = 0.0 # Атм.давление в момент фиксации базового значения уставки
u.ss_flag = False # Флаг режима старт/стопа
u.tsa_flag = False # Флаг контроля температуры ТСА
u.w_flag = True # Флаг контроля температуры воды охлаждения
u.ss_cntr = 0 # Количество случившихся старт/стопов в данном процессе
u.timing = []; uhide.append('timing') # Моменты стопов и стартов, скрытая пер-я
#-------------------------------------------------------------------------------
''' Далее необходимо определить режимы работы установки - создать объекты
класса Mode. Для каждого режима необходимо создать две функции.

Первая функция (здесь ее название finit()) вызывается один раз при переключении
системы в данный режим работы. В ней происходит инициализация нужных системных
и пользовательских переменных.

Вторая функция (здесь fcond()) вызывается периодически в главном цикле
приложения (см. модуль main.py). В ней производится проверка условий
переключения в другой режим работы системы или завершения работы установки.

Порядок создания режимов важен, т.к. его номер является горячей клавишей для
перехода в этот режим. Режим мониторинга, который предусмотрен в системе всегда,
имеет номер 0. Следующие режимы создаются пользователем. Их нумерация
начинается с 1.
'''
#-------------------------------------------------------------------------------
# Определение режима разгона (режим 1)
def finit(): # Инициализация режима
  w0.on() # Включаем нагрев ТЭНа на максимум
  q0.off() # Отбор выключен
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  u.ss_flag = False # Старт-стоп в этом режиме не используется
  s0.v = 0 # Фракционник - в нулевое состоянии
def fcond(): # Проверка условий
  if T1.v > u.T1cr: # Температура в колонне превысила пороговую
    u.mode = 2 # перейдем в режим "холостого хода"
modes.append(Mode('Разгон', finit, fcond))
#-------------------------------------------------------------------------------
# Определение режима холостого хода после разгона (режим 2)
def finit(): # Инициализация режима
  w0.v = u.ww # Нагрев ТЭНа на рабочем уровне
  q0.off() # Отбор выключен
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  u.ss_flag = False # Старт-стоп в этом режиме не используется
  s0.v = 0 # Фракционник - в нулевое состоянии
def fcond(): # Проверка условий
  #!!!!!!!!!!!!!!!!!! Вставить проверку стационарности T3 и T3 !!!!!!!!!!!!
  # Данная реализация - просто по времени. Обычно это около 30 мин
  if time.time() - tim.mst > 1800: # 30 мин прошло
    u.mode = 3 # Переходим в режим отбора голов
  pass
modes.append(Mode('Холостой ход', finit, fcond))
#-------------------------------------------------------------------------------
# Определение режима отбора голов (режим 3)
def finit(): # Инициализация режима
  w0.v = u.ww # Нагрев ТЭНа на рабочем уровне
  q0.v = u.qg # Скорость отбора голов
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  u.ss_flag = False # Старт-стоп в этом режиме не используется
s0.v = 36 # Поток направлен в емкость для приема голов (°)
  time.sleep(1)
def fcond(): # Проверка условий
  if Q0.v > u.Qg: # Отобрано нужное количество голов
    u.mode = 4 # Переход на режим отбора подголовников
modes.append(Mode('Головы', finit, fcond))
#-------------------------------------------------------------------------------
# Определение режима отбора подголовников (режим 4)
def finit(): # Инициализация режима
  w0.v = u.ww # Нагрев ТЭНа на рабочем уровне
  q0.v = u.qw # Рабочая скорость отбора
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  u.T1max = 0.0 # Рабочая пер-я для оценки максимальной т-ры в колонне
  u.ss_flag = False # Старт-стоп в этом режиме не используется
  s0.v = 72 # Поток направлен в емкость приема подголовников (°)
  time.sleep(1)
def fcond(): # Проверка условий
  ''' Максимальная температура в колонне на этапе отбора подголовников нужна
      для автоматической установки уставки старт/стопа на следующем этапе
      (отбор тела)
  '''
  if T1.v > u.T1max: # Оценка максимальной т-ры в колонне
    u.T1max = T1.v
  if Q0.v > u.Qpg: # Отобрано нужное количество подголовников
    u.mode = 5 # Переход на режим отбора тела
modes.append(Mode('Подголовники', finit, fcond))
#-------------------------------------------------------------------------------
# Определение режима отбора тела (режим 5)
def finit(): # Инициализация режима
  w0.v = u.ww # Нагрев ТЭНа на рабочем уровне
  q0.v = u.qw # Рабочая скорость отбора
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  ''' Уставка задается на 5 квантов выше максимальной температуры в колонне,
      полученной на предыдущем этапе (отбор подголовников). Обычно этого
      хватает...
  '''
  u.Tset = max(u.T1max, T1.v) + 5*u.dT
  u.Tsb = u.Tset # Пер-е для коррекции уставки на атм. давление
  u.Pb = P0.v
  u.ss_flag = True # Включим режим старт-стопа
  u.ss_cntr = 0 # Обнуляем счетчик старт/стопов
  u.timing.clear()
  s0.v = 108 # Поток направлен в емкость для приема тела (°)
  time.sleep(1)
def fcond(): # Проверка условий
  u.Tset = u.Tsb + 0.033*(P0.v - u.Pb) # Коррекция уставки
  if u.ss_flag:
    ch_flag = False
    if q0.v == 0.0 and T1.v <= u.Tset - u.dT: # Условие для старта
      q0.v = u.qw
      ch_flag = True
    if q0.v > 0.0 and T1.v >= u.Tset + u.dT: # Условие для стопа
      q0.v = 0.0
      ch_flag = True
    if ch_flag: # Была смена состояния клапана отбора
      u.ss_cntr += 1 # Модифицируем счетчик старт/стопов
      u.timing.append(time.time())
      if len(u.timing) > 2: # Подсчитаем эффективную скорость отбора
        if q0.v > 0: # Был старт
          koef = u.timing[-2] - u.timing[-3]
        else:
          koef = u.timing[-1] - u.timing[-2]
        koef /= u.timing[-1] - u.timing[-3]
#        u.q0_eff = int(u.qw*koef)
        u.q0_eff = f'{100*koef:.0f}%'
    if u.ss_cntr > 40: # Количество старт-стопов превысило предел
      u.mode = 6 # Переход в режим отбора оборотных хвостов
modes.append(Mode('Тело', finit, fcond))
#-------------------------------------------------------------------------------
# Определение режима отбора оборотных хвостов (режим 6)
def finit(): # Инициализация режима
  w0.v = u.ww # Нагрев ТЭНа на рабочем уровне
  q0.v = u.qw # Рабочая скорость отбора
  Q0.v = 0.0 # Сброс виртуального датчика расхода
  u.ss_flag = False # Старт-стоп в этом режиме не используется
  s0.v = 144 # Поток направлен в емкость для приема оборотных хвостов (°)
  time.sleep(1)
def fcond(): # Проверка условий
  if T2.v > u.T2cr: # Температура пара в дефлегматоре начала расти
    u.mode = 0
modes.append(Mode('Хвосты', finit, fcond))
#-------------------------------------------------------------------------------
def emergency(): # Проверка аварийных ситуаций
  ret = False
  if u.w_flag and T4.v > u.T4cr: # Проверка температуры воды охлаждения
    ret = True
  if u.tsa_flag and T3.v > u.T3cr: # Проверка температуры ТСА
    ret = True
  return ret
#-------------------------------------------------------------------------------
''' В этом блоке кода определяются специфичные для процесса пользовательские
горячие клавиши. Нельзя использовать клавиши h, q, k, m, u, v, которые уже
используются библиотекой lite. Новые клавишы добавляются в общий словарь
горячих клавиш библиотеки lite - hot_keys.
'''
for nm, m in enumerate(modes): # Добавим горячие клавиши (это цифры, номера
  hot_keys[str(nm)] = m.name   # определенных выше режимов работы установки

''' Добавим специфичные для данного процесса горячие клавиши
'''
hot_keys['g'] = 'Задать уставку по текущей температуре'
hot_keys['+'] = 'Увеличить уставку'
hot_keys['-'] = 'Уменьшить уставку'
hot_keys['s'] = 'Включить/выключить режим старт/стоп'
hot_keys['t'] = 'Включить/выключить контроль температуры ТСА'
hot_keys['w'] = 'Включить/выключить контроль температуры воды'
hot_keys['b'] = 'Посылать или нет важную информацию на чат'
#-------------------------------------------------------------------------------
''' В этом блоке определяется функционал, связанный с каждой пользовательской
горячей клавишей. Функционал оформлен в виде функции user_hk(), которая
вызывается периодически в главном цикле приложения (см. модуль main.py).
Параметром функции является символ нажатой клавиши. Функция возвращает строку
сообщения, которое будет отправлено пользователю (на чат или клиентскому
приложению).
'''
def user_hk(ch): # Отработка пользовательских горячих клавиш
  msg = '' # Сообщение, которое будет отправлено клиенту
  if ch == 'g': # Уставке старт-стопа присвоить текущее значение т-ры
    u.Tset = T1.v
    u.Tsb = u.Tset
    u.Pb = P0.v
    msg = f'u.Tset = {u.Tset:.3f}'
  elif ch == '+': # Увеличить на квант текущее значение уставки
    u.Tset += u.dT
    u.Tsb = u.Tset
    u.Pb = P0.v
    msg = f'u.Tset = {u.Tset:.3f}'
  elif ch == '-': # Уменьшить на квант текущее значение уставки
    u.Tset -= u.dT
    u.Tsb = u.Tset
    u.Pb = P0.v
    msg = f'u.Tset = {u.Tset:.3f}'
  elif ch == 's': # Включить/выключить старт-стоп
    u.ss_flag = not u.ss_flag
    msg = f'u.ss_flag = {u.ss_flag}'
  elif ch == 't': # Включить/выключить контроль температуры ТСА
    u.tsa_flag = not u.tsa_flag
    msg = f'u.tsa_flag = {u.tsa_flag}'
  elif ch == 'w': # Включить/выключить контроль температуры воды
    u.w_flag = not u.w_flag
    msg = f'u.w_flag = {u.w_flag}'
  elif ch == 'b': # Включить/выключить отсылку сообщений 
    if token and chat_id: # Если чат доступен
      if u.bot_flag:
        msg = 'Отсылка сообщений будет выключена'
        crit_info(msg)
      u.bot_flag = not u.bot_flag
      if u.bot_flag:
        msg = 'Отсылка сообщений включена'
        crit_info(msg)
      msg = f'u.bot_flag = {u.bot_flag}'
  return msg
#-------------------------------------------------------------------------------
#Добавляем список переменных, которые нужно писать в лог
u.log_head += 'Tset '
u.log_vars += '{u.Tset:.3f}'
#-------------------------------------------------------------------------------
def crit_info(message): # Callback функция, вызываемая при важных событиях
  if u.bot_flag: # Включен режим отсылки сообщений на чат
    tele_send_msg(url, chat_id, message)
#-------------------------------------------------------------------------------
''' Список изменений
25.07.2021 1. Косметические правки, добавление комментариев
'''
#-------------------------------------------------------------------------------

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

Я выше приводил ссылку, где все частности подробно описаны (и железо и софт).

Это как раз не так. В Китае сейчас масса ПЛК ценою в 70-100 долларов с отличными характеристиками.игорь223, 26 Авг. 21, 17:55
Но это же только сама железка. Под дороговизной решения я имею в виду не только саму ПЛК. В наших задачах довольно большой и разношерстный набор периферии и большое количество разнообразных процессов. ИМХО, в согласовании интерфейсов, протоколов и софте управления будут основные затраты. Причем, часть протоколов могут оказаться закрытыми.
Счастливчик Специалист Москва 180 23
Отв.137  26 Авг. 21, 19:07, через 7 мин
Я официально заявляю, что OldBean не мой адепт, и я с ним познакомился только в этой теме :-)

Питон - это сила!)))

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

Это обычный текстовый файл на языке Python, который пользователь может либо составить сам, либо модифицировать соответствующий шаблон.OldBean, 26 Авг. 21, 19:01

Уважаемый OldBean, не знаю Ваш возраст но это мне напомнило историю из юности, когда я решил поднять BBS - предтечу интернета, и там был такой редактор досок GoldenEditor, в простонаречье Голый Дед. И примерно такой же скрипт, им управляющим. И я по знакомству и рекомендации коллег поехал к одному продвинутому хакеру просить помощи в его конфигурации)))

Основное воспоминание - убитая хрущоба, бычки везде, дымящийся припоем паяльник в работающем при этом компе и откровение - "я по-английски не шарю, тут чуйкой настраивать надо, и потом смотреть, где дедушка голый глючит начинает)))

В общем, BBS я в итоге поднял)))
OldBean Доцент Красноярск 1K 1.4K
Отв.138  26 Авг. 21, 19:49, через 42 мин
Питон - это сила!)))Счастливчик, 26 Авг. 21, 19:07
Если хорошо представляешь что тебе надо от компьютера/системы, то консоль и текстовый редактор - самый удобный и универсальный UI для общения с компьютером. А python делает это общение простым и изысканным :). На этом, пожалуй, и откланяюсь...
Счастливчик Специалист Москва 180 23
Отв.139  26 Авг. 21, 20:14, через 25 мин
Если хорошо представляешь что тебе надо от компьютера/системыOldBean, 26 Авг. 21, 19:49

Я же не спорю. Более того, мне вообще для себя любимого что-то типа Node-red нравится. Только обычные пользователи тут причем? Я ректификацию в node-red сваял, с графиками, dashboard и прочими финтифлюшками за вечер. Доступ из любой точки мира и прочие нештяки. Mqtt все шлет, алармы летят. На форуме телеграмм к подобному прицепили, в телефон летит.

Только это не пользовательское решение ни разу. Там когда народ начинает читать что-то типа - "Установка проста для безобразия, сперва открываем консоль малинки и делаем apt-get upgrade...". Занавес! Все, интерес пропал.