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

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

Форум самогонщиков Автоматика
1 ... 93 94 95 96 97 98 99 ... 132 96
OldBean Доцент Красноярск 1K 1.4K
Отв.1900  31 Марта 20, 22:43
Хорошее решение, только блоки try-except стОит добавить.
Тем не менее, с препроцессором, ИМХО, будет получше. Все равно нужно проверять синтаксис и используемые имена до загрузки скрипта в синхронизатор. Тут же проще их и переименовать в T0, P0, w0 и т.д.
sig Кандидат наук Ростов-на-Дону 304 139
Отв.1901  01 Апр. 20, 01:49
Хорошее решение, только блоки try-except стОит добавить.OldBean, 31 Марта 20, 22:43
Безусловно! Это просто набросок кода без проверки результата поиска.

Тем не менее, с препроцессором, ИМХО, будет получшеOldBean, 31 Марта 20, 22:43
Вполне возможно, уж быстрее - это точно!
ekochnev Магистр Екатеринбург 207 54
Отв.1902  01 Апр. 20, 13:36
Немного отвлечемся от программирования...
Перегонял тут на днях несколько циклов сырье на СС. Заметил выбросы на показаниях датчика температуры. Одиночные длительностью в один отсчет. Что это, помехи по шине I2C или глюки конкретного датчика? Значение в этом выбросе может быть 2000 градусов или 4000 или любое другое высокое. В одном цикле была пара таких выбросов, во втором пять. В первом цикле автоматика на них реагировала и переходила на следующий режим, после этого прописал чтобы для перехода условие перехода должно выполниться не менее трех раз подряд, тогда стало нормально работать.
Просто был у меня как-то глючный датчик температуры который просто сыпал подобными выбросами, но значение во всех выбросах было всегда одинаковое: 85 градусов. Вылечилось только заменой датчика. А тут непонятное что-то....

P.S. На картинке смотреть на третий сверху график где Т0 написано
Figure_1.png
Figure_1.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
sig Кандидат наук Ростов-на-Дону 304 139
Отв.1903  01 Апр. 20, 17:16
значение во всех выбросах было всегда одинаковое: 85 градусов. Вылечилось только заменой датчика.ekochnev, 01 Апр. 20, 13:36
Конкретно этот сбой (85гр) означает, что на датчике недостаточно питания для работы (выходные регистры работают и в них загружен код 85гр, а преобразователь неработает). Часто встречается при паразитном питании (подключение по 2-м проводам). Обычно помогает конденсатор прямо на ножки датчика.
А вот 2000 и 4000гр - это вообще непонятно! Возможно ли считывание такой величины? В любом случае после опроса датчиков нужно проверять допустимость считанных значений прежде чем записывать их в БД.
ekochnev Магистр Екатеринбург 207 54
Отв.1904  01 Апр. 20, 17:25, через 10 мин
В любом случае после опроса датчиков нужно проверять допустимость считанных значений прежде чем записывать их в БД.sig, 01 Апр. 20, 17:16
Ну это уже прошивку контроллера надо менять. Он ведь значение по I2C синхронизатору отдает. Либо это в процессе передачи наводится помеха и какой-нибудь бит искажается. Я не помню, есть в I2C какие либо контрольные суммы для верификации передаваемых данных или нет.

Когда было 85, я понял что это запрограммированная величина. Питание было действительно паразитное. Подтягивающим резистором долго игрался, не помогло. Тот датчик был покупной от Игоря, просто пошел в магазин и обменял на другой. Сейчас не об этом речь. Просто величины температуры больше 1000 мне тоже непонятны. Хочется понять откуда ноги растут...
OldBean Доцент Красноярск 1K 1.4K
Отв.1905  01 Апр. 20, 18:22, через 58 мин
Эта проблема появилась давно. При переходе со 2-й малинки на 3-ю. Она связана с некорректной аппаратной реализацией стречинга i2c в малинке v3. В результате на высоких скоростях (по умолчанию 100k) иногда появлялась ошибка в старшем бите принимаемого байта. Проблема обычно фиксилась уменьшением baudrate на шине i2c.

Но вот как-то в конце прошлого года мне нужно было поработать с LITE на абсолютно чистой, "нулевой" системе. С чем-то мы тут на форуме разбирались. Я скачал и установил свежую версию Raspbian (на то время - buster, ядро 4.19.75-v7+), поставил все что нужно для работы, но, конечно же, напрочь забыл уменьшить baudrate. И даже не вспомнил про него. Все работало нормально и я продолжал работать с этой версией Raspbian и дальше. С тех пор много спирта утекло, все работало нормально, никаких игл, естественно, не было. Поэтому я вообще забыл про эту проблему. И вот только сейчас, прочитав пост Евгения, я полез и посмотрел с каким baudrate у меня работает i2c. Скорость оказалась та, что идет по умолчанию - 100k. Т.е. проблема с иглами как-то сама собой неожиданно "рассосалась". Смешно, но когда и в каком месте разработчики "зафиксили" проблему с растяжкой я теперь не понимаю :) Но игл сейчас действительно нет и на высокой скорости.

Думаю, можно попробовать два варианта: 1) снизить baudrate или 2) обновить Raspbian
ekochnev Магистр Екатеринбург 207 54
Отв.1906  01 Апр. 20, 18:37, через 15 мин
1) снизить baudrate или 2) обновить RaspbianOldBean, 01 Апр. 20, 18:22
1. Как снижать?
2. Raspbian у меня если и не самый последний, то очень свежий. Когда ставил он был последний, после этого несколько раз обновлял. Могу сейчас зайти и снова обновить.
OldBean Доцент Красноярск 1K 1.4K
Отв.1907  01 Апр. 20, 19:26, через 50 мин
1. Как снижать?ekochnev, 01 Апр. 20, 18:37
Нужно отредактировать файл /boot/config.txt. Примеры, есть здесь или здесь

PS
По поводу версии Raspbian. У меня ядро ядро 4.19.75-v7+. Если у Вас не старше, то тогда причина, видимое, где-то в другом месте...
ekochnev Магистр Екатеринбург 207 54
Отв.1908  01 Апр. 20, 19:36, через 10 мин
А какую скорость рекомендуете поставить? У меня строчки с конфигурацией скорости сейчас там нет, значит действует дефолтная 100 кГц...
sig Кандидат наук Ростов-на-Дону 304 139
Отв.1909  01 Апр. 20, 21:37
А какую скорость рекомендуете поставить?ekochnev, 01 Апр. 20, 19:36
Посмотри здесь - [сообщение #13029695]
т.е. или 19200 или, наоборот, увеличить до 128000

Вот только гложут меня сомнения, что это тотже глюк. Там битик пропадал (вместо 1 читался 0) и значение параметра становилось очень маленьким.
ekochnev Магистр Екатеринбург 207 54
Отв.1910  01 Апр. 20, 21:59, через 22 мин
Прочитал, попробую.
У меня кстати оказывается чип стоит не BCM2837, а еще старый BCM2835. Хотя малина тоже третья.
OldBean Доцент Красноярск 1K 1.4K
Отв.1911  02 Апр. 20, 03:55
Вот только гложут меня сомнения, что это тотже глюк.sig, 01 Апр. 20, 21:37
Меня тоже. Механизм скорее всего другой. Но, тем не менее снижение скорости обмена заметно снижало и вероятность появления "игл". Возможно - наводки. Возможно - какие-нибудь коллизии с работой шины i2c (температуры и др. данные с хабов пересылаются большим блоком). К сожалению, глюк редкий - трудно отлаживать.
С того момента, когда я забыл про снизить скорости, много чего изменялось. По мелочам. В том числе и в физическом окружении. Жаль что мне не удалось зафиксировать момент пропадания игл "как класса" :( Но, может Евгению удастся с ним разобраться.

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

Порылся в старых архивах - нашел лог с того времени, когда "иглы" еще бывали. Все-таки это сбой в старшем бите (в данному случае - появление 1).

Пример. В стационарном режиме температура с датчика стояла на уровне 77.75°C (шестнадцатеричный код 0x04dc). А на "игле" температура 2125.75°C (код - 0x84dc). Т.е. "игла" действительно связана с эпизодической ошибкой приема старшего бита.
makh Профессор Sаmara 2.1K 1.1K
Отв.1912  02 Апр. 20, 23:28
У меня были такие иглы с DS18B20, без всяких I2C прокладок. Написать проверку CRC не помогло, так просто проверял, что цифра в диапазоне датчика. А потом все-равно повыкидывал все купленные на али DS-ки и закупился у фарнела. Задорого, зато голову не дурят.
OldBean Доцент Красноярск 1K 1.4K
Отв.1913  03 Апр. 20, 06:01
У меня были такие иглы с DS18B20, без всяких I2C прокладок.makh, 02 Апр. 20, 23:28
Хм..., не сталкивался. Правда с DS-ками я тоже предпочитаю не жидиться. Хотя цены порой отличаются довольно сильно. Например, у нас в "Дайте две" есть DS-ки и по 70р и (ну как бы оригинал :) - аж по 200р. Беру последние. В сумме, с учетом нервов, дешевле получается :)

В принципе, в наших задачах отрицательных температур обычно не бывает. Поэтому "иглы" (вверх) легко замаскировать 12-битной маской. Но, таки, хотелось бы осознать глубиной души первопричину этого швейного атрибута :)
ekochnev Магистр Екатеринбург 207 54
Отв.1914  03 Апр. 20, 12:37
Сегодня с утра подключил к автоматике 5 датчиков температуры (больше нет в наличии) и оставил просто без нагрева в режиме мониторинга с записью лога. За прошедшие 6 часов ни оной "иглы". Видимо при комнатной температуре не глючит, только в нагретом состоянии.

Еше несколько расстроило другое: все датчики лежат рядом, а разлет показаний на них 1.313 градуса (от 22.875 до 24.188). На мой взгляд это очень много.
makh Профессор Sаmara 2.1K 1.1K
Отв.1915  03 Апр. 20, 13:58
А если точно так же рядом засунуть их в кипящую воду, то разлет будет еще больше .) Не просто так производитель указывает характеристики только в диапазоне до 85-ти цельсиев..

У меня с определенной периодичностью появляется желание васче избавится от DS-ок.. Лет 6 назад это были градусники ADT7410, хорошие, но года за три-четыре деградируют, начинают шуметь и откисать периодически. Дорогие очень, и если гильзовать, то только 6 мм внутренний диаметр гильзы.. А счас вот опять ) Закупился Si7051, сам такое паять не умею, жду пока у знакомых паяльщиков появится минутка..
OldBean Доцент Красноярск 1K 1.4K
Отв.1916  03 Апр. 20, 14:48, через 50 мин
На мой взгляд это очень много.ekochnev, 03 Апр. 20, 12:37
Ну не так чтобы "очень". Почти в пределах допустимой ошибки +-0.5°C в диапазоне от -10°C до 85°C и +-2°C во всем диапазоне измерения. Но стОит обратить внимание на то, что это - постоянная ошибка (дрейф-то датчика всего 0.2°C при 1000 часовой работе). По сути дела она связана с заводской калибровкой. А ее-то всегда можно "поправить" дополнительной калибровкой датчиков. Ну, если нужно. А нужно ли? Для наших задач - обычно нет.
makh Профессор Sаmara 2.1K 1.1K
Отв.1917  04 Апр. 20, 00:36
Для спирта конечно не нужно, можно васче без градусника. Но для упражнений с кашами и прямотоком регулярно хочется.. DS-ку калибровать сложно, нелинеарно у нее все, да еще как раз в самом критичном диапазоне -- воду вскипятить недостаточно.. RTD отличается линеарностью.. Надо бы раскурить как-нить..
OldBean Доцент Красноярск 1K 1.4K
Отв.1918  04 Апр. 20, 05:07
воду вскипятить недостаточно.makh, 04 Апр. 20, 00:36
Что да, то да. Три точки - как минимум. Там парабола хорошо просматривается.

Поднять точность самого градусника на уровень 0.1°C (и выше) можно. Но при этом вопрос: "Что мы измеряем при помощи такого замечательного и точного датчика?" становится главным и тянет за собой "букет" нелегких методических вопросов: однородность температурного поля, как его контролировать, качество перемешивания, куда и как ставить датчики и т.п. Они, в свою очередь, существенно зависят от конфигурации и решаемой задачи. Так что здесь без конкретики никак.
makh Профессор Sаmara 2.1K 1.1K
Отв.1919  04 Апр. 20, 18:07
"букет" нелегких методических вопросовOldBean, 04 Апр. 20, 05:07
О да. Но ведь не в первый раз, есть ведь уже коллекция наступленных граблей и прочая методология .) Некие общие требования к конструктиву и установке градусников сформулировать не сложно.. Но конечно, самая эротика всегда в деталях..

У меня вот не получается доверить автомату последний перегон по АлексеюТ (т.н. отгабриэливание), там где на высоких концентрациях в кубе отсечка.. Да и вручную регулярно напускаю вонючера.. При наличии хорошей абсолютной цифры давления.. Отсюда вот опять свербит насчет другого градусника..

Сорры за оффтоп..
сообщение удалено