Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
ds [2020/03/28 13:23] walhi создано |
ds [2024/07/25 11:50] (текущий) walhi |
||
---|---|---|---|
Строка 9: | Строка 9: | ||
+ | ===== Карта регистров ===== | ||
+ | * Данные типа bool с правами " | ||
+ | * Данные типа bool с правами " | ||
+ | * Данные типов uint16_t, int16_t, float с правами " | ||
+ | * Данные типов uint16_t, int16_t, float с правами " | ||
+ | ==== Датчики температуры ==== | ||
+ | === Измерения === | ||
+ | ^ Вход ^ Значение ^ Тип данных ^ Режим ^ Регистр ^ Комментарий ^ | ||
+ | | 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 | | ||
+ | | Датчик в памяти контроллера | uint16_t | R | 104 | | ||
+ | |||
+ | === Интервал опроса === | ||
+ | |||
+ | Для каждого датчика можно указать интервал опроса. Это время в секундах, | ||
+ | |||
+ | === Калибровка === | ||
+ | |||
+ | Так как все датчики немного приверают, | ||
+ | |||
+ | |||
+ | ^ Описание ^ Тип данных ^ Режим ^ Регистр ^ Комментарий ^ | ||
+ | | Целевое значение | int16_t | R/W | 16 | Значения типа float будет обновлено после записи в этот регистр | | ||
+ | | Целевое значение | float | R/W | 17 | Значения типа int16_t будет обновлено после записи в этот регистр | | ||
+ | | Количество датчиков в памяти | uint8_t | R | 103 | Максимальное количество - 120 | | ||
+ | | Выполнить калибровку | bool | R/W | 3 | Расчет калибровочных коэф. для всех датчиков и сохранение их. Требует ввод кода подтверждения (защита от случайного срабатывания). Для выравнивания по фильтрованному значению: | ||
+ | | Очистить калибровку | bool | R/W | 4 | Очистка данных калибровки (всех). Требует ввод кода подтверждения 4420 (защита от случайного срабатывания) | | ||
+ | | Количество датчиков в памяти | uint16_t | R | 103 | | | ||
+ | | Код подтверждения | uint16_t | R/W | 24 | | | ||
+ | |||
+ | Сохранение калибровочных данных осуществляется именно для датчика, | ||
+ | Каждый датчик имеет уникальный идентификатор. Контроллер может хранить до 120 штук. Как только количество известных датчиков достигнет этого числа - сохранение новых датчиков будет недоступно. Для очистки памяти есть отдельная команда. | ||
+ | |||
+ | Калибровка возможна и вручную. Для каждого подключенного к устройству датчика есть специальный регистр. В нем можно получить текущее значение калибровочного коэффициента и изменить его. Подробнее про сохранение настроек контроллера в разделе " | ||
+ | |||
+ | ==== Релейные выходы ==== | ||
+ | ^ Выход ^ Значение ^ Тип данных ^ Режим ^ Регистр ^ Комментарий ^ | ||
+ | | 1 | Текущее значение | bool | R/W | 1 | Значение регистра соответствует состоянию реле| | ||
+ | | 2 | ::: | bool | R/W | 2 | ::: | | ||
+ | |||
+ | ==== Состояние контроллера ==== | ||
+ | ^ Описание ^ Тип данных ^ Режим ^ Регистр ^ Комментарий ^ | ||
+ | | Команда на перезагрузку | bool | R/W | 0 | Контроллер перезагружается. | | ||
+ | | Uptime | uint32_t | R | 99 | Количество секунд, | ||
+ | | Источник перезагрузки | uint16_t | R | 101 | Причина перезагрузки контроллера. Данный регистр содержит несколько флагов: | ||
+ | |||
+ | ==== Настройки ==== | ||
+ | Все настройки сохраняются после ввода кода подтверждения и получения команды на перезагрузку контроллера. | ||
+ | |||
+ | ^ Описание ^ Тип данных ^ Режим ^ Регистр ^ Комментарий ^ | ||
+ | | Команда на перезагрузку | bool | R/W | 0 | Контроллер перезагружается и применяет новые настройки, | ||
+ | | Адрес | uint16_t | R/W | 19 | Адрес устройства в сети (1-xxx) | | ||
+ | | Режим Modbus | uint16_t | R/W | 20 | 0 - RTU, 1 - ASCII | | ||
+ | | Скорость сети | uint32_t | R/W | 21 | 9600 - 38400 | | ||
+ | | Бит четности | uint16_t | R/W | 23 | 0 - отсутствует, | ||
+ | | Код подтверждения | uint16_t | R/W | 24 | 4386 - сохранение настроек (сеть, калибровка, | ||
+ | |||
+ | На плате контроллера присутствует контактная группа, | ||
+ | |||
+ | ==== Файлы для загрузки ==== | ||
+ | Исходный код проекта: | ||
+ | Исходный код библиотеки freemodbus нужно положить рядом с папкой проекта. При необходимости поправить Makefile. |