VII. Циклограммы работы КД и ЦК.
Циклограмма КД.- Ждем начала периода.
Ожидание производим в состоянии сна. В режим сна переводится радиомодуль, МК, сами датчики, если они питаются от батареи КД. Но в случае подсчета количества импульсов, МК должен регулярно просыпаться с периодом не более чем длительность импульса. - Производим измерение величин.
Выполняем в начале периода. - Ждем случайное время.
В пределах от нуля до длительности периода. В состоянии сна, аналогично п.1. - Производим передачу данных.
Подготавливаем пакет данных для передачи в соответствии с разделом IV. Активируем радиомодуль, переводим в режим передачи, средствами радиомодуля производим передачу пакета с подтверждением. Количество повторов ограничим 3-мя. Если передать не удалось, переходим к п.7. - Ожидаем команду от ЦК.
Радиомодуль переводим в режим приема. Ждем команду в течении некоторого времени. Средствами радиомодуля выполняем подтверждение принятия. Если команда не получена, переходим к п.7. - Выполняем команду.
Проверяем подлинность команды в соответствии с разделом IV, если подлинность не подтверждена, то переходим к п.7. Выполняем команду, отправляем ЦК ответ о выполнении. - Начинаем новый цикл работы.
Переходим к п.1.
Циклограмма ЦК.
- Активируем радиомодуль.
Переводим радиомодуль в режим приема. - Проверяем наличие команд от Сервера.
Если в буфере команд есть свободное место и от Сервера получена команда, то преобразуем её из текстового в двоичный вид и кладем в буфер. - Удаляем просроченные команды из буфера.
Если команда хранится в буфере сверх периода КД, то команду удаляем и выдаем на Сервер ответ - "таймаут". Удаление просроченных команд нужно для исключения переполнения буфера командами для несуществующих КД. - Проверяем наличие данных от радиомодуля.
Если данные не получены, то переходим к п.7. Если данные получены, то проверяем их подлинность в соответствии с разделом IV. Если подлинность не подтверждена, переходим к п.7. Иначе переходим к пункту 5. Если разность во времени между ЦК и КД превышает заданное значение, взводим флаг о необходимости коррекции времени. - Передаем данные на Сервер.
Если данные от КД являются ответом на команду, удаляем соотвествующую команду из буфера команд. Полученные от КД данные преобразуем в тестовый вид и передаем на Сервер. Переходим к п.6. - Производим передачу команды.
Если необходимо выполнить коррекцию времени на КД, то выдаем команду коррекции времени. Иначе, если в буфере команд нет команды, адресованной КД, данные от которого были получены, то переходим к п.7. Иначе подготавливаем пакет данных для передачи команды в соответствии с разделом IV. Переводим радиомодуль в режим передачи, его средствами производим передачу с подтверждением. Количество повторов ограничим 3-мя. Переводим радиомодуль в режим приема. Переходим к п.7. - Начинаем новый цикл работы.
Переходим к п.2.