Как прочитать часы реального времени PMP20 из программы?
Дата и время лежат в семи системных регистрах подряд, и значения в них записаны в двоично-десятичном коде — то есть каждая тетрада хранит одну десятичную цифру.
| Регистр | Значение |
|---|---|
| SD013 | секунды |
| SD014 | минуты |
| SD015 | часы |
| SD016 | день |
| SD017 | месяц |
| SD018 | год, от 2000 до 2099 |
| SD019 | день недели, где 0 — воскресенье |
Главная особенность — формат. Прямое сравнение содержимого этих регистров с обычной константой даёт неверный результат: значение 21 час в двоично-десятичном коде и число 21 в двоичном — это разные числа. Перед арифметикой и сравнением значение переводят в двоичный вид командой преобразования, а для чтения всей даты одной операцией применяют команду чтения часов.
Точность хода — около пяти минут в месяц. Для журнала событий и расписания этого достаточно, для сведения данных с другими системами — нет: на объектах с диспетчеризацией время контроллера синхронизируют записью из панели оператора или из верхнего уровня, обычно раз в сутки.
Диагностика часов: признак ошибки — системный меркер SM415, тип ошибки — регистр SD415. Значение 1 означает низкое напряжение питания часов, 2 — отсутствие подтверждения от микросхемы часов, 3 — попытку записать недопустимую дату. Первое обычно означает севшую батарею: время после снятия питания не сохраняется.
Работа по расписанию строится именно на этих регистрах: сравнение часа и дня недели даёт нужные окна включения.
Прикреплённая документация
Георгий Жуков
Ведущий инженер