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

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

Форум самогонщиков Автоматика
1 ... 86 87 88 89 90 91 92 ... 132 89
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1760  13 Дек. 19, 06:03
Посмотрите файл err в той же директории, что и все.OldBean, 13 Дек. 19, 04:04
Нет здесь такого файла. Кроме того, если запустить calibr.py то в окне выбора модулей - пусто, а после запуска lite.py - все модули видны. у меня 3 модуля для клапанов и им присвоены адреса соответственно 14, 24 и 34, думал мешают. Выбросил лишние, оставил только Hub, PWM, PDM и RMS. Картина не меняется.
У Вас в теме выложены 2 файла calibr.py, они разные по размеру. Запускал оба, результат 0. Какой из них корректный?
======================
И почему на одном адресе 14 висят 2 модуля? Там ведь только один. Датчика расхода физически нет.
IMG_20191213_055039.jpg
IMG_20191213_055039.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
IMG_20191213_060833.jpg
IMG_20191213_060833.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1761  13 Дек. 19, 07:46
У Вас в теме выложены 2 файла calibr.py, они разные по размеру. Запускал оба, результат 0. Какой из них корректный?gol_avto, 13 Дек. 19, 06:03
В данной версии (0.3.х.х) уже никакой не нужен. Для калибровки пользуйтесь модулем api.py. Если не рассказывал как - вечером (или в выходные) расскажу все подробно. Просто у меня сейчас и здесь нет ни исходников, ни самой установки. Они в другом месте. Не хотелось бы случайно что-нибудь соврать...
И почему на одном адресе 14 висят 2 модуля? Там ведь только один. Датчика расхода физически нет.gol_avto, 13 Дек. 19, 06:03
Датчик расхода - это виртуальный (т.е. программный) "датчик". Он "привязан" к модулю PWM, поэтому на шине i2c имеет тот же адрес. Виртуальный датчик подсчитывает количество жидкости, пропущенной через клапан, подключенный к контроллеру PWM, с учетом калибровок и изменений уровня PWM в процессе работы. Сколько контроллеров PWM и клапанов, столько и виртуальных датчиков расхода. Виртуальные датчики - удобная штука с логической точки зрения. Они позволяют получать нужную информацию при отсутствии реальных датчиков, но (!) когда эту информацию можно вычислить на основе данных существующего оборудования.
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1762  13 Дек. 19, 10:36
При запуске python3 api.py ничего не происходит, а в конце файла api.py есть такая запись
v.0.3.0.0
25.08.2019 1. Реализованы динамические классы V, C и U, позволяющие работать
с БД через свойства классов. API предназначен для работы с lsync
версии 0.3.0.0
Несовместимость с 0.3.0.1 ??
OldBean Доцент Красноярск 1K 1.4K
Отв.1763  13 Дек. 19, 18:21
Не-не. Все не так. Давайте сначала запустим редиску и синхронизатор. К сожалению у меня дома не оказалось свободной карточки, чтобы сделать "нулевую" систему и смоделировать Ваш случай. Поэтому давайте попробуем разобраться так. Если что - завтра куплю новую карточку и доразберемся :) Просто сейчас уже поздно идти за карточкой - у нас почти ночь.

Итак, сделайте на малинке новую папку и распакуйте архив версии 0.3.0.1 в эту папку. Ничего больше не кладите в эту папку. Все что нужно для работы есть в архиве. Сделайте эту папку текущей и запустите lsync. Поскольку редиска "пустая", попробуйте запустить синхронизатор с ключом -r. Этот ключ нужен для полной инициализации базы данных. При следующих запусках использовать этот ключ не нужно. Если только не захотите начать "новую жизнь".

Итак, пишем
python3 lsync.py -r
Что получается?
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1764  13 Дек. 19, 21:04
К сожалению ничего не изменилось. Запускал и из старой папки и новую создал на рабочем столе.
Окно висело висело и появилась запись "Ошибка чтения по адресу 0х11"
IMG_20191213_205322.jpg
IMG_20191213_205322.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
IMG_20191213_211048.jpg
IMG_20191213_211048.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
сообщение удалено
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1765  14 Дек. 19, 05:55
Малинка Raspberry Pi 3 Model B
Версию линукс не знаю как смотреть, но обновил 2 дня назад.
А, вот нашел
Description    Rasbian GNU/Linux 8.0 (jessie)

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

Получилось?OldBean, 14 Дек. 19, 01:51
запустил с Вашим новым файлом, который в архиве, сообщение выше, - увы, результат 0.
OldBean Доцент Красноярск 1K 1.4K
Отв.1766  14 Дек. 19, 09:25
Версию линукс не знаю как смотреть,gol_avto, 14 Дек. 19, 05:55
cat /etc/*-release
увы, результат 0gol_avto, 14 Дек. 19, 05:55
Странно. Утром запускал на пустой системе (buster) и БД "с нуля". Нашел только указанный выше глюк :( А как ругается?
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1767  14 Дек. 19, 09:39, через 14 мин
Все тоже самое. строка 364 вместо 363 и 249 вместо 237 но Вы же правили файл и добавили строки.
У меня блокнот не нумерует строки, а считать их руками неудобно и долго.
1.jpg
1.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
сообщение удалено
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1768  14 Дек. 19, 11:50
Нет, не помогло. И папку новую чистую создал и файл туда перебросил.
IMG_20191214_114549.jpg
IMG_20191214_114549.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1769  14 Дек. 19, 12:27, через 38 мин
Финальный вариант синхронизатора - в приложении к топику. Свой мусор удалил.
lsync.py.zip 10.8 Кб
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1770  14 Дек. 19, 12:40, через 13 мин
Заработало
IMG_20191214_123812_BURST001_COVER.jpg
IMG_20191214_123812_BURST001_COVER.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1771  14 Дек. 19, 12:59, через 19 мин
Замечательно. Теперь давайте займемся калибровками. В консоли, где запущен синхронизатор, нажмите клавишу 'h'. Должен появиться список устройств с hard-ключами и калибровочными данными. Нужно добавить калибровочные данные для тех устройств, где они отсутствуют. Там - всякая чача. Для этого открываем вторую консоль, переходим в папку, где лежат все наши файлы и запускаем интерпретатор питона. Просто пишем python3. После запуска интерпретатора, пишем в его консоли: from api import *

Теперь покажите мне, пожалуйста, список железа (в консоли синхронизатора, когда была нажата клавиша h), что бы я смог дать конкретные инструкции.
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1772  14 Дек. 19, 14:25
Сразу не ответил, был немного занят.
К железу добавлено 2 модуля по управлению клапанами. Я им назначил адреса 24 и 34 соответственно.  И 2 тиньки у меня.
IMG_20191214_141719.jpg
IMG_20191214_141719.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
IMG_20191214_141746.jpg
IMG_20191214_141746.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1773  14 Дек. 19, 15:11, через 46 мин
Хорошо. Продолжим. Из списка оборудования мы видим, что в калибровках датчика P1 - полная ерунда (все единички). Значит нужно ввести калибровочные данные в это устройство. В консоли питона (у Вас справа) выполняем команду: cset('P1', 0.0734, 38, 5) Здесь cset - это функция записи калибровочных данных в устройство P1: коэффициент 0.0734, смещение 38 и индекс единицы измерения 5 (это мм.рт.ст.). Это мои данные, у Вас калибровочные данные могут несколько отличаться.

Проделайте такое же действие для всех устройств, для которых необходимы калибровочные данные. Для датчика RMS: cset('U0', 0.3839, 0, 1) (коэффициент у Вас может отличаться - поставьте правильный). Для PWM-контроллеров q0, q1, q2 (расходы полностью открытых клапанов в мл/час, смещение 0) и PDM-контроллера w0 (номинальная мощность в ваттах, смещение 0). Остальные устройства не трогайте.

Список единиц измерения можете посмотреть в файле lite.py или распечатать из БД командой: [u.decode() for u in rdb.lrange('units', 0, -1)]. Нумерация - с нуля. Посмотреть калибровочные данные можно командой cget('P0') или cget('U0') и т.д.

После ввода всех калибровочных данных закройте синхронизатор (клавиша q) и запустите его вновь. Посмотрите калибровки (опять клавиша h). Если все нормально - можно переходить к скриптам автоматизации.
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1774  14 Дек. 19, 18:46
Создал сам команды калибровки
cset('q0', 2000, 0)
cset('q1', 2000, 0, 1)
cset('w0', 3000, 0, 1)
Ни одна из них не проходит, ошибка в синтаксисе.
Как правильно написать?
OldBean Доцент Красноярск 1K 1.4K
Отв.1775  15 Дек. 19, 05:00
Ни одна из них не проходит, ошибка в синтаксисе.
Как правильно написать?gol_avto, 14 Дек. 19, 18:46
Может быть Вы забыли импортировать модуль api.py?

Я вот с утреца, на свежую голову, фактически воспроизвел Вашу конфигурацию (добавил два дополнительных PWM-контроллера для клапанов) и ситуацию (убил все калибровки). При этом использовал свежую ("нулевую") систему. Далее проделал следующие манипуляции:
1. В консоли запустил синхронизатор, посмотрел что с железом (клавиша h) и убедился в отсутствии необходимых калибровок (см. первый скриншот).
2. Открыл еще одну консоль (при работающем синхронизаторе!) и произвел все необходимые действия: вошел в нужную папку, запустил питон, импортировал модуль api и установил все необходимые калибровки (команды cset(...)). Затем проверил - правильно ли они изменены (команды cget(...)). См. второй скриншот.
3. Закрыл синхронизатор, запустил его снова и опять посмотрел железо. Все калибровки теперь нормальные. См. третий скриншот.

Вроде все работает правильно. Попробуйте четко повторить все эти действия. Должно получиться.

PS
Калибровки записывать в модули можно по-разному. Но это - самый быстрый способ их восстанавливать после прошивок (если не сохранять EEPROM) или других катаклизмов... Улыбающийся
2019-12-15-081528_1920x1080_scrot.png
2019-12-15-081528_1920x1080_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
2019-12-15-082720_1920x1080_scrot.png
2019-12-15-082720_1920x1080_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
2019-12-15-082836_1920x1080_scrot.png
2019-12-15-082836_1920x1080_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.1776  15 Дек. 19, 07:24
Попробуйте четко повторить все эти действия.OldBean, 15 Дек. 19, 05:00
Я видимо неполную информацию сообщил. Команды созданные Вами пролетают на ура. По образу и подобию написал для 2-х других модулей - выскакивает ошибка.
Посмотрите скриншот справа.Ваша последняя команда проходит, а 2 мои предыдущие нет, хотя все пробелы и запятые на своих местах.
Не понятно.
========================
появился файл err в нем запись
float() argument must be a string or a number, not 'NoneType'
==================
и как правильно писать
так from api import*
или так from api import *
вчера на последний вариант ругань была, сегодня нет.

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

Новая инфа. команды для q0 и q1 прошли, а для q2 и w0 - нет.
После этого обновил окно слева, а изменений никаких нет по q0 и q1
IMG_20191215_071759.jpg
IMG_20191215_071759.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
IMG_20191215_080224.jpg
IMG_20191215_080224.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.1777  15 Дек. 19, 14:41
Так он же Вам на чистейшем английском пишет Indentation Error!!! Вы зачем пробелы-то перед командами ставите?! Не нужно.

Ладно. Давайте все по порядку.

1. Одна из замечательных особенностей питоновского синтаксиса заключается в том, что блоки кода оформляются отступами. Т.е. вложенные блоки кода (например, в циклах или условиях) оформляются отступами (пробелами или табуляцией). Операторы первого уровня - один отступ вправо, следующий уровень - еще один отступ вправо и т.д. Вы поставили пробел перед командой, питон естественно считает, что эта команда находится во вложенном блоке, а блочных операторов типа for, if и т.п. перед этим не было. Понятно, что интерпретатор просто в ярости.
2. В питоне есть два основных способа выполнения команд: автоматический и "ручной". В первом случае Вы пишете
python3 файл.py
В этом случае питон выполняет команды, описанные в файл.py, автоматически в порядке их следования с учетом ветвлений в скрипте. Когда Вы пишете просто
python3
без файла, то интерпретатор питона запускается в интерактивном режиме: он ждет ручного ввода команд и выполняет их по мере их ввода.
3. Программы бывают большие. Их удобно разбивать на, так называемые, модули. Модули - это просто куски программ (скриптов). Файл api.py - пример модуля. Если вы хотите использовать функционал какого-нибудь модуля в своей программе или при интерактивной работе - его нужно импортировать. Это можно сделать разными способами. Простейший:
import api
но при обращение, например, к функции модуля перед именем функции придется ставить имя модуля с точкой, которое определяет, так называемое, пространство имен. Пример:
api.cget('P0')
Есть другой вариант:
from api import cget, cset, temp
В этом случае мы импортируем только перечисленные имена (константы, функции и т.п.) и можем обращаться к ним просто по имени. Пример:
cget('P0')
Это сокращает запись, но могут быть коллизии при импорте совпадающих имен из разных модулей. Если же мы хотим импортировать все имена из модуля, пишем
from api import *
Пробел перед звездочкой можете ставить, а можете не ставить. Все равно.
ekochnev Магистр Екатеринбург 207 54
Отв.1778  16 Дек. 19, 10:55
OldBean, вот зря вы от отдельной утилиты калибровки отказались, была же графическая calibr.py ! :-)
Поэтому периодически придется тут мини-курс питона начитывать... :-)

А если серьезно, то может на самом деле сделать отдельную утилиту калибровки и для текстового режима?
Или, например, добавить такую опцию в синхронизатор, благо, он и список всех плат видит и текущие калибровки отображает: нажал букву "с" - он из режима синхронизации вошел в режим калибровки: запросил порядковый номер платы из списка и калибровочные данные, а после их ввода снова вернулся в режим синхронизации. Вроде не сложно.
OldBean Доцент Красноярск 1K 1.4K
Отв.1779  16 Дек. 19, 13:04
... может на самом деле сделать отдельную утилиту калибровки и для текстового режима?
Или, например, добавить такую опцию в синхронизатор,...ekochnev, 16 Дек. 19, 10:55
Да, наверное, надо сделать. Сделаю.