Рассмотрим робота представленного ниже:
https://www.tinkercad.com/things/9cfDnom03TK |
Данный робот предназначен для управления освещением с возможностью включения/выключения с двух разнесенных друг от выключателей. Например в начале и в конце длинного коридора, включив свет в одном конце, можно пройти весь коридор и выключить свет в другом конце.
При создании алгоритма управления воспользуемся алгеброй логики и представим устройство в виде черного ящика со входами А,В и выходом Х. Составим таблицу возможных состояний входов и желательного при этом выхода Х. При использовании этой таблицы выделяем строки соответствующие нашим устремлением(вторая и третья). Используя законы алгебры логики получаем логическое условие работы нашего устройства - высокий уровень сигнала на выходе будет только тогда, когда на входы будут поступать разно-уровневые сигналы 0 и 1
Роль черного ящика может выполнить условный оператор(if)(ЕСЛИ), где условием будет выступать полученное выше логическое уравнение.
Дракон-схема алгоритма устройства будет выглядеть так:
- НАЧАЛО
- записать уровень сигнала в порту 4 в переменную А
- записать уровень сигнала в порту 8 в переменную В
- ЕСЛИ (A&-B || -A&B) перейти к строке 7
- подать на порт 7 низкий уровень сигала(логический 0)
- перейти к строке 8
- подать на порт 7 высокий уровень сигала(логическую 1)
- КОНЕЦ
С учетом того что алгоритм помещается в тело скрипта(вечный цикл) состояние портов будет опрашиваться постоянно после выполнения алгоритма.
Однако приведенная схема имеет недостатки:
- через порты контроллера нельзя запитывать мощные актюаторы
- в качестве датчиков целесообразней использовать кнопки
При устранении этих недостатков схема управления будет иметь вид:
Алгоритм управления последней схемы разработаем самостоятельно в ИС ДРАКОН