ds [Dev]

Инструменты пользователя

Инструменты сайта


ds

Это старая версия документа!


DS18B20 Modbus controller

Контроллер для опроса 8 датчиков DS18B20 по протоколу Modbus RTU. Каждый датчик подключается к отдельному порту, а не к общей шине, что имеет ряд плюсов:

  • Более быстрый обмен данными
  • Не требуется настройка (не нужно указывать уникальные идентификаторы)
  • Зависание одного датчика не мешает опросу остальных

Кроме этого в контроллере предусмотрено управление питанием каждого из датчиков (удаленная перезагрузка в случае зависания) и два релейных выхода (ток до 3 ампер).

Карта регистров

  • Данные типа bool с правами «только чтение»: Discrete Inputs. Функция чтения: 0x02.
  • Данные типа bool с правами «чтение и запись»: Coils. Функция чтения: 0x01. Функции записи: 0x05, 0x0F.
  • Данные типов uint16_t, int16_t, float с правами «только чтение»: Input Registers. Функция чтения: 0x04.
  • Данные типов uint16_t, int16_t, float с правами «чтение и запись»: Holding Registers. Функция чтения: 0x03. Функции записи: 0x06, 0x10.

Датчики температуры

Измерения

Вход Значение Тип данных Режим Регистр Комментарий
1 Текущее значение int16_t R 0
float R 16
Фильтрованное значение int16_t R 8 Среднее арифметическое по 16 последним измерениям
float R 32
Наличие датчика bool R 0
Ошибка CRC bool R 1 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 2 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 0 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 8
ID датчика String(12) R 48
2 Текущее значение int16_t R 1
float R 18
Фильтрованное значение int16_t R 9 Среднее арифметическое по 16 последним измерениям
float R 34
Наличие датчика bool R 3
Ошибка CRC bool R 4 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 5 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 1 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 9
ID датчика String(12) R 54
3 Текущее значение int16_t R 2
float R 20
Фильтрованное значение int16_t R 10 Среднее арифметическое по 16 последним измерениям
float R 36
Наличие датчика bool R 6
Ошибка CRC bool R 7 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 8 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 2 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 10
ID датчика String(12) R 60
4 Текущее значение int16_t R 3
float R 22
Фильтрованное значение int16_t R 11 Среднее арифметическое по 16 последним измерениям
float R 38
Наличие датчика bool R 9
Ошибка CRC bool R 10 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 11 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 3 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 11
ID датчика String(12) R 66
5 Текущее значение int16_t R 4
float R 24
Фильтрованное значение int16_t R 12 Среднее арифметическое по 16 последним измерениям
float R 40
Наличие датчика bool R 12
Ошибка CRC bool R 13 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 14 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 4 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 12
ID датчика String(12) R 72
6 Текущее значение int16_t R 5
float R 26
Фильтрованное значение int16_t R 13 Среднее арифметическое по 16 последним измерениям
float R 42
Наличие датчика bool R 15
Ошибка CRC bool R 16 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 17 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 5 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 13
ID датчика String(12) R 78
7 Текущее значение int16_t R 6
float R 28
Фильтрованное значение int16_t R 14 Среднее арифметическое по 16 последним измерениям
float R 44
Наличие датчика bool R 18
Ошибка CRC bool R 19 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 20 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 6 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 14
ID датчика String(12) R 84
8 Текущее значение int16_t R 7
float R 30
Фильтрованное значение int16_t R 15 Среднее арифметическое по 16 последним измерениям
float R 46
Наличие датчика bool R 21
Ошибка CRC bool R 22 После нескольких ошибок датчик будет перезагружен по питанию
Архив фильтрации заполнен bool R 23 Архив содержит 16 значений измерения. Пока он не заполнен, фильтрованное значение формируется из уменьшенного числа отчетов.
Интервал опроса uint16_t R/W 7 Не менее одной секунды. Применяется сразу, но автоматически не сохраняется.
Калибровочный коэф. int16_t R/W 15
ID датчика String(12) R 90

Калибровка

Так как все датчики немного приверают, есть возможность выровнять их показания. Для этого датчики погружают в жидкость, где показания должны быть примерно равны. Для более точной корректировки можно использовать жидкость, температура кипения которой точно известна. Для этого указывается целевая температура и запускается процесс калибровки. При значении целевой температуры в 0, контроллер установит коэффициенты относительно среднего значения по всем датчикам.

Описание Тип данных Режим Регистр Комментарий
Целевое значение int16_t R/W 16 Значения типа float будет обновлено после записи в этот регистр
Целевое значение float R/W 17 Значения типа int16_t будет обновлено после записи в этот регистр
Выполнить калибровку bool R/W 3 Расчет калибровочных коэф.

Релейные выходы

Выход Значение Тип данных Режим Регистр Комментарий
1 Текущее значение bool R/W 1 Значение регистра соответствует состоянию реле
2 bool R/W 2

Состояние контроллера

Описание Тип данных Режим Регистр Комментарий
Команда на перезагрузку bool R/W 0 Контроллер перезагружается и применяет новые настройки, если те были изменены.
Uptime uint32_t R 96 Количество секунд, которое контроллер включен.
Источник перезагрузки uint16_t R 98 Причина перезагрузки контроллера. Данный регистр содержит несколько флагов: подача питания (бит 1), внешний сигнал (бит 2), защита от низкого напряжения (бит 3), сторожевой таймер (бит 4)

Настройки

Все настройки сохраняются после получения команды на перезагрузку контроллера.

Описание Тип данных Режим Регистр Комментарий
Команда на перезагрузку bool R/W 0 Контроллер перезагружается и применяет новые настройки, если те были изменены.
Адрес uint16_t R/W 19 Адрес устройства в сети (1-xxx)
Режим Modbus uint16_t R/W 20 0 - RTU, 1 - ASCII
Скорость сети uint16_t R/W 21 9600 -
Бит четности uint16_t R/W 21 0 - отсутствует, 1 - ODD, 2 - EVEN
ds.1590382296.txt.gz · Последнее изменение: 2020/05/25 04:51 — walhi