Здравствуйте.
Мы сравнили наш алгоритм чтения архивов с алгоритмом чтения, используемым в ПО Карат Экспресс 4.
В первую очередь стоит еще раз вспомнить механизм чтения архивной записи согласно протоколу обмена прибора, состоящий из двух шагов:
1. Запрос на запись даты/времени архивной записи для чтения;
2. Запрос на чтение собственно архивной записи.
В соответствии с протоколом обмена прибора Эльф во Взлет СП4 чтение каждой архивной записи предваряется записью даты/времени архивной записи для чтения, то есть для чтения каждой архивной записи выполняются два указанных выше запроса.
В упомянутом Карат Экспресс 4 чтение архивов прибора Эльф осуществляется следующим образом:
1. Запрос на запись даты/времени архивной записи для чтения следующего вида: текущие дата/время ПК - заданная в настройках глубина чтения - 1, с включенными флагами:
* Запрос архива с автоматическим отступом;
* Если архивная запись с указанной датой или индексом не существует, то передать запись ближайшую более свежую;
* При чтении архива «по дате» сменить способ запроса на «поиндексу» и инвертировать значение бита 0х0008;
2. Запрос на чтение собственно архивной записи;
3. Запрос на чтение собственно архивной записи;
...
N. Запрос на чтение собственно архивной записи.
Теперь вернемся к прибору Эльф 91613113 и суточной архивной записи за 20.11.2019 00.
Нули в полях данных (кроме НС) это именно то, что вернул прибор при попытке чтения архивной записи со временем 20.11.2019 00:
[DEBUG] 08:32:34.100 Session 2. Посылаем запрос: 01040100007A7015
[DEBUG] 08:32:35.512 Session 2. Network: Пришел ответ. Размер: 249, данные: 0104F4130B1400C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056D9
где 13 - 19, 0B - 11, 14 - 20, 00 - 00.
Допустим, укажем в Карат Экспресс 4 такую глубину чтения, чтобы первая прочитанная запись была за 20.11.2019:
02.12.19 11:56:04.393 | Чтение архива: Посуточный архив
02.12.19 11:56:04.393 |
02.12.19 11:56:04.393 | ModBus. Запрос № 1.
02.12.19 11:56:04.393 | [01 10 00 00 00 07 0E 13 0B 13 0B 00 00 00 1B 03
02.12.19 11:56:04.393 | [C0 00 00 00 62 C7 22 ] (23)
02.12.19 11:56:04.393 | Ответ.
02.12.19 11:56:05.493 | 01 10 00 00 00 07 81 CB
02.12.19 11:56:05.493 | Ответ принят.
02.12.19 11:56:05.503 |
02.12.19 11:56:05.503 | ModBus. Запрос № 1.
02.12.19 11:56:05.503 | [01 04 01 00 00 78 F1 D4 ] (8)
02.12.19 11:56:05.503 | Ответ.
02.12.19 11:56:07.203 | 01 04 F0 13 0B 14 00 84 00 00 00 00 00 41 BC 07
02.12.19 11:56:07.203 | E2 3F C3 00 00 00 00 59 47 43 65 09 FE 43 66 5A
02.12.19 11:56:07.203 | E8 42 83 A2 A7 42 6B 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.203 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02.12.19 11:56:07.204 | 00 00 00 66 02
02.12.19 11:56:07.204 | Ответ принят.
02.12.19 11:56:07.204 | Разбор даты: 20.11.19 0:00:00
Первым запросом в прибор пишутся дата/время 19.11.19 11, вторым запросом выполняется чтение. Суточной архивной записи за 19.11.19 11 часов прибор не находит, и возвращает ближайшую закрытую архивную запись из будущего - 20.11.19 00.
Удивляет, что прибор возвращает разные данные для суточной архивной записи с одной и той же возвращаемой им меткой дата/время 20.11.19 00.
С уважением,
Кривокора Иван