-
- Кстати, а нужно проверять, что принятый побайтно из протокола 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, картинка)