Задание на автоматизацию упаковочной машины
При подаче напряжения на установку включить лампочку L2 на пульте оператора и предупреждающую звуковую сигнализацию на 3 секунды, затем включить конвейер D1. По нему движутся изоляторы, фотодатчик фиксирует попадание изолятора в коробку. После попадания двух изоляторов включить лампочку L1. После попадания четырех изоляторов включить на две секунды упаковочный механизм, который заменяет полную коробку на пустую коробку. Количество упакованных коробок должно быть пересчитано. Срабатывание лазерных датчиков будем имитировать кнопками K5 и K6 клавиатуры. Временная диаграмма работы упаковщика показана на рисунке 10.1. Рисунок 10.1 – Временная диаграмма работы упаковщика
Исходные данные
В таблице 10.1 показано назначение битов PORTC и клавиатуры.
Т а б л и ц а 10.1 – Назначение битов PORTC и контактов клавиатуры
Блок – схема программы для упаковочной машины приведена на рисунке 10.1.
Рисунок 10.1 – Блок-схема
Фрагменты программы. include<p16F877.inc> Sch_in EQU H'22'; счетчик внутреннего цикла задержки. Sch_out EQU H'23'; счетчик внешнего цикла задержки. Sch3 EQU H'24'; счетчик третьего цикла задержки. KOL_IZOL EQU h'25'; регистр для записи количества изоляторов. KOL_KOROB EQU h'28'; регистр для хранения количества коробок. ; Инструкции по настройке МК опущены. MOVLW b'00001111' MOVWF TRISD; настраиваем PORTD: биты 0-3 на ввод, 4-7 на вывод.
BCF STATUS, 5 MOVLW b'11110000' MOVWF PORTD; подаем питание на клавиатуру. CLRF PORTC; очищаем PORTC от мусора. CLRF KOL_KOROB ; Рабочая часть программы MOVLW B'10000001' MOVWF PORTC; включаем сигнализацию L2 на пульт и сирену S1. MOVLW d'60'; время работы предупредительной сирены. CALL Timer BCF PORTC, 0; выключаем сирену S1. BSF PORTC, 1; включаем транспортер D1. M1 CLRF KOL_IZOL Prov_dat BTFSS PORTD, 2; проверяем срабатывание датчиков (кнопки "5", "6"). GOTO Prov_dat MOVLW D'10' Call Timer; убираем дребезг контактов клавиатуры. INCF KOL_IZOL, F; фиксируем поступление изолятора в коробку. MOVLW D'2'; XORWF KOL_IZOL, W; W=KOL_IZOL XOR B'00000010'. BTFSC STATUS, Z; проверяем Z = 0? BSF PORTC, 3; только при Z=1, включаем лампочку L1. MOVLW D'4'; SUBWF KOL_IZOL, W; W=KOL_IZOL-4. BTFSS STATUS, Z; проверяем разность KOL_IZOL-4=0? GOTO Prov_dat; выполняется только при Z=0. MOVLW b'10000110'; при Z=1, заменить коробку и выключить L1. MOVWF PORTC; пересылаем информацию в PORTC. INCF KOL_KOROB, F; фиксируем заполнение очередной коробки. MOVLW d'50'; время смены коробок. CALL Timer BCF PORTC, 2; выключаем механизм замены коробок. GOTO M1; начинаем заполнение новой коробки. GOTO$ Timer; Подпрограмма Timer. Приведены только три строки. MOVWF Sch3 ; RETURN; включить команду при отладке программы в режиме F7. M3 MOVLW D'150'... RETURN; конец подпрограммы Timer. END; конец текста всей программы. В приведенной программе не используется кнопка Stop, поскольку она здесь не будет срабатывать. Выполнение задания
Варианты заданий принять из таблицы 10.2.
Т а б л и ц а 10.2 – Варианты заданий
Отладка программы.При работе в пошаговом режиме ограничьте работу подпрограммы Timer, оставив только одну действующую команду как показано в тесте программы. На рисунке 10.2 показано окно наблюдения.
Продемонстрируйте работу программы преподавателю. 10.4 Контрольные вопросы
1. Что является аргументом при вызове подпрограммы Timer. 2. Назначение символа «;» в тексте программы? 3. Порядок отладки программы. 4. Что имитируют кнопки клавиатуры? 5. Как устраняется дребезг контактов? 6. Что такое паразитные наводки? 7. Почему нельзя поместить кнопку Stop подпрограмму Timer? 8. Как имитируется работа аварийных датчиков? 9. Как определяется количество изоляторов равное двум? 10. Как определяется количество изоляторов равное четырем? 11. Как фиксируется заполнение коробки?
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|