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

Вопрос по блоку сканирование OneWare

Добавлено: 29.10.2016{, 12:00}
Oleg1345140
Добрый день. Ситуация следующая: Добавляю блок сканирование OneWare, в нем создал два массива (два датчика). В самой программе также создал два датчика и указал в настройках в качестве адресов соответствующие массивы. Программа записала адрес одного датчика в оба массива. Я делаю что то не правильно? Прикладываю программу с блоком сканирования и выводом в компаорт значений массивов.

Вопрос по блоку сканирование OneWare

Добавлено: 29.10.2016{, 13:50}
slavas
Так и должно быть, блок не различает датчики. Чтобы их точно привязать нужно создать столько массивов сколько датчиков и привязать их каждый к своему цифровому входу контроллера.

Вопрос по блоку сканирование OneWare

Добавлено: 29.10.2016{, 14:15}
Oleg1345140
slavas писал(а):Так и должно быть, блок не различает датчики. Чтобы их точно привязать нужно создать столько массивов сколько датчиков и привязать их каждый к своему цифровому входу контроллера.
Но данная шина умеет параллельное включение и при помощи инструмента сканировании все датчики определяются верно.

Вопрос по блоку сканирование OneWare

Добавлено: 29.10.2016{, 16:03}
slavas
Вам же в другой ветке всё объяснили, нет возможности просто определить местоположение датчика. Это особенность работы шины.

Добавлено (29.10.2016, 16:03)
---------------------------------------------
Oleg1345140 писал(а):все датчики определяются верно. При следующем сканировании порядок определившихся датчиков изменится и соответственно если вы их уже привязали к месту то они перепутаются.

Вопрос по блоку сканирование OneWare

Добавлено: 29.10.2016{, 20:18}
Oleg1345140
В той ветке уже выяснили что можно научить датчики откликаться запрограммировав в них номера. В текущей ветке пытаюсь разобраться как можно не зная заранее их ром  считать данные в любой последовательности. то есть стоит задача сделать автопоиск датчиков на шине и опрос их. даже блок есть соответствующий, но у меня не удалось заставить его работать правильно.

Вопрос по блоку сканирование OneWare

Добавлено: 30.10.2016{, 22:51}
Lazary
Здравствуйте, да, было бы интересно как сделать авто поиск датчика, к примеру загрузили скетч не зная за ранее адрес датчика при подключении был авто поиск и датчик работал. Скажем все собрано скетч загружен, вдруг датчик вышел из строя скетка нет под рукой, подключаем новый датчик и происходит авто поиск адреса и датчик работает, нет необходимости перезаливать скетч.

Вопрос по блоку сканирование OneWare

Добавлено: 31.10.2016{, 18:17}
eugeneb
Lazary писал(а):Здравствуйте, да, было бы интересно как сделать авто поиск датчика, к примеру загрузили скетч не зная за ранее адрес датчика при подключении был авто поиск и датчик работал. Скажем все собрано скетч загружен, вдруг датчик вышел из строя скетка нет под рукой, подключаем новый датчик и происходит авто поиск адреса и датчик работает, нет необходимости перезаливать скетч.
Когда у вас не более одного датчика на линии - пожалуйста.
Вот и обучающее видео есть:

http://flprog.ru/video/vip/22/video_les ... ie_ds18b20

Нигде не придётся вводить адреса датчиков.

Вопрос по блоку сканирование OneWare

Добавлено: 31.10.2016{, 19:06}
Lazary
eugeneb, Спасибо, єто решит мою задачу.

Вопрос по блоку сканирование OneWare

Добавлено: 01.11.2016{, 16:22}
Oleg1345140
Чисто технически существует возможность поиска всех ромов на линии. И автор флпрог вроде как реализовывал в блоке на сколько я понял, просто блок работает не корректно. надо уточнить у автора и в багрепорт направить.

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 00:54}
eugeneb
Oleg1345140

О, господи!
Вам 500 раз сказали, что это невозможно.. Автор читает адреса. В его массивах адреса.
Просто эти массивы тоже имеют размер 9 байт. Совпадение, однако.

Потом по этим адресам можно прочитать ромы. Автор в своём блоке DS18* читает ром,
но выводит только температуру.

Ваш алгоритм вероятно должен быть такой:
1. сканируете все датчики в шлейфе. получаете 20 адресов.
2. по этим адресам читаете 20 ромов. При этом в ромах (в байтах 2 и 3) должны быть заранее записаны номера датчиков в шлейфе.
3. по этим ромам определяете кто из адресов первый, кто второй, а кто двадцатый в шлейфе. И составляете временную базу данных (таблицу) "номер в шлейфе - адрес".
4. далее, пользуясь этой таблицей вы можете читать температуру с любого датчика в шлейфе,
обращаясь к нему по адресу, но уже зная его номер в шлейфе.

Как-то так.

Не вижу, чем тут могут помочь блоки автора. И там нет ошибок.
Вам всё придётся написать самому.

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 04:56}
Oleg1345140
Собственно этого и хочу добиться от имеющегося блока. Что бы он правильно считал все РОМ и записал их в массивы. Просто этот блок почему то записывает во все массивы одно и тоже значение.

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 08:03}
eugeneb
Да не может он этого сделать! Автор объясняет это прямо в фильме.
Он может это сделать при условии, что на каждом  пине ардуины висит по одному датчику.
Это не ваш случай.

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 16:40}
Oleg1345140
Вот этим скетчем считываю все ромы на шине (все на одном пине), скетч взят из примеров в ИДЕ ардуеновской

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 19:47}
eugeneb
Дк я ж и говорю: "Пишите на ардуинском С"

Потом, может быть, года через два, когда запрограммируете все датчики в полях, перепишете на FLProg

Вопрос по блоку сканирование OneWare

Добавлено: 02.11.2016{, 19:54}
Oleg1345140
Как выяснилось они уже запрограммированы, после праздника считаю что прописано и нужно будет делать нормальное устройство.