/  Архив форума
   /  Оборудование производства НПО "Тепловизор"
/  ВИС.Т MODBUS - Чтение архивов без "файловых" функций

Форум : Оборудование производства НПО "Тепловизор"

Название : ВИС.Т MODBUS - Чтение архивов без "файловых" функций

© NegaSoft co., 2005
http://www.teplovizor.ru

URL этой темы
http://www.teplovizor.ru/forum/viewtopic.php?topic_id=733&forum=1


 Jenius :

13.12.21 15:31
 Вопрос по Архивам ВИС.Т (не файловой функцией).
Не могу полностью разобраться как с ними работать.
1) Я прочитал Спецификацию архивных файлов:
01_03_0A_10_00_00_4F_C1_B1_08_93_1B_00 - Спец. прибора 1.
01_03_0A_1B_00_00_00_00_00_00_00_00_00 - Спец. прибора 2(+ смещение 1 байт)
01_03_0A_00_00_00_00_00_00_00_00_00_00 - Спец. прибора 3.
2) Понял что сконфигурирован только Прибор 1 и могу считать информацию с 1000h регистра.
00_4F_C1_B1 = 0100 1111 1100 0001 1011 0001 - настроено Время наработки, Масса 1, Масса 2, Средняя Темп. 1, Средняя Темп. 2, Тепловая Энергия,
Критические ошибки, Время расхода мин и мах, Время Т мин, Время пропадания питания и время простоя. Предельное число записей 2195. Длина архивной записи 27.
3) Готов отправить команду на чтение структуры заголовка по документации стр. 15:
01_04_10_00_00_30
4) Готов получить и запомнить значения(смещения) в ответе: 6, 10, 12, 16 + разобрать ответ по стр. 15.

Далее возник вопрос:
1)Как дальше работать с записями архива если мне нужны значения за прошлый час?
2)Записи с данными лежат сразу после 1000h регистра + заголовка и можно опросить командой: 01_04_10_30_00_1B(первая запись) 01_04_10_4B_00_1B(вторая запись)
3)Время для записи будет: Дата и Время обновления архива(из заголовка файла) - Номер записи(т.е. 1 час)
т.е. время для второй записи будет: Дата и Время обновления архива - 2 часа?


[ Редактировано Jenius в 13.12.21 16:49 ]

[ Редактировано Jenius в 13.12.21 17:26 ]

 CH :

14.12.21 11:35
 Считать запись с данными за предыдущий час работы прибора (новейшая запись) вы можете с указанного в заголовке архива индекса ("Индекс будущей записи в архиве" - 1), а не с нулевого индекса (сразу за заголовком архива). Её время будет совпадать с временем заголовка архива, она создаётся одновременно с обновлением заголовка. Запись, сделанная ещё за час до того по индексу ("Индекс будущей записи в архиве" - 2), её время на 1 час меньше времени заголовка архива. И т. д.
Если ("Индекс будущей записи в архиве" - x) получается меньше нуля, прибавляете "Предельное число записей в архиве". Ну и учитываете, что архив может оказаться ещё не заполненным, больше чем "Текущее число записей в архиве" не прочитать.

 Jenius :

15.12.21 13:58
 Спасибо за ответ.
Можно вас попросить проверить адресацию запросов записей и длину команд?(обмен ниже)
Цель считать последние данные за 5 часов из архивов.
Должно быть все правильно. В запросах учел: Длина записи в байтах, а работаем в запросах с регистрами. Архив может обновиться.
Ниже пример работы с Архивом прибора 1. Для приборов 2 и прибора 3 адресацию заголовка я рассчитываю по формуле:
A:=(X + $1000) / 2; где X это значение @Байтового адреса заголовка архивного файла в адресном пространстве прибора".

Спецификация архивов по приборам|01_03_1C_10_00_00_4F_C1_B1_08_93_1B_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение заголовка архива|Адрес:4096|Длина записи архива:27(байты)|01_04_10_00_00_30
<Чтение заголовка|0|4096|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Проверка заголовка|Параметры:0|5226929|2195|226|2195|44545.5416666667|3|3|2|5|01_04_10_00_00_30
2195(текущее число записей в архиве)|226(Индекс будущей записи)|2195(Предельное число записей)
44545.5416666667(15.12.2021 13:00:00 Дата и время обновления архива)
<Проверка заголовка|1|1|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение записи за -0ч|Номер записи:225|01_04_1C_0D_00_0E
<Чтение записи за -0ч|3|1|0|01_04_1C_00_E8_64_00_00_0B_E4_00_00_0B_D7_03_74_02_35_00_00_25_E0_00_00_00_00_00_00_00_00_00
>Проверка заголовка до чтения за -1ч|01_04_10_00_00_30
<Проверка заголовка -1ч|1|2|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение записи за -1ч|Номер записи:224|01_04_1C_00_00_0E
<Чтение записи за -1ч|3|2|0|01_04_1C_01_64_00_00_0B_C6_00_00_0B_BA_03_76_02_28_00_00_27_3D_00_00_00_00_00_00_00_00_00_E8
>Проверка заголовка до чтения за -2ч|01_04_10_00_00_30
<Проверка заголовка -2ч|1|3|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение записи за -2ч|Номер записи:223|01_04_1B_F2_00_0E
<Чтение записи за -2ч|3|3|0|01_04_1C_00_09_64_00_00_0B_AE_00_00_0B_A2_03_75_02_1A_00_00_28_83_00_00_00_00_00_00_00_00_00
>Проверка заголовка до чтения за -3ч|01_04_10_00_00_30
<Проверка заголовка -3ч|1|4|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение записи за -3ч|Номер записи:222|01_04_1B_E5_00_0E
<Чтение записи за -3ч|3|4|0|01_04_1C_E6_64_00_00_0B_AD_00_00_0B_A1_03_7D_02_3E_00_00_25_39_00_00_00_00_00_00_00_00_00_09
>Проверка заголовка до чтения за -4ч|01_04_10_00_00_30
<Проверка заголовка -4ч|1|5|0|01_04_60_01_32_01_00_00_00_00_4F_C1_B1_08_93_00_E2_08_93_0D_00_00_0F_0C_15_0A_C8_78_10_0A_76_67_E7_00_00_00_00_0A_79_60_F6_0A_65_26_CE_00_00_00_00_00_53_49_71_00_00_00_00_12_12_7E_FB_03_03_02_05_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00_00
>Чтение записи за -4ч|Номер записи:221|01_04_1B_D7_00_0E
<Чтение записи за -4ч|3|5|0|01_04_1C_00_70_64_00_00_0B_9F_00_00_0B_94_03_80_01_04_00_00_49_F2_00_00_00_00_00_00_00_00_00

">" - что отправляю
"<" - что получаю на запрос

 CH :

17.12.21 11:41
 Насчёт вашей просьбы о проверке - я не могу её выполнить.