Ненавязчивая автоматизация ректификационной установки
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1160 15 Февр. 18, 02:35
ZagAl, вспомнил еще один случай. Может навеет какую-нибудь полезную ассоциацию. У меня над верстаком (совсем рядом с установкой) висит мощная люминесцентная лампа (со старым здоровенным пускателем). Так вот, при выключении, она давала сильную импульсную наводку, которая вышибала всю гирлянду DS-ок. Долго эту помеху не мог "вычислить". Вечером все безукоризненно работает. Уходя домой "притормаживаешь" установку, естественно, выключаешь свет. А утром приходишь - DS-ки "висят"...
Sten58
Магистр
Лисичанск
217 49
Отв.1161 15 Февр. 18, 09:27
2. Случилось форс-мажор с ТЭНами с отключением ДИФа.BogAD, 31 Янв. 18, 21:44
Как отличить это от П.1?BogAD, 31 Янв. 18, 21:44
Это легко отличить, если RMS питать ДО ДИФа, а детектор нуля - после.
m16
Модератор
Тамбов
1.9K 1K
Отв.1162 15 Февр. 18, 12:25
А утром приходишь - DS-ки "висят"...OldBean, 15 Февр. 18, 02:35пришла в голову идея программно-аппаратного лечения проблемы. аппаратная часть - полевик по питанию дс-ок. программная - после чтения температуры со всех датчиков сравниваем их показания . если они равны то снимаем питание с датчиков полевичком на 100-200мс, подаём питание и через аналогичную паузу заново запускаем преобразование проигнорировав предыдущее.
ZagAl
Доцент
Прибалтика
1.9K 916
Отв.1163 15 Февр. 18, 12:53, через 29 мин
m16, так я и пытаюсь это сделать, только прямо на малинке:
print "Считываю датчики"
Ts = sens.DS18B20.Ts() # Считаем датчики
if Ts.get(id) != None and Ts[id] != 0: # Соответствующий ключ (id) есть есть в словаре
ReadSensors = True
if Ts[id] == 85.:
ReadSensors = False
time.sleep(2)
print "Температура = %4.1f Возвращаюсь к считыванию датчиков." % (Ts[id])
continue
print "Датчики считаны"
else: # Увы...
print "Датчики отсутствуют или неисправны"
ReadSensors = False #
GPIO.output(12,0) # Отключаем 3.3V от DS18B20
print "Отключаю питание"
time.sleep(0.2)
GPIO.output(12,1) # Включаем 3.3V на DS18B20
print "Включаю питание"
error_counter += 1
time.sleep(2)
И в тестовой программе все получается (см. логи выше). Мне не понятно почему при вставке этого фрагмента в основную программу, (после отключения и включения питания) появляются нули. Откуда они?
И почему в других тестах оператор else: срабатывает только через 21 шаг после начала отображения нулей?
P.S. Вчера запустил тест датчиков на неработающей колонне. Тестирование продолжается пока без ошибок - последний ноль в строке.
Скрытый текст
while ReadSensors == False:print "Считываю датчики"
Ts = sens.DS18B20.Ts() # Считаем датчики
if Ts.get(id) != None and Ts[id] != 0: # Соответствующий ключ (id) есть есть в словаре
ReadSensors = True
if Ts[id] == 85.:
ReadSensors = False
time.sleep(2)
print "Температура = %4.1f Возвращаюсь к считыванию датчиков." % (Ts[id])
continue
print "Датчики считаны"
else: # Увы...
print "Датчики отсутствуют или неисправны"
ReadSensors = False #
GPIO.output(12,0) # Отключаем 3.3V от DS18B20
print "Отключаю питание"
time.sleep(0.2)
GPIO.output(12,1) # Включаем 3.3V на DS18B20
print "Включаю питание"
error_counter += 1
time.sleep(2)
И почему в других тестах оператор else: срабатывает только через 21 шаг после начала отображения нулей?
P.S. Вчера запустил тест датчиков на неработающей колонне. Тестирование продолжается пока без ошибок - последний ноль в строке.
m16
Модератор
Тамбов
1.9K 1K
Отв.1164 15 Февр. 18, 13:11, через 18 мин
# Включаем 3.3V на DS18B20ZagAl, 15 Февр. 18, 12:53чем питание коммутируешь? измерял реальное напряжение после ключа? попробуй увеличить время выключения
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1165 15 Февр. 18, 17:18
2ZagAl
В коде, который Вы написали, всегда анализируется один и то же датчик (последний в кортеже tids). В приложении к топику этот фрагмент отмечен. При проверке датчиков, Вам нудно организовать цикл по их ID-шникам. Ну, например, конструкцию, типа такой, как ниже:
В коде, который Вы написали, всегда анализируется один и то же датчик (последний в кортеже tids). В приложении к топику этот фрагмент отмечен. При проверке датчиков, Вам нудно организовать цикл по их ID-шникам. Ну, например, конструкцию, типа такой, как ниже:
Ts = sens.DS18B20.Ts() # Считаем датчики
errorFlag = False
for id in tids: # Пробегаем по ID-шникам датчиков и проверяем
if Ts.get(id) == None or Ts[id] == 85. : # Проблема
print "Датчик с ID = %x отвалился или неисправен. Перезагрузка датчиков" %(id)
... Здесь код для перезагрузки датчиков...
errorFlag = True
break
if errorFlag:
continue # Пропустим выдачу температур на экран
ZagAl
Доцент
Прибалтика
1.9K 916
Отв.1166 16 Февр. 18, 11:09
чем питание коммутируешь?m16, 15 Февр. 18, 13:11m16, так на Raspberry Pi GPIO пины предназначены для вывода 3.3 вольта. То есть DS-ки питаются прямо от Малинки. Ради интереса напряжение замерял. Соответствует 3.3 вольтам.
P.S. DS-ки отработали более суток без ошибок.
makh
Профессор
Sаmara
2.1K 1.1K
Отв.1167 16 Февр. 18, 14:26
GPIO пины предназначены для вывода 3.3 вольтаZagAl, 16 Февр. 18, 11:09Ой. Нет, не предназначены они для питания чего либо, максимальный нагруз на них в единицах миллиампер, насколько помню. Горячие датчики потребляют больше холодных, вот оно и версия, почему откисает на горячей трубе. Надо бы мосфетик маленький для включения гирлянды..
ZagAl
Доцент
Прибалтика
1.9K 916
Отв.1168 16 Февр. 18, 15:03, через 37 мин
Горячие датчики потребляют больше холодных, вот оно и версия, почему откисает на горячей трубе.makh, 16 Февр. 18, 14:26makh, этот вариант я пробую пока на неработающей колонне.
А вообще подумалось, что так как я пытаюсь смоделировать ситуацию отвалившихся датчиков совершенно не правильно. Ведь питание и земля от них не отключаются. Значит нужно анализировать линию данных...
m16
Модератор
Тамбов
1.9K 1K
Отв.1169 16 Февр. 18, 20:09
в гирлянде может быть повисшим один датчик при этом в линию данных слать мусор. только снятием питания его можно привести в чувство.
от порта малины питать как то стрёмно , во такой ключик на мосфетах собирай.
от порта малины питать как то стрёмно , во такой ключик на мосфетах собирай.
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1170 17 Февр. 18, 04:57
А вообще подумалось, что так как я пытаюсь смоделировать ситуацию отвалившихся датчиков совершенно не правильно. Ведь питание и земля от них не отключаются.ZagAl, 16 Февр. 18, 15:03Правильно подумалось :) Самый простой способ моделирования неисправности на шине 1-Wire - закорачивать сигнальную линию на землю и не отпускать (пока, например, не сняли питание с датчиков). В частности, именно такую ситуацию (ноль на линии) у меня "организовывал" один сильно "нервный" и чувствительный к наводкам датчик (это когда я "вычислял" стартер старой люминесцентной лампы). А в малинке это просто выглядело как пропадание всех датчиков с шины (условие if Ts.get(id) == None...). Однозначно "лечилось" кратковременным снятием и подачей питания на датчики/датчик.
Но, ИМХО, лучше бы Вы потратили время, силы и другие ресурсы на поиск источника помех. И, кстати, расскажите все-таки, если, конечно, не секрет, устройство Ваших 3 метров шины 1-Wire. Антенна 3 метра, если сделана "правильно";) будет много чего ловить.
ZagAl
Доцент
Прибалтика
1.9K 916
Отв.1171 17 Февр. 18, 11:49
Вот. Провод 4х жильный неэкранированный. На корпусе: верхний ряд - 4е коннектора для DS-ок, нижний ряд +5v, 12v, 7 и 8 это коннекторы для шаговых двигателей. Выключатель слева для 12-ти вольт. Освещение в помещении - обычные лампы накаливания.
BogAD
Кандидат наук
Красногорск - Белово
403 184
Отв.1172 17 Февр. 18, 12:38, через 50 мин
Извините за офтоп...
Если нет смысловой нагрузки - удалю.
По поводу экранирования.
всю осень 2016 испытывали новый электровоз на БАМе (2ЭС-7).
На электровозе тяговые двигатели асинхронники, преобразователи на IGBT-модулях.
Очень долго не могли понять, почему один ТП (тяговый преобразователь) неожиданно, в тяге более 60% отключался, а потом успешно включался сам в работу. По другим ТП (3 шт) такого безобразия не было.
Долго ловили причину. Отловили ошибку по анализатору сигналов, которая шла от датчика оборотов двигателя.
Причем сигнал был сильно зашумлен и в пиках при тяге более 45%. При выбеге (езде накатом) сигнал чистенький.
Мозги ТП соответственно "съезжали" от такого сигнала, ТП отключался и начинал себя тестировать, ни чего не обнаружив криминального, он обратно включался в работу. Потом, минут через 5 опять все по новому...
Чего я только не делал, и менял датчик, и разъемы перебирал, и прозванивал монтаж - толку не было.
Причем это по времени затягивалось, т.к. за локомотив можно было взяться только при нахождении на канаве в депо.
Тут мне пришло в голову проверить экраны.
На датчике оборотов, экран кабеля посажен на GND со стороны ТП. На самом разъеме датчика, в районе тягового двигателя, экраны не были на массе, т.е. заизорированны.
По полученным знаниям, помнил, что по экрану не должны течь токи, только в этом случае будет от него эффект.
Т.е. все сигнальные линии, которые чувствительны к наводкам, должны иметь экран, который должен посажен на массу (GND) только с одной стороны, в начале линии, со стороны усилителя сигналов. А на датчик GND пропускается отдельным изолированном проводом в общем пучке. Все GND собираются в одном месте, в разъеме.
Вернемся к локомотиву.
Прозвонил экран датчика - все ОК, как и положено.
Шунт на двигателе имеется и тоже в порядке.
Стал просматривать силовые кабели, которые тоже имели свои экраны.
Удобней было их проверить со стороны ТП, т.к. было проще убрать экраны от массы. Звоним экраны - "все в порядке" - со стороны двигателя не прозваниваются, значит заизолированы. Вроде как по "правилам"...
Уже не зная куда копать, решил сравнить как с экранами на соседнем ТП, который нормально работает без сбоев.
Проверяя экраны силовых проводов - что за хрень! Они со стороны двигателя на земле!
ЁБ!!!...
И тут мне становится понятно, что экраны на силовых кабелях не надо рассматривать как экраны на датчиках!
ЭТИ КАБЕЛИ ИСТОЧНИКИ ПОМЕХ И НАВЕДЁНКИ!
Т.е. экраны должны сидеть на GND с обоих сторон кабеля.
Окрыли клеммную коробку двигателя, увидели, что так и есть - все три заизолированы. На заводе монтажник пакость сотворил. Нашли в последствии виновника- не знаю...
Восстановили на месте контакт экрана кабеля с GND. Больше ТП не брыкался.
К чему я опус напечатал.
Экранироваться нам нужно ОБЯЗАТЕЛЬНО. Особенно линии на цифровые DS-ки...
Если нет смысловой нагрузки - удалю.
По поводу экранирования.
всю осень 2016 испытывали новый электровоз на БАМе (2ЭС-7).
На электровозе тяговые двигатели асинхронники, преобразователи на IGBT-модулях.
Очень долго не могли понять, почему один ТП (тяговый преобразователь) неожиданно, в тяге более 60% отключался, а потом успешно включался сам в работу. По другим ТП (3 шт) такого безобразия не было.
Долго ловили причину. Отловили ошибку по анализатору сигналов, которая шла от датчика оборотов двигателя.
Причем сигнал был сильно зашумлен и в пиках при тяге более 45%. При выбеге (езде накатом) сигнал чистенький.
Мозги ТП соответственно "съезжали" от такого сигнала, ТП отключался и начинал себя тестировать, ни чего не обнаружив криминального, он обратно включался в работу. Потом, минут через 5 опять все по новому...
Чего я только не делал, и менял датчик, и разъемы перебирал, и прозванивал монтаж - толку не было.
Причем это по времени затягивалось, т.к. за локомотив можно было взяться только при нахождении на канаве в депо.
Тут мне пришло в голову проверить экраны.
На датчике оборотов, экран кабеля посажен на GND со стороны ТП. На самом разъеме датчика, в районе тягового двигателя, экраны не были на массе, т.е. заизорированны.
По полученным знаниям, помнил, что по экрану не должны течь токи, только в этом случае будет от него эффект.
Т.е. все сигнальные линии, которые чувствительны к наводкам, должны иметь экран, который должен посажен на массу (GND) только с одной стороны, в начале линии, со стороны усилителя сигналов. А на датчик GND пропускается отдельным изолированном проводом в общем пучке. Все GND собираются в одном месте, в разъеме.
Вернемся к локомотиву.
Прозвонил экран датчика - все ОК, как и положено.
Шунт на двигателе имеется и тоже в порядке.
Стал просматривать силовые кабели, которые тоже имели свои экраны.
Удобней было их проверить со стороны ТП, т.к. было проще убрать экраны от массы. Звоним экраны - "все в порядке" - со стороны двигателя не прозваниваются, значит заизолированы. Вроде как по "правилам"...
Уже не зная куда копать, решил сравнить как с экранами на соседнем ТП, который нормально работает без сбоев.
Проверяя экраны силовых проводов - что за хрень! Они со стороны двигателя на земле!
ЁБ!!!...
И тут мне становится понятно, что экраны на силовых кабелях не надо рассматривать как экраны на датчиках!
ЭТИ КАБЕЛИ ИСТОЧНИКИ ПОМЕХ И НАВЕДЁНКИ!
Т.е. экраны должны сидеть на GND с обоих сторон кабеля.
Окрыли клеммную коробку двигателя, увидели, что так и есть - все три заизолированы. На заводе монтажник пакость сотворил. Нашли в последствии виновника- не знаю...
Восстановили на месте контакт экрана кабеля с GND. Больше ТП не брыкался.
К чему я опус напечатал.
Экранироваться нам нужно ОБЯЗАТЕЛЬНО. Особенно линии на цифровые DS-ки...
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1173 17 Февр. 18, 12:53, через 16 мин
Вот.ZagAl, 17 Февр. 18, 11:49Спасибо. Детали монтажа не очень видны, но, если я правильно понял, датчики у Вас висят не на одной шине (т.е. - не как лапочки на елочной гирлянде), а включены как бы "звездой". Т.е. 3-метровые провода идут к каждому датчику отдельно и соединяются уже где-то на малинке. Если я правильно понял, и это действительно так, то такая "звезда", в сочетании с железом установки, в принципе вполне может работать как антенна. Может быть в этом проблема?
Если есть осциллограф, посмотрите сигнал в точках рандеву проводов, идущих от датчиков (или прямо на малинке). Сигналы питание-земля и сигнальная линия - земля. При выключенной установке и при включенной. Нет ли там чего-нибудь необычного? Посмотрите, в том числе, и на медленных развертках (герцы или доли герц).
Экранироваться нам нужно ОБЯЗАТЕЛЬНО. Особенно линии на цифровые DS-ки...BogAD, 17 Февр. 18, 12:38Оно, конечно, не помешает. Если помех много. Но я бы не стал так категорично утверждать. У меня хорошо и совсем без сбоев работает 3-проводная линия (ремень). Длина - около 2 метров. Датчики расположены как на гирлянде. После того, как заменил "нервный" датчик (он сам потом сдох) и отодвинул провод питания лампы в сторону на пол-метра, никаких проблем с DS-ками больше не наблюдалось ни разу.
gol_avto
Доцент
Москва - Серпухов - Анапа
1.3K 458
Отв.1174 17 Февр. 18, 13:11, через 18 мин
+1
У меня кабели DS-ок от дохлых мышей, а они экранированы. Никаких проблем.
У меня кабели DS-ок от дохлых мышей, а они экранированы. Никаких проблем.
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1175 17 Февр. 18, 13:18, через 8 мин
от дохлых мышеgol_avto, 17 Февр. 18, 13:11Хорошая идея ;)
PavelSaratov
Доктор наук
Саратов
622 80
Отв.1176 17 Февр. 18, 14:15, через 57 мин
Т.е. все сигнальные линии, которые чувствительны к наводкам, должны иметь экран, который должен посажен на массу (GND) только с одной стороны, в начале линии, со стороны усилителя сигналов. А на датчик GND пропускается отдельным изолированном проводом в общем пучке. Все GND собираются в одном месте, в разъеме.
http://www.bookasutp.ru/Chapter3_5.aspx
Там разжевано почему с одной стороны. С силовыми - чето я физику процесса не понимаю если честно.
Экранироваться надо, спору нет.
Те у кого работает на коротких линиях - тоже ничего удивительного. У них просто есть риск трудноотлавливаемую помеху словить.
Вообще если смотреть на все с точки зрения энергии - все гораздо понятнее. Есть кабель обмена информации. В нем скажем так с штатном режиме E энергии. Любая помеха извне (индуктивная или какая угодно) сбивает количество энергии в контуре. Он начинает чудить.
А что из этого следует? Все просто - если ваша установка стоит среди деревяшек и ваш ТЭН/электроника не фонят на этот контур - лишней энергии взяться неоткуда. Все будет нормально.
BogAD
Кандидат наук
Красногорск - Белово
403 184
Отв.1177 17 Февр. 18, 18:22
С силовыми - чето я физику процесса не понимаю если честно.PavelSaratov, 17 Февр. 18, 14:15
Ну вот же! Из вашей ссылки:
По сигнальным цепям:
3.5.2. Экранирование сигнальных кабелей...
... Если его заземлить с двух сторон (рис. 3.97), то образуется замкнутый контур, который будет работать как антенна, принимая электромагнитную помеху ...
По силовым:
3.5.4. Экраны кабелей на электрических подстанциях
На электрических подстанциях на оплетке (экране) сигнального кабеля автоматики, проложенного под высоковольтными проводами на уровне земли и заземленного с одной стороны, может наводиться напряжение величиной в сотни Вольт [Ke] во время коммутации тока выключателем. Поэтому с целью электробезопасности оплетку кабеля заземляют с двух сторон.
Для защиты от электромагнитных полей с частотой 50 Гц экран кабеля также заземляют с обеих сторон. Это оправдано в случаях, когда известно, что электромагнитная наводка с частотой 50 Гц больше, чем наводка, вызванная протеканием выравнивающего тока через оплетку.
PavelSaratov
Доктор наук
Саратов
622 80
Отв.1178 17 Февр. 18, 20:06
Не вы меня не поняли -почему сигнальные надо экранировать так и никак иначе и физику процесса я понимаю отлично.
Про силовые я из вашего описания не понял физики - чего там все так плохо работало. А то что экран (на самом деле броню а не экран силового кабеля надо с двух сторон - это ПУЭ если мне не изменяет память - смысл в том , что на предприятии с одного конца оторвется и внезапно окажется вся оплетка кабеля под напряжением. но ВНИМАНИЕ - это вообще никакого отношения к экранам и помехам не имеет, это требование безопасности, чтобы человека не убило. Поэтому и написал что не понял.
Про силовые я из вашего описания не понял физики - чего там все так плохо работало. А то что экран (на самом деле броню а не экран силового кабеля надо с двух сторон - это ПУЭ если мне не изменяет память - смысл в том , что на предприятии с одного конца оторвется и внезапно окажется вся оплетка кабеля под напряжением. но ВНИМАНИЕ - это вообще никакого отношения к экранам и помехам не имеет, это требование безопасности, чтобы человека не убило. Поэтому и написал что не понял.
Поэтому с целью электробезопасности оплетку кабеля заземляют с двух сторон.По трезвому подумаю. Криво как то все. БАД для электрики какой-то. Когда блин известно. Академик писал не меньше.
Для защиты от электромагнитных полей с частотой 50 Гц экран кабеля также заземляют с обеих сторон. Это оправдано в случаях, когда известно, что электромагнитная наводка с частотой 50 Гц больше, чем наводка, вызванная протеканием выравнивающего тока через оплетку.
OldBean
Доцент
Красноярск
1K 1.4K
Отв.1179 17 Февр. 18, 20:13, через 8 мин
Как говорят в Одессе: "Я на вас удивляюсь, коллеги!".
Вместо того, чтобы просто "не мусорить в помещении" сильными импульсными помехами, которые вышибают даже цифровые каналы связи и сами DS-ки, начинаются серьезные действия по защите от этих помех и/или проработке вариантов восстановления работоспособности системы после их воздействия. Ректификационная установка домашнего/лабораторного уровня должна быть настолько же "экологичной", как и обычный бытовой прибор типа телевизора или компьютера. Ну зачем же дома воспроизводить промышленные условия и потом с ними героически "справляться"?
PS
А при обычном уровне помех "цифре" глубоко плевать ходит она по простой витой паре или по экранированной. Т.к., что 15 мкВ, что 3584 мкВ - это все-равно ноль по сравнению с 3.3В. И никакого влияния на цифровой канал эти помехи не оказывают. Цифры я взял "с потолка" - из статьи, ссылку на которую привел уважаемый коллега PavelSaratov (рис.3.102).
Вместо того, чтобы просто "не мусорить в помещении" сильными импульсными помехами, которые вышибают даже цифровые каналы связи и сами DS-ки, начинаются серьезные действия по защите от этих помех и/или проработке вариантов восстановления работоспособности системы после их воздействия. Ректификационная установка домашнего/лабораторного уровня должна быть настолько же "экологичной", как и обычный бытовой прибор типа телевизора или компьютера. Ну зачем же дома воспроизводить промышленные условия и потом с ними героически "справляться"?
PS
А при обычном уровне помех "цифре" глубоко плевать ходит она по простой витой паре или по экранированной. Т.к., что 15 мкВ, что 3584 мкВ - это все-равно ноль по сравнению с 3.3В. И никакого влияния на цифровой канал эти помехи не оказывают. Цифры я взял "с потолка" - из статьи, ссылку на которую привел уважаемый коллега PavelSaratov (рис.3.102).