Программа "Выключатель"





Программа должна позволять управлять УСОМК в течении дня. Изо дня в день. Причём отдельно одним реле и отдельно другим. Например для управления аквариумом.

Поясню:

Есть аквариум, есть фильтр/компрессор, есть лампа подсветки. Нужно утром и вечером включать лампу для подсветки рыб. В заданное время. Так же отдельно второе реле должно включать и отключать компрессор(вечером отключить, утром включить, после ужина отключить и включить через 2 часа, когда рыбы поедят.) . Примерно такая задача. Есть Мк-161 и УСОМК на 2 релюшки.

Предлагаю осуществлять переключения по привязкам, а привязки будем хранить в десятичных регистрах. Привязка будет состоять из значения времени и состояния регистра параллельного порта. При достижении времени, совпадающему со временем привязки, состояние порта меняется на указанное в привязке. Привязки расположены в памяти десятичных данных строго последовательно и идти по порядку увеличения времени срабатывания. В 0 часов 0 минут возвращаемся на первую привязку.

Формат привязки: XX,XXYY, где XX,XX - время срабатывания привязки, час,мин, а YY - состояние порта. 00 - выключены обе линии, 02 - включена линия AUTOFEED, 04 - включена линия SELECT_IN, 06 - включены обе линии.


Как всё это осуществить.

Распределяем регистры. Р7 будет хранить число 100, пригодится. Р8 будет хранить текущее значение времени. Р9 будет хранить номер регистра с первой привязкой. РА будет хранить номер текущей привязки.

Сперва нужно подготовиться. Разрешаем работу порта, записав единицу в служебный регистр Р9090. Пишем ноль в рабочий регистр порта Р9092 для его выключения. Записываем 100 в регистр Р7, для уменьшения размера программы.

После подготовки можно работать. Считываем текущее время из служебного регистра Р9055 и сохраняем его в регистре Р8. Умножаем значение на 100, если число равно нулю, значит время 0 часов 0 минут, и нужно извлечь из регистра РА номер регистра с первой привязкой и записать его в регистр Р9 и вернуться в начало. Иначе извлекаем сохранённое значение времени из регистра Р8 и вычитаем из него значение, считанное из регистра с привязкой. Если полученное значение больше нуля, то значит настало время привязки, иначе возвращаемся в начало. Чтобы получить значение, которое можно записать в регистр порта, то значение привязки нужно умножить на 100, отбросить целую часть и полученный остаток снова умножить на 100, полученное число пишется в рабочий регистр Р9092. Далее, извлекаем номер текущей привязки из регистра РА прибавляем единицу и записываем в регистр РА. Всё, возвращаемся к началу.


Вот простейшая программа, работающая по описанному алгоритму:


      0    1    2    3    4    5    6    7    8    9

 00   Cx   1   РРП   90   90   Cx  РРП   90   92   1

 10   0    0    П7   Cx   В↑   В↑  РРИП  90   55  KЭКР

 20   П8  ИП7   x   K[x] Fx=0  30  ИП9   ПА   БП   13

 30  ИП8  KИПА  -   Fx≥0  13  KИПА  ИП7  х   K{x} ИП7

 40   x   РРП   90   92  ИП9   1    +    П9   БП   13


Перед работой в регистр Р9 пишем номер регистра с первой привязкой.

Для испытаний навесным монтажом припаял к выходам светодиоды, которые через резисторы запитал от выхода внутреннего преобразователя +12В. Светодиоды зажигаются при низких логических уровнях на выходах AUTOFEED (красный) и SELECT_IN (зелёный).


Заносим привязки:



Выходы находятся в состоянии логического нуля, поэтому оба светодиода горят.

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

Вот сработала первая привязка:



Вот сработала вторая привязка:



Пример задания привязок:


01,0002 РП12 Включаем фильтр,
05,0000 РП13 Выключаем фильтр,
08,0004 РП14 Включаем свет,
09,0000 РП15 Выключаем свет,
11,0002 РП16 Включаем фильтр,
15,0000 РП17 Выключаем фильтр,
18,0004 РП18 Включаем свет,
19,0000 РП19 Выключаем свет,
12 П9, В/О С/П.


Привязки вводить перед запуском программы. Количество привязок ограниченно числом десятичных регистров машинки, то есть не более 988 привязок.


МК-161 должен быть постоянно на подзарядке, нужно будет доработать УСОМК - к разъёму расширения припаять выводы блока питания на 6В 0,25А, контакт плюс подавать на 14 контакт, минус на 1 контакт.

Блок питания должен быть советского производства или российского, но нужно проверять отсутствие нагрева при работе. Китайские блоки питания не подходят по пожарной безопасности, ибо греются даже на холостом ходу.

По пожарной безопасности вся получившаяся конструкция должна быть подключена к сети через предохранители.



Сайт работает на микрокомпьютере