Методы алгоритмизации: Практикум (Технические средства обучения. Задания для самостоятельной работы. Решение заданий), страница 15

Шаг 5. Написание логических уравнений для выходов системы управления. Система уравнений имеет следующий вид. Секции дорожного светофора на проспекте:

КС = ST2 + ST3 + ST6 + ST7 + ST8 + ST9;

ЖС = ST3 + ST1 • SM0.5;

3C = ST4 + ST5  • SM0.5.

Секции дорожного светофора на улице:

КС = ST4 + ST5 + ST6 + ST7 + ST8 + ST9;

ЖС = ST5 + S1 • SM0.5;

3C = ST2 + ST3 • SM0.5.

Секции пешеходных светофоров на проспекте:

КС = ST4 + ST5;

ЗС = ST2 + ST6 + ST7 + ST8 + SM0.5 • (ST3 + ST9).

Секции пешеходных светофоров на улице:

КС = ST2 + ST3;

ЗС = ST4 + ST6 + ST8 + ST9 + SM0.5 • (ST5 + ST7).

Здесь слагаемые, содержащие специальный бит SM0.5, обеспечивают мигание ламп в соответствующих состояниях.

Шаг 6. Задание временных интервалов.

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

Как было показано в разделе 2.2 «Временные диаграммы», простейшим методом формирования заданного числа импульсов является использование одновременно запускаемых таймеров, количество которых вдвое превышает число импульсов. Очевидно, что такой метод применим только при небольшом числе импульсов, примерно 3-4. При большем числе импульсов целесообразно использовать программы непрерывной генерации импульсов с подсчетом нужного их числа. Для этого необходимо использовать инструкции счетчиков.

Работа светофора связана с формированием временных интервалов заданной длительности ДТ, измеряемой обычно в секундах. Это позволяет использовать системный таймер CPU 222 в качестве генератора секундных импульсов. Системный бит SM0.5 принимает значение логической единицы в течение интервала времени 0,5 с и значение логического нуля в течение следующих 0,5 с. То есть за 1 с формируется 1 импульс (период Т = 1 с). Поэтому для формирования заданного интервала времени нужно лишь подсчитать необходимое число таких импульсов. С этой целью можно использовать команды счетчиков: суммирующий счетчик CTU или вычитающий счетчик СТО. При каждом переходе состояния входа счетчика из 0 в 1 счетчик изменяет свое значение. При этом следует иметь в виду, что уставка n счетчика должна быть на единицу больше числа переходов, которое определяется значением ∆Т/Т, т. е.

n = ∆Т/Т + 1.

Объясняется это тем, что счетчик считает не сами импульсы, а положительные переходы. Поэтому еще до окончания первого временного интервала содержание счетчика уже равно 1. На рис. 5.14 показаны временная диаграмма и вычислительная цепочка, формирующая временной интервал 3 с. Бит Bit_S представляет собой условие начала счета, а бит Bit_R служит для сброса показаний счетчика после выполнения действий, связанных с данным временным интервалом.

С помощью системного бита SM0.5 очень просто реализуется режим мигания светосигнальных элементов, т. к. единичное состояние этого бита активизирует выход контроллера, а нулевое - переводит его в выключенное состояние.

Задание временных интервалов в работе светофоров осуществляется с помощью счетчиков программируемого контроллера и системного бита SM0.5. Как следует из описания задачи, необходимо сформировать временные интервалы 3, 10 и 20 с.

В разрабатываемой программе для формирования временных интервалов используются 3 суммирующих счетчика (инструкция CTU): СО (3 с), С1 (10 с) и С2 (20 с). С учетом системного бита SM0.5 логические уравнения для счетчиков принимают следующий вид:

счетчик СО = SM0.5 (ST3 + ST5);

счетчик С1 = SM0.5 (ST6 + ST8);

счетчик С2 = SM0.5 (ST2 + ST4 + ST7 + ST9).

Сброс счетчиков осуществляется битами состояний, в которые переходит система по истечении соответствующих интервалов времени.

Шаг 7. Назначение адресов переменным.

S1→10.6, S2→ I0.7, S3→11.0;

SW1→ I0.2, SW2→I0.3, SW3→ I0.4, SW4→I0.5, SW5→I0.0, SW6 →10.1; секции дорожного светофора на проспекте: КС →Q0.0, ЖС→Q0.1, ЗС → Q0.2; секции дорожного светофора на улице: КС→Q0.3, ЖС →Q0.4, ЗС→Q0.5; секции пешеходных светофоров на проспекте: КС→Q1.0, ЗС →Q1.1; секции пешеходных светофоров на улице: КС → Q1.2, ЗС→Q1.3;