Переполнение счётчика воды в удалённой телеметрии
Схему можно прокрутить по горизонтали или открыть отдельно.
Уменьшившееся накопленное число не всегда означает сброс. Счётчик мог перейти через свой предел, прибор могли заменить либо данные прочитаны неверно. Сервер должен различать эти случаи на основании документации и контекста, а не автоматически прибавлять максимальное значение при любом уменьшении.
Уточнить представление
Запишите разрядность, знаковость, единицы и правила поведения по достижении предела. Некоторые устройства продолжают с начала диапазона, другие останавливаются или выдают диагностическое состояние. Универсальный алгоритм для всех счётчиков назначать нельзя.
Для Modbus тип числа и порядок слов определяются картой прибора, а не одним названием протокола. Modbus Organization — Application Protocol Specification V1.1b3 Сначала проверьте декодирование на известных значениях и способ согласованного чтения многословного счёта. Ошибку формата нельзя исправлять логикой переполнения.
Определить условия расчёта разности
Если документация подтверждает циклический счёт по модулю M и за интервал возможен не более одного перехода, разность можно рассчитывать с учётом этого модуля. Условный пример: после 98 получено 3 при модуле 100; при подтверждённом единственном переходе прирост равен 5. Это учебная арифметика, не характеристика расходомера.
При слишком редком опросе или длинном обрыве переходов может быть несколько. Два снимка тогда не определяют полный прирост однозначно. Требуется другой источник непрерывности, более широкий локальный счёт или иная архитектура хранения по проекту.
Разделить переполнение и сброс
Сохраняйте доступные признаки загрузки, сброса, серийного номера и изменения конфигурации. Плановый сброс должен иметь событие и начальную отметку. Замена прибора создаёт новый контекст счёта, даже если имя точки на экране осталось прежним.
Если контекст неизвестен, отмечайте неопределённость итогового расхода. Автоматическое предположение о переполнении может дать большое ложное значение, а предположение о нулевом приросте — скрыть реальный объём. Выбор требуют подтверждённые исходные данные.
Проверить алгоритм до эксплуатации
На тестовых последовательностях воспроизведите обычный рост, переход через предел, повтор пакета, перестановку записей, сброс и замену устройства. Проверьте также длительный пропуск данных с несколькими возможными переходами. Для каждого сценария заранее определите ожидаемый результат или признак неопределённости.
Сохраните алгоритм с версией и контрольными примерами. Если его меняют, исходные снимки не переписывают: они нужны для объяснения пересчитанного результата. Техническая обработка счётчика должна сохранять происхождение данных и ограничения, не создавая видимость точного расхода там, где история наблюдений неоднозначна.
Запросы отправляются на наш e-mail из вашей почтовой программы.