1

Неверно подсчитывается пробег, если поставщиком данных является CAN

Тема: Неверно подсчитывается пробег, если поставщиком данных является CAN

Счетчик пробега считается по приращению между событиями, в случае если за основу берутся данные с CAN шины, то идут постоянные расхождения. Интервалы ТО считаются как раз по этому счетчику, то есть фактически не работают. Этот счетчик живет, по каким то своим, совершенно не понятным законам. Тех поддержка выдает вот такой ответ:

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

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

2

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Виалон не предназначен для обработки нескольких сообщений в 1 секунду. Считайте, что это его период квантования.
В итоге сбивается не только расчет пробега, но и работа уведомлений, контроль событий, показания датчиков и пр.
Но сделать с этим Гуртам ничего не может, это заложено в основу движка, увы.

Остается решать вопрос пробега либо переделкой прошивки, либо жесткой настройкой "не чаще 1 раза в секунду" (некоторые приборы позволяют), либо валидированием датчика (в вашем случае пробега), либо его округлением до 1 км, когда заведомо в пределах 1 секунды на 1 км он не изменится.

3

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

На самом деле не думаю, что это великая проблема на уровне движка или чего там еще. Кроме этого счетчика, все остальное работает достаточно корректно. Достаточно реализовать в расчете пробега следующий алгоритм:
Если предыдущее значение больше или равно текущему то приращение должно быть 0. И все проблемы, 10 минут работы программиста и никакие ядра переделывать не надо.
Само по себе сброс предыдущего значения пробега в 0, если разница между значениями меньше нуля, выглядит как то странно.

Можете как либо аргументировать это поведение, для чего такой алгоритм может быть нужен ?

4

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Вы можете думать что и как угодно, но, к сожалению, период одна секунда - это данность и базовое свойство, лежащее в основе всего Виалон. И это никак не изменить, кроме глобального переписывания кучи движков различных элементов системы.
На это Гуртам не пойдет.

Варианты решения я выше написал, других способов нет. Для примера, валидировать датчик займет 2 минуты настройки и все, пробег считается корректно.
За время, пока вы писали свой ответ выше, это можно было сделать множество раз.

5

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Простите я не совсем понял вы разработчик ?
Как вы предлагаете настроить валидацию  ? Я не очень понимаю.

6

Неверно подсчитывается пробег, если поставщиком данных является CAN

(13/08/2020 11:08:24 отредактировано SanderAMC)

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Валидация датчика. Читаем документацию и настраиваем.
Например, делаем дискретный датчик по "текущий пробег" - "предыдущий пробег". Ставим тарировку 0 - если <0, 1 - если >=0.
У датчика пробега ставим этот дискретный валидатором с проверкой на "неравенство 0".
В итоге ваш датчик пробега во всех случаях, когда новый меньше предыдущего, будет невалиден и не пойдет в расчет общего пробега.

PS Я не разработчик.

7

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Спасибо. Понял.

Попробую.

8

Неверно подсчитывается пробег, если поставщиком данных является CAN

(19/09/2023 13:31:04 отредактировано Artу)

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

SanderAMC пишет:

Валидация датчика. Читаем документацию и настраиваем.
Например, делаем дискретный датчик по "текущий пробег" - "предыдущий пробег". Ставим тарировку 0 - если <0, 1 - если >=0.
У датчика пробега ставим этот дискретный валидатором с проверкой на "неравенство 0".
В итоге ваш датчик пробега во всех случаях, когда новый меньше предыдущего, будет невалиден и не пойдет в расчет общего пробега.

PS Я не разработчик.

Создал датчик валидации, когда валидирующий датчики равен нулю, в значении одометра показывается прочерк, но расстояние по датчику пробега теперь не учитывается.
Куда копать, что не так сделал?

+ открыть спойлер

Неверно подсчитывается пробег, если поставщиком данных является CAN

  • Неверно подсчитывается пробег, если поставщиком данных является CAN
9

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Artу какой тип датчика задан для датчика Общий одометр, какой счетчик выбран для пробега во вкладке Основное свойств объекта? Какую систему используете? Интерфейс похож на Wialon Local, но какая верия?

10

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

pach
Wialon local вроде как 2004

Общий одометр - Датчик пробега
Счетчик пробега - Датчик пробега

11

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Artу нельзя обращаться к предыдущему параметру в датчике пробега. Счетчик не будет работать:
https://wialon-help.link/4ab9f7fb

Попробуйте поменять тип на Относительный одометр и в нем так же считайте разницу, т.е. вместо накапливаемых значений, вам нужно получить мгновенные (пробег-#пробег). В целом, тогда и валидатор не нужен, просто нижнюю границу задайте 0 и Применять после расчета.

12

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

pach как выглядит проблема изначально

+ открыть спойлер

Неверно подсчитывается пробег, если поставщиком данных является CAN

к предыдущему параметру я обращаюсь в датчике валидаторе (пробег-#пробег)

+ открыть спойлер

Неверно подсчитывается пробег, если поставщиком данных является CAN

  • Неверно подсчитывается пробег, если поставщиком данных является CAN
  • Неверно подсчитывается пробег, если поставщиком данных является CAN
13

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

pach убираю некорректный параметр по пробегу, но счетчик перестает работать

+ открыть спойлер

Неверно подсчитывается пробег, если поставщиком данных является CAN

вариант с Относительным одометром не работает

  • Неверно подсчитывается пробег, если поставщиком данных является CAN
14

Неверно подсчитывается пробег, если поставщиком данных является CAN

(21/09/2023 16:49:32 отредактировано pach)

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

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

Относительный одометр должен отдавать пробег даже с валидацией. На вкладке Основное выбрали счетчиком Относительный одометр или там Датчик пробега остался?

UPD: пока надо получить сам пробег в счетчике, дальше будем думать, как сместить валидацию вниз на сообщение или просто задать границей значения больше N пропускать (чтобы отфильтровать 233км).

15

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

pach пишет:

На вкладке Основное выбрали счетчиком Относительный одометр

выбрал
К относительному применял/убирал валидацию валидацию, на счетчик не реагирует, пишет некорректное значение

16

Неверно подсчитывается пробег, если поставщиком данных является CAN

Re: Неверно подсчитывается пробег, если поставщиком данных является CAN

Artу что значит не корректное значение, где пишет? Вы получаете с строке Расстояние некое значение, но оно не корректно? Так это значит, что датчик работает, чего и добиваемся. Если значение не корректное, надо поковырять дальше, что где упустили.

Пусть будет Относительный одометр, в нем задайте верхнюю границу, что-то приближенное к реальности. Не может он проезжать за 2 сообщения 200км, но сколько-то может. Поставьте там 10ку например. Пусть отбросит все значения больше 10км между сообщениями.