Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вычисление стабилизации
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
ILYAUL
Всем, добрый день!
помогите придумать алгоритм вычисления стабильности веса , т.е когда вес стабилен.

Имеются весы (пром. произв.) ,которые в непрерывном режиме по RS232 передают вес груза в ASCI I. Вес груза определяется с точностью до сотых с шагом +/- 50 Например 7.85 , 7.9 , 7.95.
Выдавать на печать груз можно до десятых . Сначала думал просто складывать байты веса исключая служебную информацию и убирая 0x30 , накапливать и принимать решение , но это не прокатывает.
Есть ещё мысли , но как-то они мне пока самому не нравятся. Скорость передачи 1200 , поэтому подсчёты можно делать "влёт" , а не вытягивая данные из буфера.
Help , please.
kovigor
Цитата(ILYAUL @ Mar 10 2012, 14:56) *
Выдавать на печать груз можно до десятых .


Можно или нужно ? Если первое, то выдавайте то, что есть, с двумя знаками. Уверен, что внутри весов их показания уже усреднены, отфильтрованы и выдаются именно в том виде, в каком следует. А если второе, то возьмите справочник Бронштейна и Семендяева и посмотрите, как производится округление чисел ...
Tanya
Цитата(ILYAUL @ Mar 10 2012, 14:56) *
Всем, добрый день!

Абсолютно непонятно, что Вы хотите, и как все это связано с АВР и ПИКами.
_Pasha
Цитата(ILYAUL @ Mar 10 2012, 14:56) *
Всем, добрый день!
помогите придумать алгоритм вычисления стабильности веса , т.е когда вес стабилен.

Насколько я понял, там нужен FUZZY LOGIC иначе(если проще) -долго.
ILYAUL
Цитата(kovigor @ Mar 10 2012, 15:45) *
Если первое, то выдавайте то, что есть, с двумя знаками. Уверен, что внутри весов их показания уже усреднены, отфильтрованы и

Нет - идут напрямую с АЦП - в RS232 , для своего индикатора может и фильтруются.

Цитата
Можно или нужно ?


Это до конца не решено - но это выдеенного яйца не стоит, в порядке решения и округления.


Цитата
Абсолютно непонятно, что Вы хотите, и как все это связано с АВР и ПИКами.

Нужно понять когда в непрерывном потоке выдаваемых цифр идёт истинный вес груза т.е. датчики весов стабильны и вес соответствует истинному.
Протокол весов , если его таким можно назвать, нужно было преобразовать под протокол промышленного принтера , что благополучнои сделано на Mega 128. Сейчас , на других весах , стоит человек и тупо жмёт кнопку , когда считает что вес стабилен. Это не наш метод . Поэтому , человека принято решение - исключить.
demiurg_spb
прогонять через фильтр и одновременно сравнивать вход и выход фильтра в течение N секунд. И как только ни одно (или иной критерий) измерение не выбилось за заданную наперёд дельту считаем переходный процесс законченным.
Tanya
Цитата(demiurg_spb @ Mar 10 2012, 18:07) *
прогонять через фильтр и одновременно сравнивать вход и выход фильтра в течение N секунд. И как только ни одно (или иной критерий) измерение не выбилось за заданную наперёд дельту считаем переходный процесс законченным.

Или по производной. Или исследовать кривую вес - время. Подобрать аппроксимацию. Тогда можно предсказывать вес. Даже.
Автор не сказал, меняется ли реальный вес того, что взвешивается.
ILYAUL
Цитата(Tanya @ Mar 10 2012, 18:26) *
Или по производной. Или исследовать кривую вес - время. Подобрать аппроксимацию. Тогда можно предсказывать вес. Даже.
Автор не сказал, меняется ли реальный вес того, что взвешивается.

Нет, взвешиваются готовые изделия , разных объёмов. От 1 до 300кг, вес может гулять до полкило. 250 грам в плюс и в минус на 300 кг.
Я пробывал просумировать все цифры веса в одной посылке (8 байт со служебной)-запомнить сумму , проссумировать следующую , если равно прибавить счётчик равенства, нет сбросить счётчик , запомнить текущую и т.д пока счётчик не достигнет заданной величины. Но пресловутые 0.05 естесвенно сильно меняют сумму , если даже счётчик совпадений практически стремится к своему значению. Достаточно одного изменения погрешности весов и всё начинается сначала
demiurg_spb
Цитата(ILYAUL @ Mar 10 2012, 18:34) *
если равно прибавить счётчик равенства, нет сбросить счётчик
Нужно ввести дельту хотя бы, а не жёстко сравнивать.
Tanya
Цитата(demiurg_spb @ Mar 11 2012, 08:37) *
Нужно ввести дельту хотя бы, а не жёстко сравнивать.

Вы что-то понимаете, или только догадываетесь?
Я вот не в силах понять тексты автора.
Палыч
Цитата(Tanya @ Mar 11 2012, 08:58) *
Я вот не в силах понять тексты автора.

Вероятно, ТС хотел сказать следующее:
Имеются весы непрерывно передающие измеренное значение на некий печатающий прибор. На весы ставят измеряемый груз. Показания весов начинают изменяться (вероятно, не только от того, что появился на весах груз, но ещё и от колебательных процессов в механизме весов). Через некоторое время показания весов "успокаиваются" (в терминалогии ТС): может быть и изменяются от показания к показанию, но на величину не более чем погрешность измерения веса - 0.05 кг. За окончанием переходного процесса измерения следит человек. Как только весы "успокаиваются", человек нажимает кнопку - устройство печатает вес изделия. ТС желает автоматизировать процесс измерения - убрать человека, нажимающего кнопку.

Если я правильно понял ТС, то алгоритм определения окончания переходного процесса следующий: величины измерения, выдаваемые весами за интервал времени Т лежат в диапазоне D-0.05 ... D+0.05 (т.е. между максимумом и минимумом показаний за интервал времени Т - величина не более 2 * 0.05 = 0.10 кг). Величина времени Т выбирается из значения частоты переходного процесса и периода измерений весов. Вот только, не понятно: если убрать человека, то как устройство узнает, что на чаше весов поставлен измеряемый груз?
ILYAUL
Цитата(Палыч @ Mar 11 2012, 11:33) *

biggrin.gif a14.gif Только совсем человека не уберешь. кто-то должен ставить и снимать груз.
Весы стоят на вращающейся платформе - отсюда и лезет постоянная погрешность 0,05 грамм. Вроде всё и плавно , но если платформа не вращается-погрешность проявляется раз в несколько минут.
Цитата(Палыч @ Mar 11 2012, 11:33) *
Как устройство узнает, что на чаше весов поставлен измеряемый груз?

Ноль , они тоже передают в линию.
Tanya
Цитата(Палыч @ Mar 11 2012, 11:33) *
Вероятно, ТС хотел сказать следующее:

Сыграем в угадайку, телепаты!
Тогда нужно следить за дрейфом. Когда показания начинают резко изменяться - значит груз поменяли. Следим за весами. Когда показания начинают хорошо описываться формулой - дрейф + X(1-exp(-t/tau), находим X. Дрейф - константа(временная)*время.

Цитата(ILYAUL @ Mar 11 2012, 12:35) *
Ноль , они тоже передают в линию.

А как это можно понять?
Вы уж соберите мысли в кулак...
RabidRabbit
Странные весы, в тех, с которыми имел дело я (производства CAS), в той же ASCII посылке с весом присутствовал и признак "стабильного веса", а также признак "нуля".
ILYAUL
Цитата(RabidRabbit @ Mar 11 2012, 14:19) *
Странные весы, в тех, с которыми имел дело я (производства CAS), в той же ASCII посылке с весом присутствовал и признак "стабильного веса", а также признак "нуля".

Есть в их линейке весов и такие , со всеми признаками. Но заказчик выбрал эти ,в котором весь протокол состоит из 8 байт. Это по описанию протокола , что был выслан по моей просьбе. И шлют они поток ,по 8 байт, непрерывно , что есть груз , что нет его на весах . Нет груза идут одни 3D 30 30 30 30 2Е 30...3D...., есть - значит например 3D 30 30 37 2Е 38 35... Из принципа , что вижу то и пою.
Так , что ноль отлавливается легко. Достаточно повторения 30-ток подряд до 2Е + накопление результата. И 0,05 - не влияет. С ним вся петрушка , когда он начинает скакать в передаваемом весе.
RabidRabbit
Я бы ушёл от рассмотрения отдельных байтов, а разглядывал передаваемые значения веса. Например, если в окне (например, длительностью 2 секунды) максимальное абсолютное значение отклонения от среднего не превышает некоего заданного порога (для примера, 0.05) - значит вес стабилен. Хотя, такое здесь уже предлагали sm.gif
kolobok0
Цитата(ILYAUL @ Mar 11 2012, 15:19) *
...С ним вся петрушка , когда он начинает скакать в передаваемом весе.


если вы дойдёте до любого магазина поблизости и внимательно приглядитесь к весам с термопечатью, типа LP15 то увидите то, что вам требуется реализовать. т.е. они так же ждут успокоения и только потом выдают результат в виде клейкой этикетки.

я так понимаю вам нужно мерять дэльту веса в некой дэльте времени. если константа - то это и есть истина. параметры придёться выбирать из условий работы и аппаратуры.

удачи вам
(круглый)
ILYAUL
Цитата(kolobok0 @ Mar 11 2012, 17:23) *
если вы дойдёте до любого магазина поблизости и внимательно приглядитесь к весам с термопечатью, типа LP15 то увидите то, что вам требуется реализовать. т.е. они так же ждут успокоения и только потом выдают результат в виде клейкой этикетки.
удачи вам
(круглый)


Спасибо! Мне бы эти весы увидеть. А то они там , а я здесь. Предложил им на платформу весов положить плиту кило так на цать (ять) , выставить нуль и посмотреть как себя ведут весы . После этого пока молчат.
mihalevski
Цитата(ILYAUL @ Mar 10 2012, 17:56) *
Всем, добрый день!
помогите придумать алгоритм вычисления стабильности веса , т.е когда вес стабилен.

Имеются весы (пром. произв.) ,которые в непрерывном режиме по RS232 передают вес груза в ASCI I. Вес груза определяется с точностью до сотых с шагом +/- 50 Например 7.85 , 7.9 , 7.95.
Выдавать на печать груз можно до десятых . Сначала думал просто складывать байты веса исключая служебную информацию и убирая 0x30 , накапливать и принимать решение , но это не прокатывает.
Есть ещё мысли , но как-то они мне пока самому не нравятся. Скорость передачи 1200 , поэтому подсчёты можно делать "влёт" , а не вытягивая данные из буфера.
Help , please.


Может быть запустить процесс непрерывного анализа данных о весе груза. 1. Из принятых N данных берете N1 показаний (N1<N) и вычисляете среднее арифметическое Мср, что равносильно фильтрации и получаете предполагаемый вес груза. Далее по известной формуле (есть в любм учебнике по метрологии) вычиляете "Стандартное отклонение среднего арифметического" Соткл для этих N1 значений. Вычесленное "Стандартное отклонение среднего арифметического" Соткл определяет доверительный интервал, показывающий с вероятностью 67% что точное значение веса находится в границах: Мср +/- Соткл. Для пределения доверительного интервала сответствующего, допустим 95% точности необходио величину "Стандартное отклонение среднего арифметического" Соткл умножить на коэффициет Стьюдента Тст, который для 24 измерений равен Тст=2,4. Отсюда понятна идея: Выбираеш такое количество измерений N1 для которого коэффициетом Стьюдента Тст будет гарантирована приемлемая достоверность. Вычисляешь Мср и величину +/- Соткл*Тст. Если величина +/- Соткл*Тст не превышает заданной погрешности (доли от Мср или абсолютного значения) то значит вес измерен и равен Мср. В противном случае необходимо продолжать слежение - отбрасываете в наборе N1 часть старых значение и дополняете новыми и опять расчитываете и так до победы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.