-
- не в тему конечно! чем так привлекательно использование чисел с
плавающей точкой ?? я обычно привожу к *10К.... 10М, все удобно и с
минимальными затратами на вычисление - Aleksey_75(25.10.2021 14:24)
- Я тоже, но сейчас попробовал калибровку измериловки через плавающую
точку по методике заказчика и то, что правильно описано, работает.
А что неправильно - не будет работать и с целыми. - VLLV(25.10.2021 16:10)
- точность какая нужна ? откуда получаете ?? - Aleksey_75(25.10.2021 16:16)
- В том то и дело, точность разная, от измерения батарейки 1%, света
0,5% до измерения температуры с разрешением 0.01 градуса через
сигма-дельта 24, а механизм одинаковый. Имеется команда чтения
результатов без обработки (фактически значений АЦП) и записи
калибровочных коэффициентов, все во float. Не нужно думать о
диапазонах, вычитал при одних условиях, вычитал при других,
посчитал коэффициенты, записал - и все готово. - VLLV(25.10.2021 17:06)
- бррр... ну вот представим... ацп вам дает результат в int? по факту
в микровольтах? не ? ну и считайте как есть - Aleksey_75(25.10.2021 17:12)
- По факту в попугаях, чтобы перевести в микровольты, нужен целочисленный коэффициент + дополнительная константа, тобы вогнать в целочисленный диапазон без ухудшения разрешения, и эта константа своя для каждой величины. Так вот с float этой константы нет. - VLLV(25.10.2021 17:15)
- Что может посоветовать человек, не поставивший прививку? :-) - SciFi(25.10.2021 17:13)
- фашизм??? доставайте свой циркуль, будем мою голову измерять))) - Aleksey_75(25.10.2021 17:25)
- Зачем её измерять? Ты и так все данные выдаёшь, не утаивая :-) - SciFi(25.10.2021 17:33)
- прикинь! вот такой я честный! не забудь записать ))) - Aleksey_75(25.10.2021 17:38)
- Зачем её измерять? Ты и так все данные выдаёшь, не утаивая :-) - SciFi(25.10.2021 17:33)
- т.е. не понимающий очевидных вещей? :) - VLLV(25.10.2021 17:15)
- да куда мне до вас, ведь если число с точкой умножить на 10м точка
сохранится - Aleksey_75(25.10.2021 17:27)
- Тут уже я не догоняю. Я же не только привился, я еще и переболел. - VLLV(25.10.2021 17:45)
- да куда мне до вас, ведь если число с точкой умножить на 10м точка
сохранится - Aleksey_75(25.10.2021 17:27)
- фашизм??? доставайте свой циркуль, будем мою голову измерять))) - Aleksey_75(25.10.2021 17:25)
- бррр... ну вот представим... ацп вам дает результат в int? по факту
в микровольтах? не ? ну и считайте как есть - Aleksey_75(25.10.2021 17:12)
- В том то и дело, точность разная, от измерения батарейки 1%, света
0,5% до измерения температуры с разрешением 0.01 градуса через
сигма-дельта 24, а механизм одинаковый. Имеется команда чтения
результатов без обработки (фактически значений АЦП) и записи
калибровочных коэффициентов, все во float. Не нужно думать о
диапазонах, вычитал при одних условиях, вычитал при других,
посчитал коэффициенты, записал - и все готово. - VLLV(25.10.2021 17:06)
- точность какая нужна ? откуда получаете ?? - Aleksey_75(25.10.2021 16:16)
- Квадратный корень тоже с фиксированной точкой? - Cкpипaч(25.10.2021 14:56)
- скока точности нужно ?? - Aleksey_75(25.10.2021 16:17)
- Я тоже, но сейчас попробовал калибровку измериловки через плавающую
точку по методике заказчика и то, что правильно описано, работает.
А что неправильно - не будет работать и с целыми. - VLLV(25.10.2021 16:10)
- Я исследовал код и написал ПРОГРАММУ на пол странички, правда в одну сторону. misyachniy(1 знак., 25.10.2021 13:03, картинка)
- python, из командной строки. Cкpипaч(46 знак., 23.10.2021 17:44)
- считай онлайн. Mahagam(1 знак., 23.10.2021 13:28, ссылка)
- Кстати, а нужно проверять, что принятый побайтно из протокола float
имеет валидное значение? Как ? Что будет, если не проверить и
начтет считать? VLLV(1 знак., 23.10.2021 16:25, картинка)
- Проверять - это правильно. Я еще и псевдо-БИХ фильтр ставлю. Cкpипaч(207 знак., 23.10.2021 18:40)
- Интересно... А фильтр-то зачем. RxTx(222 знак., 25.10.2021 13:40)
- Я делаю так: Уставка НЕ изменится до тех пор, пока до нее не
дочапает "теневой БИХ-фильтр". Отличие уставки в один градус
отработается мгновенно, а в 100 - через две минуты, позволив
оператору вдоволь этим числом налюбоваться и открутить все взад,
без неожиданного "рывка" в реальном процессе. Cкpипaч(60 знак., 25.10.2021 14:23)
- странно. точно БИХ? ибо там же пофик амплитуда изменения - время
реакции одинаковое должно быть. - Mahagam(25.10.2021 15:07)
- out_sp = (1 - mizer)* out_sp + mizer * new_sp; - Cкpипaч(25.10.2021 15:11)
- так это EWMA фильтр. Mahagam(120 знак., 25.10.2021 15:43, ссылка)
- И да, и нет. Нужна строчка: if(abs(out_sp-new_sp) < a_few)
set_work_sp(new_sp); - Cкpипaч(25.10.2021 15:45)
- ну и во всех случаях получается не совсем идеально. до определённой
разницы оно скачет махом, а дальше - ползёт с большой скоростью
вначале и потом устаканивается еле-еле. Mahagam(230 знак., 25.10.2021 16:14)
- ...с достаточной для практики точностью. Но что "не идеально" -
согласен. Важно: переменная out_sp в процессе регулирования не
участвует (просто название неудачное). С какой скоростью, на каких
этапах меняется - не важно. Cкpипaч(122 знак., 25.10.2021 17:15)
- ну фильтрацию EWMA ты используешь. Mahagam(297 знак., 25.10.2021 17:18)
- ...с достаточной для практики точностью. Но что "не идеально" -
согласен. Важно: переменная out_sp в процессе регулирования не
участвует (просто название неудачное). С какой скоростью, на каких
этапах меняется - не важно. Cкpипaч(122 знак., 25.10.2021 17:15)
- ну и во всех случаях получается не совсем идеально. до определённой
разницы оно скачет махом, а дальше - ползёт с большой скоростью
вначале и потом устаканивается еле-еле. Mahagam(230 знак., 25.10.2021 16:14)
- И да, и нет. Нужна строчка: if(abs(out_sp-new_sp) < a_few)
set_work_sp(new_sp); - Cкpипaч(25.10.2021 15:45)
- до чего на Калмана похож:) - Vit(25.10.2021 15:17)
- На интегрирующую RC-цепочку это похоже, с K=T/RC - ЫЫyкпy(25.10.2021 18:44)
- А у Калмана как было бы? - General(25.10.2021 15:24)
- xn+1= (1-K) *xn + K*zn+1, где zn+1 - текущее показание датчика, xn - отфильтрованное значение на предыдущем шаге - Vit(25.10.2021 15:46)
- Ха. Так это я придумал в 1987 году. - General(25.10.2021 15:54)
- xn+1= (1-K) *xn + K*zn+1, где zn+1 - текущее показание датчика, xn - отфильтрованное значение на предыдущем шаге - Vit(25.10.2021 15:46)
- Нужнен кульман, для ватмана. А я - дизайнер :) - Cкpипaч(25.10.2021 15:18)
- так это EWMA фильтр. Mahagam(120 знак., 25.10.2021 15:43, ссылка)
- out_sp = (1 - mizer)* out_sp + mizer * new_sp; - Cкpипaч(25.10.2021 15:11)
- Сначала я не понял. А потом как понял! Класс! Сам придумал? - RxTx(25.10.2021 14:53)
- странно. точно БИХ? ибо там же пофик амплитуда изменения - время
реакции одинаковое должно быть. - Mahagam(25.10.2021 15:07)
- Я делаю так: Уставка НЕ изменится до тех пор, пока до нее не
дочапает "теневой БИХ-фильтр". Отличие уставки в один градус
отработается мгновенно, а в 100 - через две минуты, позволив
оператору вдоволь этим числом налюбоваться и открутить все взад,
без неожиданного "рывка" в реальном процессе. Cкpипaч(60 знак., 25.10.2021 14:23)
- Интересно... А фильтр-то зачем. RxTx(222 знак., 25.10.2021 13:40)
- Там ещё есть такая штука, как нормированность числа. ЕМНИП, это
значит, что мантисса в диапазоне 0,5...1,0. Проверкой на
нормированность можно отсеять оч. много мусора. - SciFi(23.10.2021 18:03)
- в первую очередь отсеется мусорный софт, который прёт в протокол денормализованные значения. - Mahagam(23.10.2021 18:06)
- Проверять надо не отдельные поля (float's), а весь пакет протокола
подсчитывая CRC. - RxTx(23.10.2021 16:38)
- float по-отдельности тоже проверять нужно. NaN в расчетах ничего
хорошего не принесет. - rezident(23.10.2021 16:44)
- Зачем, если CRC пакета не нарушено? - RxTx(23.10.2021 16:46)
- На стороне отправки пакета тоже ошибки в последовательности
передачи байт/слов могут наличествовать. Например, при передаче
float по протоколу ModBus. При этом чаще всего float передается в
виде двух 16-битных "регистров" последовательностью байт 3-4-1-2, а
не 1-2-3-4 или 4-3-2-1, как бы вы предположили. - rezident(23.10.2021 16:58)
- Эта проблема решается в дебаггере на этапе разработки один раз.Если
известен диапазон чисел прикладной задачи проверить можно.
Остальные решения ненадежны. - RxTx(23.10.2021 17:13)
- Вы в дебаггере один раз отладили. Потом через год другой
программист на другой стороне протокола что-то переделает, и ваша
программа начнёт глючить вместо того, чтобы просто ошибку выдать.
Это может не выявиться при тестировании, а выявится на объекте. - Ale3000(25.10.2021 06:25)
- А так-то я почти со всеми авторами согласен. Во всяком случае, я _понимаю_ что они пытаются донести. Но не уверен что понимают меня :) - RxTx(25.10.2021 13:35)
- Моя исходная посылка была в том, что это проверяется на уровне пакета протокола и в том, что формат float нельзя со стопроцентной уверенностью проверить. Например, всегда проверяется версия пакета, правильное число байт и контрольная сумма. - RxTx(25.10.2021 13:34)
- Если кто-то перепутал байты, то долго можно огребать глупости и
выявить только в случае явного выхода за границы проверок.
Регрессионный тест по-хорошему должен делаться с заданием
параметров у ведомого и сравнением принятого образцовым решением
ведущего. В таком случае на этапе дебага при достаточном наборе
значений можно проверить отсутствие явных ляпов. Vit(1102 знак., 25.10.2021 07:45, ссылка)
- При подсчете денег особенно актуален вопрос, можно ли вообще
применять вещественные числа :) - VLLV(25.10.2021 11:01)
- Категорически нельзя! В реляционных БД деньги хранят и считают (в
триггерах, хранимых процедурах) в особых денежных форматах ~
(MONEY, CURRENCY) иногда встроеных, иногда алиасах, скажем
NUMERIC(15,2), также отражаемых в ПО на клиентской части. Ко всему
прочему, при операциях с денежными форматами действуют принципы
бухгалтерского округления и ряд других вещей. - RxTx(25.10.2021 13:44)
- и все равно мне как-то приходила автоматическая выписка из банка с
точностью в нанокопейки. java такая java - Mahagam(25.10.2021 14:16)
- Да. Смутно припоминаю такое же веселье. - RxTx(25.10.2021 14:32)
- Тут в новостях попалась тётка, которую не выпустили за границу за
6коп долга. Ташта и нанокопейка нанорубль бережот! - mse homjak(25.10.2021 14:19)
- Налоговая за неоплаченный долг сколько-то копеек штрафанет. Потом
за неоплаченный штраф (а он - долг) еще раз штрафанет. И это всё на
том фоне что ты можешь пребывать в полной уверенности что "всё
оплачено", до той поры пока не придет арест и списание какой-то
суммы на банковский счет. А потом, за то что ты вовремя не явился
за N дней (тебя якбы "предупреждали") - тебе выкатят сумму-штраф за
работу налоговых приставов. Ну ладно, ты оплатил сумму и выслал ее
ценным RxTx(161 знак., 25.10.2021 14:42)
- Еще и не так бывает --> MBedder(1 знак., 25.10.2021 14:42, ссылка)
- Налоговая за неоплаченный долг сколько-то копеек штрафанет. Потом
за неоплаченный штраф (а он - долг) еще раз штрафанет. И это всё на
том фоне что ты можешь пребывать в полной уверенности что "всё
оплачено", до той поры пока не придет арест и списание какой-то
суммы на банковский счет. А потом, за то что ты вовремя не явился
за N дней (тебя якбы "предупреждали") - тебе выкатят сумму-штраф за
работу налоговых приставов. Ну ладно, ты оплатил сумму и выслал ее
ценным RxTx(161 знак., 25.10.2021 14:42)
- и все равно мне как-то приходила автоматическая выписка из банка с
точностью в нанокопейки. java такая java - Mahagam(25.10.2021 14:16)
- Ну натуральных-то чисел для этого явно не хватит. :) - rezident(25.10.2021 11:46)
- Натуральных бы хватило, но все равно нужно конвертировать, и тут
начинаются уязвимости VLLV(330 знак., 25.10.2021 11:58)
- Робин Гуд нашего времени. Поделом этим банкстерам! - SciFi(25.10.2021 12:09)
- Мне это напоминает упреки экономиста физику (из реального разговора
между прочим). "Вот у вас в физике, что ни формула, то равна нулю.
А у нас, экономистов формула "товар-деньги-товар" и нигде! нулю не
равно!" ;-) rezident(97 знак., 25.10.2021 12:06)
- Жизнь - боль. Toчкa oпopы(1 знак., 25.10.2021 12:43, картинка)
- Натуральных бы хватило, но все равно нужно конвертировать, и тут
начинаются уязвимости VLLV(330 знак., 25.10.2021 11:58)
- Категорически нельзя! В реляционных БД деньги хранят и считают (в
триггерах, хранимых процедурах) в особых денежных форматах ~
(MONEY, CURRENCY) иногда встроеных, иногда алиасах, скажем
NUMERIC(15,2), также отражаемых в ПО на клиентской части. Ко всему
прочему, при операциях с денежными форматами действуют принципы
бухгалтерского округления и ряд других вещей. - RxTx(25.10.2021 13:44)
- При подсчете денег особенно актуален вопрос, можно ли вообще
применять вещественные числа :) - VLLV(25.10.2021 11:01)
- Вы в дебаггере один раз отладили. Потом через год другой
программист на другой стороне протокола что-то переделает, и ваша
программа начнёт глючить вместо того, чтобы просто ошибку выдать.
Это может не выявиться при тестировании, а выявится на объекте. - Ale3000(25.10.2021 06:25)
- Эта проблема решается в дебаггере на этапе разработки один раз.Если
известен диапазон чисел прикладной задачи проверить можно.
Остальные решения ненадежны. - RxTx(23.10.2021 17:13)
- Там такой колхозный протокол у заказчика для калибровки, CRC есть, но данные пишутся по 4 или 2 байта в память, где находится структура с float. Можно захерачить все, что угодно, при исправной CRC. До сих пор не пойму, какие это индейцы должны быть. - VLLV(23.10.2021 16:51)
- На стороне отправки пакета тоже ошибки в последовательности
передачи байт/слов могут наличествовать. Например, при передаче
float по протоколу ModBus. При этом чаще всего float передается в
виде двух 16-битных "регистров" последовательностью байт 3-4-1-2, а
не 1-2-3-4 или 4-3-2-1, как бы вы предположили. - rezident(23.10.2021 16:58)
- Зачем, если CRC пакета не нарушено? - RxTx(23.10.2021 16:46)
- float по-отдельности тоже проверять нужно. NaN в расчетах ничего
хорошего не принесет. - rezident(23.10.2021 16:44)
- Проверять - это правильно. Я еще и псевдо-БИХ фильтр ставлю. Cкpипaч(207 знак., 23.10.2021 18:40)
- спасибо - VLLV(23.10.2021 14:07)
- Кстати, а нужно проверять, что принятый побайтно из протокола float
имеет валидное значение? Как ? Что будет, если не проверить и
начтет считать? VLLV(1 знак., 23.10.2021 16:25, картинка)
- не в тему конечно! чем так привлекательно использование чисел с
плавающей точкой ?? я обычно привожу к *10К.... 10М, все удобно и с
минимальными затратами на вычисление - Aleksey_75(25.10.2021 14:24)