Про. У.Байдакова
Московська державна академія приладобудування і інформатики
Москва, 2001
Текст завдання. Розробити автоматизовану систему відбракування резисторів з виробництва. Виготовленірезистори необхідно розсортувати по допускам і розмістити у окремі контейнери. Управління операціями із сортування здійснюється роботом, який бере черговий резистор й поміщає їх у затиск, він також після виміру опору виймає його й кладе в відповідний контейнер. Вимірювання опору проводитися з урахуванням виміру напруги нарезисторе під час проходження нього відомого струму, т. е.Rизм.=Uизм./Iеталон. Управління роботом і вимірами здійснюється МШС. Її функції такі:
Видача команди роботу на установку резистора;
Перевірка, встановлено чи резистор;
Проведення виміру опору резистора;
Команда роботу зняти резистор і вмістили його у заданий контейнер.
Необхідно передбачити включення режиму “еталонний резистор”- т. е. Вимірювання і занесення на згадку про номінального значення на зміну партії резисторів. Потрібно вибрати значення “еталон” для даного номіналу резистора, щоб вихідний напруга вимірника відповідало діапазону вхідних напругАЦП. Необхідно у пам'яті підрахувати число резисторів, яких спіткало кожен контейнер. Передбачити запалювання світлодіода “поза допуску” приизмеренном опір резистора, яке входить у найширший поставлене допуск.
Вихідні дані для проектування:
Кількість полів допуску: 2
Діапазон номіналів резисторів:1…100Ом
Поля допуску: 5 і десяти %
Вигляд мікропроцесорної системи:К1816ВЕ48
Запровадження
У цьому курсової роботі описується вибракування резисторів з виробництва.Резистори сортуються по допускам і розкладаються на відповідні контейнери. Якщо опір не входить ані за діапазон допуску, він міститься у окремий контейнер і включає сигнал, що попався шлюб. Систему побудовано намикропроцессореК1816ВЕ48.
Вимірювання опору здійснюватися у вигляді виміру падіння напруги на досліджуваномурезисторе при пропущенні нього фіксованого струму.
Працює система так:
У певний час процесор подає роботу команду встановити резистор й починає чекати. Робот, коли встановить резистор визмеряющее пристрій, сигналізує звідси процесору. Процесор виходить із режиму очікування й видає команду розпочати перетворення і знову починає чекати.АЦП, завершивши перетворення падіння напруги на вимірюваномурезисторе у цифровій код, подає сигнал процесору. Процесор зчитує зАЦП цифровий код і вдається до порівнянню його з записаним на згадку про еталонним опором. Через війну обчислень процесор визначає якої групі по відхилення від номіналу належить вимірюваний резистор видає відповідну команду роботу- помістити резистор одного з п'яти контейнерів з відхиленнями
Далі цикл спочатку.
Попереднє розподіл пам'яті
Попереднє розподіл пам'яті у системі показано на рис. 2.1. Т. до. програма, управляюча системою швидше все буде порівняно невеличкий, вона вся поміститися у внутрішньому ПЗУ процесора (пам'яті комп'ютера), на малюнку зображено лише ця пам'ять; зовнішні ПЗУ тож і тому розподіл їм не показано.
Система опрацьовуватиме порівняно невеличкий обсяг даних, тому показання на схемою розподілу пам'яті даних область “>ОЗУ даних” швидше за все залишиться незадіяної.
>3FFh >YYYh >XXXh >000h |
Вільно |
>3Fh >20h >1Fh >18h >17h >08h >07h >00h |
>ОЗУ даних | |
Банк регістрівRB1 | ||||
>Подпрограмма | ||||
>8-уровневий стік | ||||
Програма, управляюча роботою системи | ||||
Банк регістрівRB0 |
Пам'ять команд Пам'ять даних
3. АЛГОРИТМ ФУНКЦІОНУВАННЯМИКРОПРОЦЕССОРНОЙ СИСТЕМИ.
>Укрупненная структурна схема алгоритму програми, керуючої процесором, зображено на рис. 3.1.
При включенні системи спочатку вона примусово перетворюється на режим занесення еталонного опору. Процесор зчитує зАЦП значення опору, записує їх у пам'ять і обнуляє все лічильники, у яких ведеться облік резисторів з певним допуском.
Далі йде установка і вимір опору чергового резистора.Считанное зАЦП значення опору піддається обробці процесором і обчислюється відсоток відхилення опору резистора від еталонного. Залежно від значення цього відхилення процесором видається команда роботу розміщення резистора у певному контейнері і підвищення на одиницю відповідного лічильника резисторів.
Далі аналізується стан перемикача “ЕТАЛОН”. Якщо він замкнутий, то знову виробляється заміна у пам'яті еталонного опору і обнуління лічильників. Якщо це перемикач розімкнений, то система починає обробку наступного резистора.
4. РОЗПОДІЛ РЕСУРСІВ
У регістріR0 банку 0 перебуває поточне еталонне опір. Інші регістри банку 0 використовуються в мері потреби для зберігання проміжних результатів тимчасової збереження вмісту акумулятора.
У регістріR0 банку 1 перебуває лічильник кількості резисторів з опором поза допуску.
У регістріR2 банку 1 перебуває лічильник кількості резисторів з відхиленням трохи більше 10% від еталона.
У регістріR2 банку 1 перебуває лічильник кількості резисторів з відхиленням трохи більше 10% від еталона.
У регістріR2 банку 1 перебуває лічильник кількості резисторів з відхиленням трохи більше 10% від еталона.
У регістріR2 банку 1 перебуває лічильник кількості резисторів з відхиленням трохи більше 10% від еталона.
У регістріR2 банку 1 перебуває лічильник кількості резисторів з відхиленням трохи більше 10% від еталона.
Через висновокР10 процесору повідомляється режим роботи:
сортування резисторів по допускам;
зміна еталонного опору.
Через висновокР20 роботу видається команда “встановити резистор”. Активне стан – 1.
Через висновокР21 роботу видається команда покласти резистор в контейнер “ПОЗАДОПУСКА”. Активне стан – 1.
Через висновокР22 здійснюється запускАЦП. Активне стан – 0.
Через висновкиР25,Р26,Р27,Р28 іР29 роботу видається команда покласти резистор в контейнер з допуском відповідно. Активне стан – 1.
На висновокТ0 від робота надходить 1, якщо резистор встановлено.
На висновокТ1 відАЦП надходить 1, коли дані готові до зчитуванню.
Програма у пам'яті починається з адреси000h.
ПРОГРАМА РОБОТИ СИСТЕМИ.
Адреса | Код | Кількість циклів | Мітка | >Мнемоника | Коментар | ||
000 002 003 004 008 >00А >00С >00D >00F 010 011 12 013 015 017 018 019 >01A >01B >01D >01E 020 021 023 024 026 027 028 >02A >02B >02C >02D >02E >02F 030 031 032 033 034 035 037 038 >03A >03B >03C |
14 70 >A8 >D5 >D8 00 BA 00 >BB 00 >C5 14 70 33 17 68 >AB 53 80 >C61B >FB 07 33 >AB >BC 64 >FB BA 00 >6B >E6 24 >1A >EC 20 >A9 97 >BB 08 F9 >F7 >A9 >FA >F7 >AA F8 33 17 >6A >A7 F6 38 F8 >EB2A F9 >F7 >A9 |
2 1 1 2 2 2 1 2 1 1 1 1 2 2 1 1 1 1 2 1 2 1 2 1 2 1 |
>Change:CallMeas >MOVR0.A >SELRB1 >MOVR0,00h >MOVR2,00h >MOVR3,00h >SELRB0 >Work:CALLMeas >CPL A. INC A >ADD A,R0 >MOVR3, A >ANL A,80H. >JZMul. >MOV A,R3 >DEC A >CPL A >MOVR3, A. >Mul:MOVR4,64h >MOV A,R3 >MOVR2,00h M1:ADD A,R3 >JNCM2 INCR2 >M2:DJNZR4, M1 >MOVR1, A >CLR З >MOVR3,08h >M3:MOV A,R1 >RLC A >MOVR1, A >MOV A,R2 >RLC A >MOVR2, A >MOV A,R0 >CPL A. INC A >ADD A,R2 >CPL З >JCM4 >ADD A,R0 >M4:DJNZR3,М3 >MOV A,R1 >RLC A >MOVR1, A |
;Виклик підпрограми виміру опору резистора ;Запам'ятаємо вR0 еталонне опір. ;>Подключим банк регістрівRB1. ;>Обнуление лічильника ;>Обнуление лічильника ;>Обнуление лічильника ;>Подключим банк регістрівRB0. ;Вимірювання опору резистора. ;>Инвертирование вмісту акумулятора ;>А=А+1А в додатковому коді. ;>Вичитаем з еталонного опору обмірюване:А=R0-А. ;>Спасаем А регістріR3 ;Перевіряємо знаковий біт ;ЯкщоА>0, то переходимо на міткуMul ;Відновимо вміст А. ;>А=А-1 ;>Инвертирование А; А- у прямому коді. ;Збережемо вміст А ;УR4- число повторень циклу- 10010 ;У акумуляторі- різницю між обмірюваним і еталонним ;опорами, узята по модулю. ;>Обнуление регіструR2 ;>А=А+R3. ;ЯкщоА+R3FFh, то переходимо на М2. ;Враховуємо перенесення (>А+R3>FFh). ;>Уменьшаем лічильник циклу. ЯкщоR4>0- повторюємо цикл. ;>Копируем акумулятор в регістрR1 ;Після множення в регістріR1 буде молодший байт ;твори, вR2- старший, т. е.R2R1=Nет-N*100. ;>Разделим вміст цієї пари регістрів насодержимой ;регіструR0 (еталон). ;>Обнуляем прапор перенесення. ;Лічильник циклу. ;ВА- молодший байт твори. ;>Циклический зрушення вліво через прапор перенесення. ;>R1=А ;ВА- молодший байт твори. ;>Циклический зрушення вліво через прапор перенесення ;>R2=А ;ВА- еталонневопротивление (дільник). ;>Инвертирование вмісту акумулятора >А=А+1 На додатковому коді ;>А=R2-А ;Инвертирование прапора перенесення ;Якщо прапор З встановлено, переходимо наМ4. ;>А=А+R0 ;>Уменьшаем лічильник циклу. ЯкщоR3>0, то повторюємо цикл. ;>А=R1 ;циклічний зрушення вліво через прапор перенесення. ; УR1- результат розподілу, т. е. відхилення у відсотках виміряного опору від еталонного. ;перевірка на належність до групі по допуску. |
|||
>03D >03F 041 042 043 044 046 047 049 >04A >04C >04E >04F 050 051 053 054 056 057 058 059 >05B >05C >05E >05F 060 062 |
03 F6 >E6 49 >D5 18 >C5 23 06 >3A 045C F9 03FB >E6 56 >D5 >1A >C5 23 44 >3A 045C >D5 >1B >C5 23 24 >3A 23 04 >3A 09 12 00 040D |
2 2 1 1 1 2 2 2 1 2 2 1 1 1 2 2 2 1 1 1 2 2 2 2 2 2 2 |
>P 10: >P 5: Mode: |
>ADD >JNC >SEL >IBC >SEL >MOV >OUTL >JMP >MOV >ADD >JNC >STL INC >SEL >MOV >OUTL >JMP >SEL INC >SEL >MOV >OUTL >MOV >OUTL IN >JB0 >JMP |
A.F6h >P10 >RB1 >R0 >RB0 A,06h >P2, A Mode A,R1 A,FBh >P5 >RB1 >R2 >RB0 A,44h >P2, A Mode >RB1 >R3 >RB0 A,24h >P2, A A,04h >P2, A A,P1 >Change >Work |
;>А=А-1010 ;ЯкщоА<1010, то переходимо наР10 ;>Подключаем банк регістрівRB1 ;>Увеличиваем лічильник резисторів “ПОЗАДОПУСКА” ;>Подключаем банк регістрівRB0 ;Встановлюємо 1-ї та 2-ї біти в одиницю ;Командароботу–положить резистор в контейнер “поза допуску” ;>Пропускаем інші відхилення ;>A=R1 ;>A=A–5 ;ЯкщоА<5, то переходимо наР5 ;>Подключаем банкрегисторовRB1 ;>Увеличиваем лічильник резисторів з відхиленням до 10% ;>Подключаем банк регістрівRB0 ;Встановлюємо в одиницю2–й і6–й біти ;Команда роботу – покласти резистор в контейнер “10%” ;Пропускаем відхилення 5% ;Подключаем банк регістрівRB1 ;>Увеличиваем лічильник резисторів з відхиленням до 5% ;Подключаем банк регістрівRB0 ; Встановлюємо в одиницю2–й і5–й біти ; Команда роботу – покласти резистор в контейнер “10%” ; Встановлюємо в одиницю лише2–й біт ;Знімаємо все активні сигнали з портуР2 ;Читаємо портР1 ;Нульовий біт встановлено уединицу–команда зміни еталона. ;Перевіряємо наступний резистор. |
|
070 072 073 075 077 079 >07В >07С >07Е >07D |
23 05 >3A 26 73 >9A 00 >8A 04 56 79 09 127B 08 83 |
2 2 2 2 2 2 2 2 2 2 |
>Meas: >W1: >W2: >W3: |
>MOV >OUTL >JNT0 >ANL >ORL >JT1 IN >JB0 >INS >RET |
A,05h >P2, A >W1 >P2,00h >P2,04h >W2 A,P1 >W3 A,Bus |
; Встановлюємо в одиницю0–й і2–й біти ; Команда роботу –встановити резистор ;Чекаємо установки резистора ;НаАЦП-сигнал “розпочати вимір” ;>Убираем все активні сигнали з портуР2 ;Чекаємо закінчення виміру ;Чекаємо вимикання режиму ; “еталонне опір” ;>Считиваем зАЦП значення опору ;Повернення в основну програму. |
|
До отриманої програмі важко буде вжити термін “швидкодія”, цього кілька причин:
У конкурсній програмі кілька затримок невизначений час ( ці затримки визначаються роботом);
Програма має сильно розгалужену структуру, а вибір галузі деяких випадках залежить від зовнішніх умов;
Програма є нескінченний цикл, т. е. програма виконується із моменту внесення системи та до вимикання.
А, щоб усе-таки оцінити швидкодія, зробимо деякі припущення: припустимо, що зовнішні устрою незатормаживают систему, т. е. якщо система видає запит в зовнішні устрою, результат приходить миттєво. Отже буде пораховано швидкодія власне програми.
Для визначеності приймемо, що систему працює у режимі сортування, еталонне значення вже занесено на згадку про й у вимірювач встановлено резистор з десятьма% допуском.
Оскільки програма зациклену, порахуємо кількість машинних циклів за прохід програми:
>2+210+14+2+2+14+2+1+2+1+(1+2+1+2)100+1+1+2+(111+2+1+2)8+1+1+1+2+2+2+1+2+2+1+1+1+2+2+2+1+1+1+27=812 циклів
До процесору підключений кварцовий резонатор на частоту 6 МГц, отже тактова частота процесора дорівнює 6/3=2 МГц; певний час самого такту одно 0, 5 мкс. Один машинний цикл дорівнює п'яти тактам, т. е. 2, 5 мкс.
Час виконання одного циклу програми одно8122, 5=2030 мкс » 2 мс.
6. КОНТРОЛЬНИЙ ПРИКЛАД
Напруга, подаване наАЦП, одноU=IетR;Iет = 0, 025 А
Вхідні дані:Rет =51Ом;Rизм = 53Ом;Uет =IетRет = 0, 025А51Ом = 1, 28 У
ЗАЦП на згадку прозапишеться число 128 =80h, т. е. (>R0) =80h
U =IетRет = 0, 025А53Ом = 1, 33 У
ЗАЦП в акумуляторзапишеться число 133 =85h.
Знаходимо модель різниці еталонного і виміряного опорів:
>Rет –>Rизм=128-133=-5=5
і саме з цієї формули працює написана вище програма.
Множимо різницю на 100:Rет –>Rизм100=500
Ділимо отримане число наRет/800/102 = 3, т. до. розподілцелочисленное.
Кількість, отримане програмою, і кількість, розраховане безпосередньо, досить близькі друг до друга.
Система розмістить даний резистор в контейнер з допуском 5%.
>ЗАКЛЮЧЕНИЕ
У процесі роботи було розроблено систему, здатна розсортувати партію резисторів по допускам 5, 10% і шлюб. Система також підраховує число резисторів кожного допуску.
У устрої передбачена можливість зміни еталонного опору, записаного у пам'яті, на зміну партії резисторів.
При кожному потраплянні резистора з відхиленням понад десять% система подає світловий сигнал.
Список літератури
>Микропроцессори. У3–х кн.Кн. 1. Архітектура і проектуваннямикро–ЭМВ. Організація обчислювальних процесів: Підручник для вузів. Під редакцією Л. М.Преснухина. – М.: Вищу школу, 1986 р.
>Калабеков Б. А.Микропроцессори та їх застосування в системах передачі й обробки сигналів: Навчальний посібник для вузів. – М.: Радіо і зв'язок, 1988 р.
У. М. Пильщіков.Програмирование мовою асемблер IBM PC. – М.: Діалог МІФІ, 1994 р.
Для підготовки даної праці були використані матеріали із російського сайтуreferat/
Нові надходження
Реклама
Контакти