ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (http://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (http://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   Неверное определение остановок и движений при выгрузке в 1с (http://forum.tk-chel.ru/showthread.php?t=3429)

Vasiliy_09_05 03.12.2013 05:51

Неверное определение остановок и движений при выгрузке в 1с
 
Вложений: 4
Доброго времени суток Дамы и Господа.
Еще раз нужна Ваша помощь. Если вопрос покажется глупым, прошу сильно не пинать, сам понимаю что проблема в настройке АвтоГРАФа :)
Произвожу выгрузку стоянок и отрезков движения между стоянками.
Алгоритм получения данных следующий:
1) Получаю все остановки параметром TripEntriesListTypeName="parks"
2) Заполняю ТЗ в 1с
3) В цикле получаю все рейсы между окончанием первой стоянки и началом второй стоянки (итд если стоянок больше двух), если рейс 1, то дополняю ТЗ прохождением между стоянками, если рейсов более 1, то суммирую данные (пробег, время в движении итд).
В результате получил данные, но есть несколько моментов, которые не могу понять. Чтобы не быть голословным, покажу на примере:
В 1с получаю таблицу остановок и движений, первая запись - это стоянка:
Вложение 3677
Во время стоянки ТС проехало 4 с копейками метра, что быть не может.
Движение выглядит нормально:
Вложение 3678
Начал смотреть что в АвтоГРАФе, в результате увидел следующую картину - Время начала движения по 1с не соответствует с началом движения по АвтоГРАФу. Движение начинается, в данном случае, за 7 секунд до фиксации движения через OLE, но скорость движения составляет 1 км/ч.
Фактическое начало движения в АвтоГРАФе:
Вложение 3680
Данные автографа в момент фиксации движения по OLE:
Вложение 3679
То есть движение ТС со скоростью 1 км/ч АвтоГРАФ не считает движением, а считает стоянкой, в результате при стоянке ТС, при выгрузке в 1с (да и скорее всего в любую другую программу через OLE) оказывается что в момент стоянки ТС все таки двигалось.
Подскажите как можно исправить данную проблему. Интуитивно понимаю, что скорее всего надо ковырять настройки АвтоГРАФа (что то типа порога скорости движения), но я не настраиваю АвтоГРАФ в организации и не могу сам менять настройки - мой функционал, связать АвтоГРАФ и 1с.
И еще несколько вопросов если позволите :)
1) Как лучше организовать получение информации о движении между стоянками, как организовал я описал выше, но цикл по рейсам между стоянками и суммирование некоторых данных, как мне кажется, не самый оптимальный вариант, есть ли параметр, типа TripEntriesListTypeName="parks", чтобы сразу получить все данные за указанный период движения, без использования цикла?
2) Думаю как лучше в 1с завести время рейса, время движения и время простоя - в чем именно заключается вопрос - АвтоГРАФ при выгрузки эти данные выдает в формате "чч:мм:сс", а если, например время движения/простоя превышает 24 часа? (у меня таких данных нет, поэтому и не знаю), как будет отражаться время? Например:"34:12:17"? Или будет прибавлять количество суток? Например:"1 10:12:17"? Вполне возможно что лучше использовать время в числовом варианте, например 1,50 - полтора часа, но опять же, нужно учесть возможность перевода времени, превышающие сутки в числовой формат.
Какова будет конечная настройка рейсов я не могу сказать - если рейсы будут, например определятся движением от точки к точке, то время рейса может превышать 24 часа, поэтому, если кто знает, как АвтоГРАФ указывает дату больше суток прошу подсказать :)
Прошу прощение за много буков :) Заранее спасибо за помощь :)

AlexProg1C 19.12.2013 10:05

Получение информации об остановках можно реализовать на основании информации с датчика двигателя (датчик моточасов - НомерДатчикаМЧ)

AG.WaitForComputing(ГрФайл, СерНом, НачПериод, КонПериод, "GSM", 1);

КолРейсов = AG.TripsNum;
AG.TripEntriesListTypeName = "sensor_on";
AG.TripEntriesListKindName = "num" + Формат(НомерДатчикаМЧ, "ЧДЦ=0; ЧГ=0");

Для х = 1 По КолРейсов Цикл
AG.TripIndex = х;
КолВключений = AG.TripEntriesNum;
Для хх = 1 По КолВключений Цикл
AG.EntryIndex = хх;
НачалоОстановки = AG.EntryStartRealTime;
ОкончаниеОстановки = AG.EntryEndRealTime;
КонецЦикла;
КонецЦикла;

SK 19.12.2013 19:53

AlexProg1C, абсолютно неверно.
Данный датчик покажет только стоянки с выключенным двигателем.
Остановки - это совершенно другое !

SK 19.12.2013 20:01

Цитата:

Сообщение от Vasiliy_09_05 (Сообщение 68506)
Во время стоянки ТС проехало 4 с копейками метра, что быть не может.

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

Vasiliy_09_05 20.12.2013 09:36

Благодарю за ответы :)
По доп вопросу №1:
Проковырял свой алгоритм, данные в принципе адекватные, решил оставить его :) Вкратце расскажу суть алгоритма:
1) Получаю все остановки "parks"
2) заполняю ими ТЗ
3) Делаю проверку на пересекающиеся данные (заметил 2 ситуации - а) остановка (событие) может начаться, например в 12:11:10 и закончиться в 12:11:10, и соответственно в 12:11:10 происходят 3 события - начало и окончание остановки, начало движения, такую остановку я убираю, б) Очень редко, но бывает, остановка№1 - окончание в 12:11:10, остановка №2 - начало в 12:11:10, то есть одну общую остановку АвтоГРАФ разбил на 2 остановки, я их собираю)
3) В цикле прогоняю остановки от остановка[x] и остановка[x+1] получаю рейс(ы) между данными промежутками времени, данные по КТ, координатам, уровню топлива и т. д. начал и окончания движения беру у остановок, из рейсов беру только пробег, время работы двигателя.

Вот вкратце алгоритм, понимаю, что многие моменты решаются с помощью более точной настройки АвтоГРАФа, но я не настраиваю АвтоГРАФ и хочу защититься от любых изменений настроек, чтобы изменение, например описания рейсов, никак не повлияло на работу получения данных (почему и ввел регистр, описанный выше - данных нужно записать много, но зато это наиболее полная информация о движении ТС, к которой можно приделать любые обработчики данных)

Если я по своей близорукости не увидел каких-либо подводных камней, прошу подсказать, чтобы я исправился. Но мне кажется алгоритм получения информации по остановкам и движениям между ними вполне адекватный :)

programmer 20.12.2013 10:45

Цитата:

Сообщение от Vasiliy_09_05 (Сообщение 70508)
3) Делаю проверку на пересекающиеся данные (заметил 2 ситуации - а) остановка (событие) может начаться, например в 12:11:10 и закончиться в 12:11:10, и соответственно в 12:11:10 происходят 3 события - начало и окончание остановки, начало движения, такую остановку я убираю, б) Очень редко, но бывает, остановка№1 - окончание в 12:11:10, остановка №2 - начало в 12:11:10, то есть одну общую остановку АвтоГРАФ разбил на 2 остановки, я их собираю)

Ситуации а) и б) уже полностью исключены в АвтоГРАФ.NET

Vasiliy_09_05 20.12.2013 10:48

Хм, спасибо за подсказку :)
Но ""
Цитата:

Сообщение от Vasiliy_09_05 (Сообщение 70508)
я не настраиваю АвтоГРАФ и хочу защититься от любых изменений настроек, чтобы изменение, например описания рейсов, никак не повлияло на работу получения данных

Поэтому хочу предугадать все моменты :)
А по алгоритму что можете сказать? Жизнеспособен или может показывать температуру в килограммах? :)

programmer 23.12.2013 05:28

Vasiliy_09_05, всё зависит от того, насколько точная информация Вам нужна.
1. Откройте список остановок
2. Откройте список записей (Ctrl + LAlt + RAlt)
3. Двойной щелчок по остановке, затем в списке записей нажмите кнопку "Найти запись списка" (стрелка вниз справа вверху панели)
4. Выполняя п. 3 для интересуемых остановок, определите, что Вы отфильтровываете своим алгоритмом: скорее всего, это перемещения, связанные с флуктуацией координат (от которой можно попытаться избавиться установкой GPS антенны в другое место) или неправильной настройкой поиска остановок.

Вы сами себе противоречите: с одной стороны:
Цитата:

Сообщение от Vasiliy_09_05 (Сообщение 70508)
многие моменты решаются с помощью более точной настройки АвтоГРАФа, но я не настраиваю АвтоГРАФ

с другой: Вам не нравятся данные, которые Вам выдаёт АвтоГРАФ по Вашим же настройкам, и Вы пытаетесь их "уточнить" оперируя только одним параметром - временем.


Текущее время: 11:29. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot