Оцифровать работу дозатора
Бьюсь над такой проблемкой ..... пока без успеха
Есть несколько тензодатчиков на дозаторах: песок, щебень, вода, добавки и тп. Бетон делаем.
Сидит оператор и сыпит компоненты в дозаторы, потом сбрасывает в мешалку (1 куб).
Моя софтина предоставляет интерфейс к тензодатчикам. Реализовано все на Lazarus. Кнопки сброса и наполнения дозатора мне не доступны.
Мне надо поймать момент наполнения и сброса дозатора. В результате надо положить в базу данных следующие записи.
..................
Дозатор 1 +350
Дозатор 2 -423
Дозатор 1 -375
..................
Т.е. нужны данные на заполнение дозатора и его опустошение. Дальше эти данные жует 1Ска. Сейчас данные в 1С вносятся мастером смены.
данные с дозаторов (изменения) мне поступают минимум каждые 100мс. Мне надо в потоке, не очень пожирая память формировать записи в БД. Все нынешние попытки сводяться к записям такого вида
Дозатор 1 +232
Дозатор 1 +17
Дозатор 1 +120
Дозатор 1 -56
Дозатор 1 -380
Т.е. момент когда уже насылось и когда уже ссыпалось не могу поймать алгоритмически. Понимаю, что есть какой-то подход к подобным задачам, но даже гугл молчит.
Кто решал подобное, укажите вектор куда думать.
Нюансы:
Заполнять могут не от нуля, т.е. в дозаторе уже что-то было (например с предыдущего отвеса осталось, т.к. пересыпали) или прилипло что-то внутри.
Ссыпать тоже могут не до нуля, и даже до минуса (например если отлипло что-то и свалилось в мешалку).
Дозаторы дрыгаются, они не сразу встают, немного качаются. Разные конструкции (для сыпучих, жидкости и тп) ведут себя по разному. Не хотелось бы вводит разные поправки на конкретный дозатор. Даже в полном покое +-2 кг это запросто пляшет на выходе.
|