Название: Формирование адреса в запросе архива ТСРВ-010М Отправлено: frolov_evgeny от 24.08.2010, 08:23:34 День добрый!
Подскажите, пожалуйста, начинающему программисту как рассчитать 16-битный адрес в запросе архива ТСРВ-010М. В документации для часового архива написано: Adr = StartAdr + ((AbsDay ·24 + H) mod ArchiveSize) · RecordSize AbsDay = (Y - 1) ·365 + ((Y - 1) div 4) + DayInYear DayInYear = Days[M-1] + D + (M>2)LeapYear LeapYear = (Y mod 4 == 0)(Y mod 100 != 0) + (Y mod 400 == 0) Days[] = {0,31,59,90,120,151,181,212,243,273,304,334} где ArchiveSize – размер архива (часового - 1428 записи) RecordSize – размер записи (часовой - 42 байта) StartAdr – адрес начала массива записей (часового - 2048 (0х0800)) H (0-23), D (1-31) ,M (1-12), Y (0-99) – час, день, месяц, год записи; mod - возвращает остаток от деления; div –возвращает результат деления нацело. Для примера берем сегодняшнюю дату - 24.08.2010 11 часов утра, программа "Монитор Взлет ЭМУ" выдает запрос часового архива в виде: 00 00 30 08 83 DE 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 9B То есть адрес в запросе = 0х83DE. Если можно - напишите по шагам с подстановкой конкретных чисел в каждой строке алгоритма расчета, что/куда, чтобы в конце получилось 0х83DE. Спасибо! Название: Re: Формирование адреса в запросе архива ТСРВ-010М Отправлено: frolov_evgeny от 24.08.2010, 10:03:50 Разобрался. Отбой :)
|