Форум самогонщиков Сайт Барахолка Дабы не отвыкнуть

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

Форум Оборудование Автоматика
1 ... 90 91 92 93 94 93
OldBean Доктор наук Красноярск 784 1208
Отв.1840  13 Янв. 20, 03:30
дошли рукиekochnev, 10 Янв. 20, 22:26
По-белому завидую... :)

1. Про сброс. Да. Эта реализация общего сброса получилась не очень удачной - при большом количестве модулей нагрузка на линию RES может оказаться существенной. Проблему можно решить при помощи мосфета в качестве согласователя уровней выхода малинки с линией RES. Ну и, конечно, диод вместо перемычки ничему не противоречит. Более гибкое решение.
2. Про релейный модуль. К сожалению, он просто "выпал" из поля зрения. Освободившийся силовой модуль контактора был перепрошит в ШИМ-модуль. Делал фракционирование с несколькими клапанами отбора. Сейчас отказался от такого варианта в пользу переключателя ("краника") с сервой. Поэтому его можно будет перепрошить обратно в релейный модуль и посмотреть что не так с работой реле. Сделаю это чуток попозже - сейчас, к сожалению, совсем нет возможности заняться нашими делами.

А как у Вас с азами технологии, допуски и посадки, режимы мехобработки,режущие и обрабатываемые материалы, режимы термообработки, сварочные процессы....да дохрена ещё !Пикаль, 10 Янв. 20, 21:29
Всего на свете знать нельзя. Но, если человек вдруг решил заняться автоматизацией физико-химических установок (коими и являются рассматриваемые здесь), то знания основ программирования и умение мыслить алгоритмически необходимы однозначно.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1841  13 Янв. 20, 05:43
Неработающий контактор отложил в сторону и вчера немного снова поигрался с железячками.

Задачу себе поставил следующую: на простейшей конфигурации (плата RMS + PDM) написать пользовательский скрипт имитирующий работу в ручном режиме, т.е. при нажатии на определенные клавиши должна увеличиваться или уменьшаться мощность подаваемая на ТЭН.

PDM в отличие от контактора с новой прошивкой заработал нормально, проверил и со старым софтом и с новым. Пользовательский скрипт реализующий поставленную задачу написать тоже оказалось не сложно. А вот результат не понравился, совсем не понравился. Очень большие задержки реакции синхронизатора на события нажатия клавиш, делающие работу с софтом очень некомфортной. Т.е. если синхронизатор работает в автоматическом режиме с минимальным вмешательством человека, сам переключает режимы, то это как-то не заметно. А вот в ручном режиме когда то мощность оперативно добавить-убавить, то клапаном отбора поиграться, пользоваться становится очень тяжело. Запускал все зайдя на малинку с компа через VNC сессию. Не знаю, попробую попозже остановить на малинке VNC сервер, зайти просто через SSH и повторить эксперимент, но в текущем варианте подобные задержки для меня просто не приемлемы.

Думаю как быть...
OldBean Доктор наук Красноярск 784 1208
Отв.1842  13 Янв. 20, 07:32
Думаю как быть...ekochnev, 13 Янв. 20, 05:43
Сейчас такт работы синхронизатора (dt) поставлен на 2 сек. Это лимитирующий модуль. Т.к. curses работает в отдельном потоке без дополнительных задержек. В принципе, для неторопливой работы мне показалось вполне достаточным. Несколько ректификаций (в автоматическом режиме) с этой версией я уже делал. Вполне комфортно, если не "топить педаль в пол" :) Если же хочется все руками и побыстрее, то простейший способ ускорить реакцию системы - уменьшить dt до 1 сек. Если Вам и этого будет недостаточно, то тогда придется перестраивать основной цикл работы синхронизатора - делать несколько проверок запросов на обновление контроллеров на один цикл преобразований датчиков RMS и температур (времена преобразования 1 сек и 0.75 сек соответственно). В принципе, несложно это реализовать в следующих релизах синхронизатора с соответствующими параметрами, которые можно вводить, например, в командной строке при запуске синхронизатора. Ну если это действительно нужно. Вы уверены?
PS
С точки зрения реакции системы разницы в работе непосредственно на малинке и с другой станции (локальная сеть) по SSH практически нет. Да и не должно быть. Какой-то заметной. С VNC не пробовал.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1843  13 Янв. 20, 07:58, через 26 мин
Вы уверены?OldBean, 13 Янв. 20, 07:32
В данном случае я не уверен в правильности подхода в целом, когда цикл опроса клавиатуры совпадает с циклом записи и чтения из железа.

Подробнее:
Пусть нам необходима реакция системы на нажатие клавиши, увеличивающая мощность на единицу.
Значение мощности хранится в двух местах: в базе и в контроллере модуля. Эти значения синхронизируются в одном цикле одного потока. Если делать опрос нажатий клавиши в этом же цикле, то за один цикл мы обрабатываем только одно нажатие. Поэтому если цикл длится 2 сек, то за две секунды мы можем изменить мощность только на одну единицу. Если же клавиатуру опрашивать в другом потоке, то за эти 2 сек я могу нажать кнопку 5 раз и изменить значение в базе на 5 единиц. И в железо из базы в итоге перенесется не пять изменений по единице, а одно на 5 единиц.

Процесс опроса клавиатуры и инкрементирования значения в базе быстрый, а процесс синхронизации базы и железа медленный. Их надо разносить в разные циклы разных потоков. Тогда и реакция на нажатие клавиш будет мгновенной и цикл опроса железа разгонять не надо будет.
OldBean Доктор наук Красноярск 784 1208
Отв.1844  13 Янв. 20, 08:36, через 39 мин
когда цикл опроса клавиатуры совпадает с циклом записи и чтения из железа.ekochnev, 13 Янв. 20, 07:58
Нет. Не совпадает. Curses вообще работает в отдельном потоке (v. 0.3.0.1 и далее) без каких либо дополнительных задержек. Реакция системы на нажатие клавиш происходит без заметных задержек. Посмотрите реакцию на экране малинки или на консоли (если по SSH). Лимитирует реакцию системы именно такт синхронизатора (сейчас 2 сек). Как уменьшить время его реакции писал выше.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1845  13 Янв. 20, 08:37, через 2 мин
Ок, гляну вечером
сообщение удалено
ekochnev Бакалавр Екатеринбург 82 20
Отв.1846  13 Янв. 20, 09:56
gol_avto, может не стоит горячиться?
Сейчас чуть устаканится с железом, народ скриптов понапишет. Думаю, поделиться ими никому не жалко будет, если у Вас затруднения с самостоятельным написанием, то просто будете чужие использовать.
OldBean Доктор наук Красноярск 784 1208
Отв.1847  13 Янв. 20, 19:56
gol_avto, данная система (которая LITE) как раз и задумывалась чтобы облегчить изготовление и настройку совершенно разных автоматик для коллег-непрограммистов. Но полностью исключить алгоритмику никак не получается. В общем то, оно и понятно. Потому что, для того чтобы малинка управляла установкой именно так как Вы хотите, ей нужно как-то объяснить ЧТО конкретно Вы от нее хотите. Ну не умеют пока компьютеры читать мысли... Питон же - один из простейших вариантов достичь взаимопонимания с малинкой. Это первое. Второе. Концепция пользовательских скриптов призвана дополнительно упростить написание управляющих программ. Просто она еще сыровата и поэтому требует немного большего напряжения, чем хотелось бы. Но со временем язык пользовательских скриптов (по сути это будет специализированное подмножество питона) будет упрощаться и все больше приближаться к "человеческой" логике управления всем многообразием наших процессов.

Мне жаль, что Вы решили прервать наш с Вами тернистый путь. Вы прошли уже заметную его часть. Если передумаете, я готов продолжить его вместе с Вами. Уже недалек тот миг, когда в голове что-то "щелкнет", туман рассеется и все станет кристально прозрачным и понятным. Я не намного младше Вас, поэтому рискну дать совет - попробуйте сделать еще несколько шагов. Если что - подстрахую. По мере сил.
сообщения удалены (8)
Пикаль Доктор наук СПб 875 152
Отв.1848  15 Янв. 20, 00:11
Понял, бесполезно...
сообщение удалено
OldBean Доктор наук Красноярск 784 1208
Отв.1849  15 Янв. 20, 06:55
To ekochnev

Евгений, я немножко "отрефлексировал" относительно работы синхронизатора. Ну, в принципе, можно отказаться от жесткого тактирования его работы и перейти на событийную модель. Т.е. обновлять контроллеры исполнительных устройств сразу же при получении запроса на изменение параметра, выводить показания датчиков сразу же по окончанию циклов преобразования и т.п. Протоколирование в БД тоже можно частично реализовать в духе время-событие. Для исполнительных устройств. В этом случае интерактивный режим работы, конечно, станет более комфортным. Однако, заметно усложнится работа с редиской. Ну, в общем, можно подумать в этом направлении.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1850  15 Янв. 20, 08:08
перейти на событийную модельOldBean, 15 Янв. 20, 06:55
Это наверное будет более интересным, хотя пока и не могу оценить насколько сложным в реализации. Тоже подумаю в эту сторону...
nubsaybot Студент Рязань 22 6
Отв.1851  07 Февр. 20, 20:47
Подскажите почему малинка 3б+ так себя ведет, ищет только по четным адресам?
Вот результат i2cdetect -y 1 на лог. анализаторе, шина пустая, правильно ли это?
screenshot.png
Screenshot. Ненавязчивая автоматизация ректификационной установки. Автоматика. Оборудование.

Как решить вопрос? что посоветуете?
ekochnev Бакалавр Екатеринбург 82 20
Отв.1852  07 Февр. 20, 20:55, через 9 мин
Как решить вопрос? что посоветуете?nubsaybot, 07 Февр. 20, 20:47
Пункт 14.4 самого первого сообщения этой темы не про это?
OldBean Доктор наук Красноярск 784 1208
Отв.1853  08 Февр. 20, 12:45
Новая прошивка контактора не хочет работать нигде, хотя lsync видит модуль в списке устройств.ekochnev, 10 Янв. 20, 22:26
Сейчас перепрошил один силовой модуль в качестве реле (версия прошивки 0301) и проверил. Вроде работает стабильно. Как через синхронизатор (первый скриншот), так и напрямую (второй скриншот). Евгений, может быть какая-нибудь наводка на линиях INT или RES? Попробуйте зашунтировать их на землю емкостями (на уровне сотни нан).

Подскажите почему малинка 3б+ так себя ведет, ищет только по четным адресам?nubsaybot, 07 Февр. 20, 20:47
Это не малинка, это протокол i2c так устроен. Адрес - это старшие 7 бит после старта, а младший бит - команда для слейва (чтение или запись).
2020-02-08-162100_1920x1080_scrot.png
2020-02-08-162100_1920x1080_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика. Оборудование.
2020-02-08-162613_1920x1080_scrot.png
2020-02-08-162613_1920x1080_scrot.png Ненавязчивая автоматизация ректификационной установки. Автоматика. Оборудование.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1854  08 Февр. 20, 19:13
Евгений, может быть какая-нибудь наводка на линиях INT или RES?OldBean, 08 Февр. 20, 12:45
Сергей, тут для меня какая то загадочная и непонятная ситуация. Скорей всего наводка, но откуда и куда она идет, я вычислить пока не могу.
В ходе копания выяснил, что если отсоединить обмотку контактора от модуля, то модуль начинает работать нормально (светодиод на модуле загорается и гаснет.
Мало того, если вместо обмотки контактора подсоединить к модулю обычную лампочку, то тоже все работает. Конденсаторы на линиях INT и RES не помогают, мало того, полностью отсоединял эти контакты модуля от крейта (INT на модуле притягивал через резистор на +3.3), номиналами резистора R2 и конденсатора C6 около силового симистора я тоже игрался, не помогает. Даже атмегу уже пробовал менять (она в панельке). Пока ничего не помогает - без контактора или с лампочкой вместо него все работает, с контактором нет. Если на модуле зажечь светодиод с отключенным контактором, а потом его подсоединить, то светодиод гаснет, т.е. микроконтроллер переводит вывод в выключенное состояние. Но самое удивительное для меня - это то, что стоит поменять прошивку на старую, то контактор начинает включаться и выключаться абсолютно нормально. При этом я сравнивал прошивки - в новой ничего кроме обработки прерывания на INT не добавилось и поэтому такие выкрутасы в работе мне не понятны. Буду копать дальше. С осциллографом дела пошли бы быстрее, но в хозяйстве такого не имею. Копаюсь почти вслепую.

P.S. пробовал на всякий случай даже напряжение питания вместо 5.0 вольт делать 5.2, не помогает...
P.P.S. Остальные аналогичные модули (клапана, тэн) со своими новыми прошивками работают нормально, НО!!! Если к модулю, управляющему клапаном в качестве нагрузки присоединить не клапан, а данный контактор... ...то он тоже перестает работать и ведет себя аналогично: контактор щелкает и на мгновение включается, затем тут же выключается..

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

Разобрался наконец со своей бедой, излагаю суть.

Исходные данные:

- шина INT у нас предназначена для формирования сигнала аварии
- вывод GPIO5 малинки (контакт 29) запрограммирован как вход для чтения уровня сигнала с шины INT (т.е. направление сигнала от крейта к малинке)
- т.к. логика малинки рассчитана на напряжение 3.3в, то на крейте притягиваем шину INT к шине 3.3в через резистор R1=10кОм

Суть проблемы:

Кратко: микроконтроллер в модуле контактора воспринимает сигнал с шины INT как логический ноль и отрубает контактор считая, что произошла авария.

Детали: У меня на шине INT напряжение 3.28 вольта. Если вывод GPIO5 малинки совсем не подключен к крейту, то микроконтроллер контактора почему-то считает этот уровень нулем, поэтому при подаче сигнала на срабатывание, он даже не пытается включить контактор. При подключении к крейту входа GPIO5 малинки, не знаю почему, но уровень шины INT на какие то мизерные доли повышается и видимо чуть-чуть превышает пороговый, контроллер воспринимает его как единицу. При подаче сигнала на включение индуктивной нагрузки контактора на шину наводится какая-то небольшая помеха, уровень опускается ниже порогового, контроллер считает, что на шине единица сменилась на логический ноль и практически сразу отключает только что включившийся контактор. При резистивной нагрузке в виде обычной лампы помехи не происходит и контактор после включения не отключается.

Решение:

Казалось бы, логичным подходом будет снижение уровня помех на шине INT. Пробовал ставить сглаживающие конденсаторы, как керамические (100нФ) между шиной INT и землей, так и на шину +3.3 к которой шина INT подтягивается через резистор R1 на крейте. Между +3.3 и землей ставил пару конденсаторов +10 мкФ и 100нФ. Но данным подходом устойчивой работы добиться не удалось.

Кардинальным решением стало подтягивание шины INT через резистор R1 крейта не к шине +3.3, а к шине +5 (отсоединил резистор R1 от +3.3 и соединил с +5). Чтобы малинка при этом не вышла из строя между шиной INT крейта и входом GPIO5 малинки пришлось поставить активный преобразователь уровней. В таком виде все работает стабильно.

Возможно получится упростить:

Т.к. направление сигнала INT у нас одностороннее: от шины INT крейта к входу GPIO5 малинки, то, думаю, что можно упростить поставив в данном случае вместо активного преобразователя уровней простейший делитель из двух резисторов. Но это еще не пробовал.

Интересно было бы конечно посмотреть на осциллографе, что там у меня творится на шине INT крейта, но не имею такого в хозяйстве. Однако, притягивание данной шины к +5 вместо +3.3 в моем случае однозначно является решением.
OldBean Доктор наук Красноярск 784 1208
Отв.1855  10 Февр. 20, 17:42
Я вот сейчас подключал контактор в нагрузку контроллера реле. У меня все работает стабильно ( в смысле - самостоятельно не отрубается) и при обычной подтяжке линии INT к 3.3В. Прерывания по кнопке INT тоже отрабатываются стабильно.

Судя по всему, у Вас действительно где-то проскакивает наводка при срабатывании контактора. Вопрос - где? На линии INT или на самой плате контроллера. Может быть дело в компоновке контроллера? Силовые и сигнальные цепи не слишком близко идут? По кусочкам сигнальных земель силовые токи не гуляют? Вы какую разводку использовали?
контактор.jpg
контактор.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика. Оборудование.
ekochnev Бакалавр Екатеринбург 82 20
Отв.1856  10 Февр. 20, 18:09, через 28 мин
У меня своя разводка, не такая как у вас, хотя близкая.
По спецификации микроконтроллера, минимальное гарантированное напряжение для логической единицы 4.2 вольта, а реально у меня получается на шине INT всего 3.28, так что не удивительно что он логическую единицу неуверенно берет.
Для исключения наводок я вообще отсоединял 5-ю ногу контроллера от дорожек на плате модуля и напрямую подтягивал ее через резистор к контакту +3.3 непосредственно на модуле. Не хочет работать.
Да что там. При отсоединенном контакторе я снимаю высокое напряжение с силовых шин, подаю команду на включение контактора, светодиод на модуле загорается, подаю высокое напряжение на силовые шины и даже этого достаточно чтобы контроллер поймал какую-то помеху и выключил светодиод хотя силовые шины и цепи питания контроллера вообще развязаны...
С подтяжкой от +5 и преобразователем уровней все работает четко.

P.S. Проверил, на данном модуле разводка у меня отличается от Вашей только на силовой половине. Вокруг микроконтроллера разводка почти точь-в-точь такая же...
OldBean Доктор наук Красноярск 784 1208
Отв.1857  10 Февр. 20, 19:15
По спецификации микроконтроллера, минимальное гарантированное напряжение для логической единицы 4.2 вольта, а реально у меня получается на шине INT всего 3.28, так что не удивительно что он логическую единицу неуверенно берет.ekochnev, 10 Февр. 20, 18:09
Странно. Обычно 3-вольтовой логики за глаза хватало для управления 5-вольтовой...

PS
Посмотрел в datasheet на 328-ю мегу (см.стр.600 - 35.8. Pin Threshold and Hysteresis). Там пороги по входам равны примерно 2.1 В для перехода в 0 и 2.7 В для перехода в 1. Это при питании 5В. Так что 3.3В должно однозначно давать логическую единичку. Но, видимо, в Вашем случае наводка "перебарывает". :(

Ну да ладно. Решилась проблема - и слава Богу! :)
ekochnev Бакалавр Екатеринбург 82 20
Отв.1858  16 Февр. 20, 15:55
Решилась проблема - и слава Богу! УлыбающийсяOldBean, 10 Февр. 20, 19:15

Проблема не совсем решилась...
Отказался я от активного преобразователя уровней, решил упростить и собрал схему как на приложенном рисунке. Т.е. в разрыв шины INT на крейте между разъемом и слотами для модулей вставил диод Шоттки и добавил дополнительный притягивающий резистор к шине +5 со стороны модулей, ну и перенес точку подключения кнопки прерывания. Получилась со стороны малинки шина INT притягивается к +3.3 , а со стороны модулей - к +5 вольтам. Нажатие кнопки приводит к четкому логическому нулю с обеих сторон.

Резульат: модули стали получать четкие уровни и модуль контактора перестал по помехе с шины самопроизвольно выключать контактор... ...Зато сейчас их программно вырубает малинка ловя помехи со своей стороны шины INT. Это именно малинка, т.к. закомментировав процедуру signalInt в lsync.py такое поведение прекращается.

Принес с работы осциллограф, посмотрел. Уровень помех с 3-вольтовой стороны шины INT намного выше чем с 5-вольтовой. Т.е. наводка идет на кольцо: малинка - провод +3.3 к крейту - шина +3.3 крейта - притягивающий резистор - шина INT крейта - провод INT от крейта к малинке. Проблема обозначилась видимо когда я все стал упаковывать в корпус и компоненты стали располагаться ближе друг к другу, пока все было развалено на столе, такого не замечал. Установка дополнительных конденсаторов на крейт не помогает. Изначально малинка соединялась с крейтом пучком отдельных проводов, переделал на плоский шлейф, не помогло. Длина шлейфа около 20 см.

Думаю, что бы еще можно сделать...
connections.png
connections.png Ненавязчивая автоматизация ректификационной установки. Автоматика. Оборудование.
U-M Специалист MSK 184 31
Отв.1859  16 Февр. 20, 23:26
А если попробовать временно "соплю повесить" из витой пары на линию INT и GND ? А резистор R1 10k со стороны +5В поставить в самом конце "сопли" физически за самым последним модулем на шине?