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

Для использования с контроллерами или SCADA системами, у которых количество опрашиваемых регистров ограничено, введены дополнительные регистры, которые объединяют статусы всех каналов в один регистр. Номер бита в регистре соответствует номеру канала.

Значение Тип данных Режим Регистр
Наличие датчика uint16_t R 96
Ошибка CRC uint16_t R 97
Архив фильтрации заполнен uint16_t R 98

Калибровка

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

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

Сохранение калибровочных данных осуществляется именно для датчика, а не конкретного входа. Так что при переключении датчика в другой вход данные о калибровке автоматически будут подгружены из памяти. Каждый датчик имеет уникальный идентификатор. Контроллер может хранить до 120 штук. Как только количество известных датчиков достигнет этого числа - сохранение новых датчиков будет недоступно. Для очистки памяти есть отдельная команда.

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

Выход Значение Тип данных Режим Регистр Комментарий
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 - 38400
Бит четности uint16_t R/W 21 0 - отсутствует, 1 - ODD, 2 - EVEN

На плате контроллера присутствует контактная группа, обозначенная как defalut, при замыкании которой сетевые настройки контроллера будут временно установлены в значения по умолчанию для просмотра настроек или же дальнейшей конфигурации устройства. Замыкать контакты нужно при поданном питании в любое время (не обязательно при включении). Контроллер автоматически перезагружается при отсутствии опроса через Modbus в течение 60 секунд, так что пользователь должен успеть за этот интервал установить соединение с устройством.

ds.1591894191.txt.gz · Последнее изменение: 2020/06/11 16:49 — walhi