Разработка контроллера в составе локальной микросети, страница 4

4.  Если к тому времени микроконтроллера с номером 1 ещё в сети нет, то переход к п.2 алгоритма.

5.  Включившись в сеть, второй по порядку микроконтроллер выполняет считывание показаний датчиков и такое же прослушивание, как и первый.

6.  Получив маркер с указанием в битах XXX=0012 его порядкового номера, выполняет инкрементирование QQQ и цикл ожидания в течение интервала времени t. Если ни один из уже включённых в работу микроконтроллеров не начал передачу данных, то он присваивает себе номер 1 и выполняет передачу данных в сеть.

7.  Формат данных: , где 0-признак  пакета данных; p-бит паритета; FFFFFFF-количество импульсов, подсчитанных за 0,05 с; B-двоичные данные (1 бит); AAAAAAA-семиразрядный цифровой код, полученный с выхода АЦП (младший бит не учитывается).

8.  Далее он генерирует маркер, адресованный третьему микроконтроллеру.

9.  Если за это время обнаруживаются ещё работающие контроллеры, то они передают свои данные в сеть и выполняют действия, аналогичные описанным в пп.2-7 алгоритма.

10. Последний из работающих контроллеров передаёт маркер для контроллера №0. Бит i сбрасывается контроллером №0 после получения маркера, адресованного нему.

11. В процессе обычной работы (не в цикле инициализации) сети каждый контроллер производит сравнение n и (QQQ-1). При равенстве этих значений контроллер является последним. Он посылает маркер для (n+1)-го контроллера и, если ответ не получен, генерирует маркер для контроллера №0.

12. Если в процессе работы был отключён или вышел из строя контроллер с номером k, все микроконтроллеры в сети будут ожидать выдачи данных после поступления маркера в течение времени 2×t. Если за это время в сети не появятся данные, то все контроллеры с номерами, большими k, декрементируют значение своего номера.

13. Затем контроллер с номером 0 выработает новый маркер с признаком цикла инициализации i=1 и количеством рабочих контроллеров QQQ=QQQ-1. После цикла инициализации нормальная работа сети будет восстановлена.

14. В процессе работы все контроллеры «слушают» линию и, по мере поступления данных в сеть, формируют свою таблицу значений, основываясь на которой и вычисляют значения управляющих воздействий на свои объекты управления.

15. В процессе работы системы может возникнуть ситуация, когда один из контроллеров после получения маркера выдал данные в сеть, а затем вышел из строя, не успев переслать маркер для следующего контроллера. В этом случае, согласно п.13 алгоритма работы сети, контроллер №0 сгенерирует новый маркер и начнётся цикл инициализации.

16. Если в результате действия помех или каких-либо других внешних факторов произойдёт искажение данных, передаваемых по сети, это будет обнаружено при помощи флага паритета.

17. Если искажение произошло в маркере, ни один контроллер не выдаст на него ответа. В этом случае выполнится п.13 алгоритма работы сети.

18. Если произошло искажение пакета данных контроллера X, то эти данные будут проигнорированы всеми контроллерами, и расчёты будут производиться исходя из значений, выданных контроллером X в предыдущем цикле работы сети.

Микроконтроллер должен работать в двухпрограммном режиме с разделением всех ресурсов между двумя сопрограм­мами – прикладной программы управления и программы доступа к моноканалу. Механизм взаимодействия между сетевой и прикладной программами реализуется путем присвоения сетевой программе более высокого приоритета.

Алгоритм работы сети, аналогичный этому рассмотрен в [1](том 2, стр.18), где приведена сравнительная оценка опроса с передачей управления (рассмотренный случай) и систем с другой организацией взаимосвязи между абонентами сети.

Сравнительный анализ систем с передачей управления и систем переклички (головной контроллер опрашивает всех абонентов сети на предмет их готовности к работе и каждый из них пересылает в ответ свои данные) показывает, что полное время передачи уменьшается за счёт передачи управления.