Страница 1 из 1

OneWire - баг или фича?

Добавлено: 17.08.2017{, 10:45}
kosmas
Заморочился я тут с контроллером управления теплыми полами. Т.е. если один датчик накроется, то не надо прошивку менять. Датчик поменял, контроллер перезапустил, и все. Но как всегда все не так просто...

Итак, есть такой элемент в библиотеке блоков - "Сканирование шины OneWire". Собрал гирлянду из 5 датчиков, запускаю, смотрю на экран - и вижу 5 одинаковых показаний. В общем, эта штука заполнила весь массив идентификатором первого датчика на шине. При этом, если воспользоваться меню "Инструменты" - "шины данных" - "Сканирование шины OneWire" - то там сначала появляется первый датчик, через несколько секунд остальные... Свои потуги прикладываю.

Что делать и кто виноват? Куды бечь?

OneWire - баг или фича?

Добавлено: 17.08.2017{, 12:38}
pan
во первых с чего вы взяли что адрес датчика уместится в переменную байт? во вторых r тригер не надо, блок и так срабатывает по фронту. в третиьих float - int тоже не надо, сразу подавайте на блок конвертации в строку

Добавлено (17.08.2017, 12:38)
---------------------------------------------
хотя с массивом погорячился. там массив из 9 байт

OneWire - баг или фича?

Добавлено: 17.08.2017{, 13:03}
pan
посмотрите мои потуги

OneWire - баг или фича?

Добавлено: 17.08.2017{, 13:41}
rw6cm
kosmas писал(а):Что делать и кто виноват?
Эта тема уже не однократно подымалась.
Для авто-определения датчиков, они должны быть каждый на отдельной шине.

OneWire - баг или фича?

Добавлено: 17.08.2017{, 14:08}
pan
rw6cm писал(а):Для авто-определения датчиков, они должны быть каждый на отдельной шине.
 не есть хорошо...

OneWire - баг или фича?

Добавлено: 17.08.2017{, 14:17}
Denn4a
есть вариант с гирлянда рабочий, у меня работает, но нада датчики программировать!

OneWire - баг или фича?

Добавлено: 17.08.2017{, 14:55}
pan
Denn4a, так и стандартными средствами работает

OneWire - баг или фича?

Добавлено: 17.08.2017{, 15:03}
support
pan писал(а):Цитата rw6cm ()Для авто-определения датчиков, они должны быть каждый на отдельной шине.
 не есть хорошо...
А как сделать хорошо? Вот смотрите- просканировали шину, получили кучу адресов, а как определить какой адрес какому датчику принадлежит?

OneWire - баг или фича?

Добавлено: 17.08.2017{, 15:11}
pan
программно ни как. только физически поочереди подключать а уже сканер записывает новый появившийся адрес

OneWire - баг или фича?

Добавлено: 18.08.2017{, 07:22}
kosmas
support писал(а):А как сделать хорошо? Вот смотрите- просканировали шину, получили кучу адресов
... посмотрели в массив - ага, вот этого датчика нет, этот новый, а эти на месте.

Не?

OneWire - баг или фича?

Добавлено: 18.08.2017{, 08:16}
pan
посмотрели в массив - ага, вот этого датчика нет
 массив изначально пустой.  куда смотреть
kosmas писал(а):этот новый, а эти на месте
на каком месте? может их перенесли в другое место или поменяли местами. 1 теперь будет стоять на месте 5, как это определить, адреса то присутствуют.
kosmas писал(а):Не?
 не.

вот так еще можно бы сделать.
pan писал(а):физически поочереди подключать а уже сканер записывает новый появившийся адрес

OneWire - баг или фича?

Добавлено: 18.08.2017{, 10:15}
rw6cm
kosmas, как вариант можно каждый датчик привязать к своей ячейки в еепром.
На приборке вывести на отдельной шине onewire разъем под датчик. Сделать эту линию с авто определением.
Поставили в разъем датчик - на дисплее его ID - с меню занесли в нужную ячейку - установили датчик в соответствующее место.
При включении в массивы заносятся данные из своих еепром ячеек, сканирование не нужно, датчики можно менять без пере заливки контроллера.
Да и вся эта канитель с авто опросом "еще та песня". На длинных линиях с кучей датчиков этот процесс очень длительный,
и не всегда с одного раза все это правильно определяется, может быть больше проблем чем пользы.

OneWire - баг или фича?

Добавлено: 18.08.2017{, 20:24}
kosmas
Всем спасибо! Понятно, что руками проще. Тем более что сломать датчик дело непростое, если он дома стоит... Хотя...

OneWire - баг или фича?

Добавлено: 15.12.2017{, 19:00}
Alias
О, вот куда нужно было постить. В прошлый раз, когда видел эту тему, на мысль про EEPROM не обратил внимания, накидал сегодня свое видение. С общего позволения перенесу свой пост сюда:
-----
Так, господа Зубры программирования. Есть серьезный вопрос. Возможно, из
песочницы, но нужен вдумчивый анализ грамотных спецов. Поможете?
Я все про горячую замену датчиков на живой системе, когда я, например, не
смогу просканировать новый датчик взамен вышедшего из строя, а на
пальцах алгоритм не каждому объяснишь. По датчику на шину - не всегда
возможно и не спрашивайте, почему. Все всё понимают.
Суть моего предложения в следующем. См. схему во вложении.
Имеем готовое изделие. При первоначальном запуске база датчиков стерильна.
Подключаем к шине датчики по одному и прописываем в систему, через меню
выбирая назначение, читай - имя. Как только прописали последний, ставим в
шину и работаем, пока один из них не вздумается заменить.
Для замены датчика отключаем шлейф, подключаем лишь один новый и прописываем его по назначению. Ставим его на нужное место, включаем в шлейф.
Все.
Насколько эта модель оправдана с точки зрения ресурсов и можно ли найти более
лаконичное и красивое решение? Я не в смысле кода, типа параллельная или
последовательная запись ячеек по циклу на генераторах и счетчиках - не
суть. А стратегически.

OneWire - баг или фича?

Добавлено: 23.02.2018{, 00:02}
sherti
Помогите советом.
Надо прдключить на ардуино нано 3 датчика температуры ds18b20 и термопару мах6675.
Определил шину onewire.
3 датчика ds18b20 на одном выходе на 5 так как
Шина onewire дает только выбор 5,6,7 пина.
Проблемма в том как щас термопару мах6675 подключить пин 5 занят, программа flprog не дает сменить пины.

OneWire - баг или фича?

Добавлено: 15.03.2018{, 14:43}
ivanpost
Никто не смог решить вопрос со сканированием шины? Иногда реальнее в программе переназначить датчики, чем в ручную их вводить.
Главное, в блоке почему несколько массивов можно вводить? Значит все таки было задумано?

OneWire - баг или фича?

Добавлено: 15.03.2018{, 19:58}
Alias
Я поступил проще: на мегу2560про просто навесил десять датчиков на десять входов. На каждый вход - по блоку сканирования. На макете откатал схему и пока все устраивает.
В случае, когда вручную вбивать через меню или адреса датчиков или прописывать по назначению уже отсканированные не представляется возможным, это идеальный вариант. При наличии достаточных входов, разумеется.
У меня был опыт, когда по телефону даже в простом случае невозможно решить проблему, поэтому чем проще для пользователя, тем лучше