RS-485 для чайников


Программные методы борьбы со сбоями - часть 4


Его длительность должна с небольшим запасом превышать максимальное время ответной передачи плюс время, необходимое на обработку запроса и формирование ответа. Ведомому устройству тоже не помешает отработка тайм-аутов. Особенно в ситуациях, когда отсутствие регулярного обновления данных или новых команд от ведущего устройства критично для работы устройств системы. Самая простая реализация для ведомого - сброс сторожевого таймера по приему посылки. Если по какой-либо причине данные перестали поступать - устройство сбросится по переполнению сторожевого таймера. После сброса устанавливается безопасный режим до приема первой команды.

Квитирование - подтверждение доставки (квитанция). Когда важно, чтобы ведомый обязательно получил данные или команду, возникает необходимость проконтролировать получение им посылки. Ведущее устройство, отправив ведомому данные, ждет ответа с подтверждением. Ведомое устройство, получив данные, в случае их корректности посылает ответ, подтверждающий доставку. Если по истечении тайм-аута ведущее устройство не получает подтверждение, делается вывод о сбое в связи или в ведомом устройстве. Дальше обычные меры - повтор посылки. Но тут есть нюанс: повреждена и не получена может быть сама квитанция. Ведущее устройство, не получив квитанцию, повторяет посылку, и ведомое отрабатывает ее повторно. Не всегда это существенно, но если перепосылалась команда типа "увеличить параметр на 1" это может привести к незапланированному двойному увеличению параметра. В таком случае надо предусмотреть что-нибудь типа циклической нумерации посылок, чтобы ведомое устройство отличало повторные посылки от новых и не отрабатывало их.




Начало  Назад  Вперед