|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Оцифровать работу дозатора
Бьюсь над такой проблемкой ..... пока без успеха
Есть несколько тензодатчиков на дозаторах: песок, щебень, вода, добавки и тп. Бетон делаем. Сидит оператор и сыпит компоненты в дозаторы, потом сбрасывает в мешалку (1 куб). Моя софтина предоставляет интерфейс к тензодатчикам. Реализовано все на Lazarus. Кнопки сброса и наполнения дозатора мне не доступны. Мне надо поймать момент наполнения и сброса дозатора. В результате надо положить в базу данных следующие записи. .................. Дозатор 1 +350 Дозатор 2 -423 Дозатор 1 -375 .................. Т.е. нужны данные на заполнение дозатора и его опустошение. Дальше эти данные жует 1Ска. Сейчас данные в 1С вносятся мастером смены. данные с дозаторов (изменения) мне поступают минимум каждые 100мс. Мне надо в потоке, не очень пожирая память формировать записи в БД. Все нынешние попытки сводяться к записям такого вида Дозатор 1 +232 Дозатор 1 +17 Дозатор 1 +120 Дозатор 1 -56 Дозатор 1 -380 Т.е. момент когда уже насылось и когда уже ссыпалось не могу поймать алгоритмически. Понимаю, что есть какой-то подход к подобным задачам, но даже гугл молчит. Кто решал подобное, укажите вектор куда думать. Нюансы: Заполнять могут не от нуля, т.е. в дозаторе уже что-то было (например с предыдущего отвеса осталось, т.к. пересыпали) или прилипло что-то внутри. Ссыпать тоже могут не до нуля, и даже до минуса (например если отлипло что-то и свалилось в мешалку). Дозаторы дрыгаются, они не сразу встают, немного качаются. Разные конструкции (для сыпучих, жидкости и тп) ведут себя по разному. Не хотелось бы вводит разные поправки на конкретный дозатор. Даже в полном покое +-2 кг это запросто пляшет на выходе. |
#2
|
||||
|
||||
Все ниженаписанное предполагает что с дозатора получаем текущее значение массы продукта (песок/щебень/т.д.)
Раздели задачи: 1. Получение сырых данных с датчика. 2. Обработка полученных данных. 3. Запись полученных данных в БД. Вот получили 3 потока на каждый датчик. 1. Тут основная задача успеть получить все данные и поставить их в очередь на обработку. 100 мс - не так уж и мало, думаю тут проблемы не будет. 2. Обрабатываем очередь. Самый простой алгоритм (если я правильно понял): при изменении вектора направления изменяется процесс. Точка изменения вектора становится узловой. Т.е. если каждое последующее число в очереди меньше предыдущего - дозатор опустошается, если каждое последующее число больше предыдущего - дозатор наполняется. Числа уменьшались, а затем стали увеличиваться - изменился вектор (дозатор перестал опустошаться и стал наполнятся), появилась узловая точка - нужно взять предыдущую узловую точку и в соответствии с вектором рассчитать расход продукта. Рассчитанный расход поставить в очередь на запись в БД. 3. Ну тут самое простое - записываем в БД данные из очереди. Как-то так. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. Последний раз редактировалось Aristarh Dark, 21.05.2015 в 08:32. |
#3
|
||||
|
||||
Забавная темка. Даже не знаю зачем, но вот типа визуализатор сего процесса.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
Цитата:
Поект37 и Форма32 - эта пять Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |