Показать сообщение отдельно
  #1  
Старый 20.05.2015, 21:28
pndr pndr вне форума
Прохожий
 
Регистрация: 20.05.2015
Сообщения: 1
Версия Delphi: Lazarus
Репутация: 10
По умолчанию Оцифровать работу дозатора

Бьюсь над такой проблемкой ..... пока без успеха

Есть несколько тензодатчиков на дозаторах: песок, щебень, вода, добавки и тп. Бетон делаем.

Сидит оператор и сыпит компоненты в дозаторы, потом сбрасывает в мешалку (1 куб).

Моя софтина предоставляет интерфейс к тензодатчикам. Реализовано все на Lazarus. Кнопки сброса и наполнения дозатора мне не доступны.

Мне надо поймать момент наполнения и сброса дозатора. В результате надо положить в базу данных следующие записи.

..................
Дозатор 1 +350
Дозатор 2 -423
Дозатор 1 -375
..................

Т.е. нужны данные на заполнение дозатора и его опустошение. Дальше эти данные жует 1Ска. Сейчас данные в 1С вносятся мастером смены.

данные с дозаторов (изменения) мне поступают минимум каждые 100мс. Мне надо в потоке, не очень пожирая память формировать записи в БД. Все нынешние попытки сводяться к записям такого вида


Дозатор 1 +232
Дозатор 1 +17
Дозатор 1 +120
Дозатор 1 -56
Дозатор 1 -380

Т.е. момент когда уже насылось и когда уже ссыпалось не могу поймать алгоритмически. Понимаю, что есть какой-то подход к подобным задачам, но даже гугл молчит.

Кто решал подобное, укажите вектор куда думать.

Нюансы:

Заполнять могут не от нуля, т.е. в дозаторе уже что-то было (например с предыдущего отвеса осталось, т.к. пересыпали) или прилипло что-то внутри.

Ссыпать тоже могут не до нуля, и даже до минуса (например если отлипло что-то и свалилось в мешалку).

Дозаторы дрыгаются, они не сразу встают, немного качаются. Разные конструкции (для сыпучих, жидкости и тп) ведут себя по разному. Не хотелось бы вводит разные поправки на конкретный дозатор. Даже в полном покое +-2 кг это запросто пляшет на выходе.
Ответить с цитированием