1

Тема: Работа с несколькими датчиками 1wire

Я хочу подключить к контроллеру Canny 7 несколько датчиков температуры 1-Wire.
Но не последовательно, а каждый датчик на свой канал.
Но параметр "Регистр номера канала Dallas" я могу использовать только один раз.
Если я использую, к примеру, 4 раза то выскакивает ошибка.

В описании драйвера написано:
==========================================================
Используя динамическое переключение между шинами 1-Wire, подключенными к разным
каналам контроллера, в процессе выполнения функциональной диаграммы, необходимо
деактивировать драйвер (записать в регистр конфигурации Dallas значение 0), указать
номер канала контроллера, подключенного к следующей шине 1-Wire и снова активировать
драйвер (записать в регистр его конфигурации значение соответствующей константы).
==========================================================

Если я правильно понимаю, в этом случае датчики нужно опрашивать последовательно.
Есть ли пример такого применения? Я сходу на форуме не нашёл.

2

Re: Работа с несколькими датчиками 1wire

На форуме такого примера непосредственно для CANNY 7 нет, но есть для других контроллеров, например:
https://forum.canny.ru/viewtopic.php?id=352
https://forum.canny.ru/viewtopic.php?id=290
Алгоритм из приведенных примеров может быть перенесен и адаптирован для CANNY 7.
Принцип подключения датчика к каналам контроллера можно посмотреть здесь:
https://forum.canny.ru/viewtopic.php?id=26

3

Re: Работа с несколькими датчиками 1wire

Спасибо! Разобрался. Получилось считать 4 датчика на 4 каналах.
Но дальше такая проблема.
В драйвере есть отдельно дробная и целая часть. К тому же значение температуры может быть и отрицательным.
Я могу использовать целую часть для пересылки на панель управления. И уставка у меня задается целым числом. Но в самой программе желательно оперировать числом с плавающей точкей.
Если правильно понимаю, аналога переменной float здесь нету.
Возможен ли такой выход из ситуации:
Например, значение температуры 25,7 я могу представить как 257?
Полученную уставку тоже умножать на 10. И в итоге сравнивать (к примеру) 400 и 257?.
Можно также прибавить (к примеру) 40, дабы уйти от отрицательного значения.

Или есть более рациональное решение?

4

Re: Работа с несколькими датчиками 1wire

arctic пишет:

...Возможен ли такой выход из ситуации:
Например, значение температуры 25,7 я могу представить как 257?
Полученную уставку тоже умножать на 10. И в итоге сравнивать (к примеру) 400 и 257?.
Можно также прибавить (к примеру) 40, дабы уйти от отрицательного значения...

Пожалуй, это наиболее рациональный подход. Главное чтобы измеренное значение температуры и уставка были приведены к одной системе (одинаковой разрядности и смещению нуля, для ухода от отрицательных значений).

5

Re: Работа с несколькими датчиками 1wire

Я это уже понял. Но как именно это сделать?
Можно какой-нибудь пример?

6

Re: Работа с несколькими датчиками 1wire

Можно, например, так (см.вложение).

Вложений в сообщении

Иконка вложения c72duo_termodata_convert.cfd 2.14 кб, скачивался 105 раз, последний раз 2022-06-20