Програма за линейна интерполация по метода на диференциалните нарастъци



Дата02.02.2018
Размер96.4 Kb.
#53215
ТипПрограма
УПРАЖНЕНИЕ No3
РАЗРАБОТКА НА ПРОГРАМА ЗА ЛИНЕЙНА ИНТЕРПОЛАЦИЯ ПО МЕТОДА НА ДИФЕРЕНЦИАЛНИТЕ НАРАСТЪЦИ
Цел на упражнението:

Въз основа на придобитите теоретични познания да се разработи и тества програма за линейна интерполация по метода на диференциалните нарастъци.



I. ЗАДАНИЕ

1. Да се разучи блок-схемата на алгоритъма за линейна интерполация по метода на диференциалните нарастъци.

2. Да се разучи асемблерския текст на програмата за линейна интерполация по метода на диференциалните нарастъци.

3. Да се въведе програмата в персоналния компютър и да се тества. Да се начертае отсечка по зададени начална и крайна точки и скорост.



Допълнителни задачи


1. Да се начертае чрез разработената програма начупена линия, състояща се от отсечки.

2. Да се увеличи диапазона на регулиране на скоростта.

3. Да се добави програмен модул за чертане на начупена линия по зададени координати на опорни точки.

II. ТЕОРЕТИЧНИ ПОЯСНЕНИЯ

Интерполаторът е устройство, което по зададени координати на две точки - начална и крайна, и вид на кривата, която трябва да ги свърже, изчислява координатите на всички междинни точки. Когато кривата е част от права, интерполацията е линейна, а ако е част от окръжност - кръгова.

Теоретически между две точки, лежащи върху дадена крива има безброй точки, който лежат върху същата крива. На практика при управление на работните органи на металорежещите машини или други устройства /например плотери/ броят на точките се ограничава от дискретността, с която работи изпълнителното устройство. Дискретността се определя от най-малкото разстояние /една дискрета/, което може да се отработи. Следователно две съседни точки ще бъдат отдалечени една от друга на разстояние една дискрета. В най-общия случай, ако стойността на едната координата на точка, лежаща върху зададената крива, съдържа цяло число дискрети, то стойността на втората й координата е число с цяла и дробна част. При определяне на координатите дробната част се пренебрегва. В резултат получените точки образуват начупена линия, която се различава от зададената крива като най-голямото отклонение е най-много една дискрета.

За да се обоснове методът на диференциалните нарастъци се изхожда от математическото описание на кривата, която трябва да се интерполира.

Уравнението на права, преминаваща през две точки /фиг. 3.1/ се дава с израза:

/3.1/

или при YН = XН = 0:



, /3.1а/

където ХН, YН са координатите на началната точка,

ХК, YК са координатите на крайната точка,

x, y са координатите на текущата точка,

Х = ХК –ХН, Y = YК – YН са нарастъците, които трябва да се отработят по съответните оси.

Координатната система от фиг. 3.1 отговаря на разположението на координатните оси в системата на персоналния компютър.

Процесът на интерполиране се свежда до задачата: при известни координати на една точка /Х1, Y1/ да се определят координатите на съседната точка /X2, Y2/.

Съседна точка е тази, която е отдалечена от дадената на разстояние една дискрета по една от двете координатни оси и лежи върху кривата, зададена с /3.1/ и минаваща през точката /X1, Y1/.

Координатите /Х2, У2/ могат да се получат по следния начин:

/3.2.1/

/3.2.2/

За изчисляването на /3.2/ е необходимо да се знаят производните х и y. За определянето им се използва /3.1/. След диференцирането на /3.1/ се получава:



/3.3/

или


/3.3a/

Изразът /3.3а/ може да се разглежда като получен чрез почленно деление на равенствата:



/3.4.1/

/3.4.2/

Изразите /3.4/ се използват за изчисляване на координатите на съседните точки според /3.2/.

За да се ускори изпълнението на операцията интерполиране се разработват алгоритми, при които изчисленията се свеждат до използване само на операциите сумиране и изваждане. Известно е, че интегрирането може да се замени със сумиране. Изразът /3.2/ се преобразува във вида:

/3.5.1/

/3.5.2/

или


/3.6.1/

, /3.6.2/

където n = t/t, k = kt

Стойността на параметъра t от /3.2/, съответно на n от /3.5/ се избира така, че поне една от разликите /X2 - X1/ и /Y2-Y1/ (стойността на члена, съдържащ сумата) да стане равна на единица.

Константата k определя мащаба, в който ще се използват нарастъците X и Y. Нейният избор зависи от броя на разрядите на изчислителното устройство и от разрядността на нарастъците. Необходимо е изчислителното устройство да отговаря на условието броят на неговите разряди да е равен или по-голям от броя на разрядите на нарастъците. Ако изчислителното устройство е 8 разрядно, най-малката стойност на константата е k = 1/256. При нарастъци с по-малко разряди може константата да се увеличи като се умножи с число, равно на някоя от степените на 2. Тази възможност позволява да се ускори изчислителния процес когато и двата нарастъка X и Y имат нули в най-старшия разряд. Ако се получи такъв случай, X и Y се умножават едновременно по 2 до тогава, докато в най-старшия разряд на кое да е от тях се получи единица. Тази операция, имаща характер на нормализиране, може да се извършва преди всяко сумиране.

Съгласно метода на диференциалните нарастъци координатите на всяка следваща точка се получават като към стойностите на координатите на текущата точка се прибавят достатъчно малки нарастъци, пропорционални на разликите между координатите на началната и крайната точки, докато поне една от координатите нарасне с една цяла единица.

Горното правило може да бъде реализирано от изчислително устройство /фиг.3.2/, което съдържа два суматора, шест регистъра и управляващо устройство. Два от регистрите /Р1, Р2/ се използват за съхраняване на нарастъ- ците X и Y, другите два /Р3, Р4/ са за съхраняване на координатите на текуща- та точка XT, YT и третите два /P5, Р6/ съдържат число, което показва колко дискрети остават до края на интерполирането по съответната ос /KOX, KOY/.

П
реди започване на интерполацията се изчисляват стойностите на X и Y и се зареждат в регистрите Р1, Р2, Р5 и Р6. В регистрите Р3 и Р4 се зареждат координатите на началната точка XН и YН. Суматорите SX и SY се нулират.

фиг. 3.2


Интерполирането се извършва под управлението на управляващото устройство УУ, което при получаване на сигнал "старт" започва да изработва тактови импулси. При всеки тактов импулс суматорите SX и SY извършват сумиране на съдържанието си съответно със съдържанието на регистрите Р1 и Р2 - X или Y. Ако се получи пренос съдържанието на регистрите Р3 и Р4, съдържащи текущите координати ХТ и YТ, се увеличава с единица, а съдържанието на регистрите Р5 и Р6 за край на интерполирането се намалява с единица. Когато съдържанието на Р5 и Р6 стане равно на нула се изработва сигнала "край", с което се посочва, че интерполирането е достигнало до крайната точка /XК,YК/.

В резултат на интерполирането устройството, показано на фиг.3.2, изра- ботва необходимата информация за точките, намиращи се върху дадена права, ограничена от начална точка /ХН, YН/ и крайна точка /XК, YК/. Тази информация се предоставя в два вида: като последователност от стойности за координатите на междинните точки /изходите XТ, YТ/ и като последователност от импулси за нарастъците на координатите на междинните точки /изходите X, Y/.

Обикновено интерполаторите изработват информация само от единия вид, като това се определя от типа на изпълнителното устройство на съответната система за цифрово-програмно управление.

ф
иг. 3.3

За нуждите на цифрово-програмното управление е необходимо изработването на информацията за координатите на междинните точки да се свърже със скоростта на движение на изпълнителното устройство. Тази задача се решава от блока за задаване на скоростта /БЗС/. На фиг. 3.3 е показано едно решение, при което за управление скоростта на изпълнителното устройство се използва следния алгоритъм: на входа на блока за задаване на скоростта /БЗС/ постъпва стойността на функцията F. По сигнала "начало" БЗС започва да изработва поредица от стартови импулси с честота, съответстваща на стойността на функцията F. Импулсите от тази поредица прехвърлят информацията от изхода на интерполатора към изпълнителното устройство и стартират интерполатора за започване изчислението на координатите на следващата точка. Когато изчислението завърши, работата на интерполатора се спира до идването на следващия стартов импулс. За подържането на постоянна контурна скорост е необходимо БЗС да изработва стартови импулси с различна пауза между тях. Ако на изхода на интерполатора е било изчислено преместване и по двете оси, продължителността на паузата трябва да бъде 1,4 пъти по-голяма от тази при случая, когато е изчислено преместване само по една от осите.

III.УКАЗАНИЯ ЗА ИЗПЪЛНЕНИЕ НА ЗАДАНИЕТО

П
ри провеждане на упражнението като изчислително устройство, което ще извършва линейна интерполация по метода на диференциалните нарастъци ще се използва микропроцесорно изчислително устройство–персонален компютър. Той ще изпълнява и ролята на изпълнително устройство, което ще отработ- ва премествания в точките с изчислени координати. Вместо премествания компютърът ще извършва чертане на точка върху екрана в графичен режим.

фиг. 3.4

Функциите на регистрите и суматорите от блоковата схема на интерполатора ще се изпълняват от акумулатори на микропроцесора и клетки от паметта. Клетките SX и SY са суматорите за съответните координатни оси. Клетките DDX и DDY изпълняват функцията на регистрите Р1 и Р2, които съдържат нарастъците X и Y, а клетките KOX и KOY - на регистрите Р5 и Р6, съдържащи броя дискрети, които остават до края на интерполирането по съответната ос. Акумулаторите на микропроцесора CX и DX изпълняват функцията на регистрите Р3 и Р4, като CX съдържа координатата на текущата точка XТ, а DX - координатата на текущата точка YТ.

Алгоритъмът, по който ще работи изчислителното устройство обхваща следните действия:

1. Подготовка на данни за изчислителното устройство:

- изчисляване и зареждане на DDX = XК - XН, KOX = DDX

- изчисляване и зареждане на DDY = YК - YН, KOY = DDY

2. Подготовка на изчислителното устройство:

- нулиране на SX и SY

- зареждане на CX = XН, DX = YН

- нулиране на помощните клетки

3. Подготовка на персоналния компютър

- преминаване в графичен режим

- задаване на цвят на точката

4. Чертане на точка

5. Изработка на закъснение

6. Проверка за край

7. Прибавяне на нарастъка DDX към суматора SX

SX = SX + DDX

8. Проверка за пренос

8.1. При наличие на пренос:

- увеличаване на текущата координата по Х с единица

ХТ = ХТ + 1

- намаляване на регистъра KOX с единица

KOX = KOX - 1

- увеличаване на флага FLAG с единица

FLAG = FLAG + 1

- преход към точка 9

8.2. При липса на пренос:

- преход към точка 9

9. Прибавяне на нарастък DDY към суматора SY.

SY = SY + DDY

9.1. При наличие на пренос:

- увеличаване на текущата координата по Y с единица

YТ = YТ + 1

- намаляване на регистъра KOY с единица

KOY = KOY - 1

- увеличаване на флага FLAG с единица

FLAG = FLAG + 1

- преход към точка 10

9.2. При липса на пренос:

- преход към точка 10

10. Проверка на флага FLAG

10.1 при FLAG = 0 преход към точка 6

10.2 при FLAG = 1 преход към точка 4

Горният алгоритъм е показан на фиг. 3.4, а програмата, реализираща ал- горитъма и написана на асемблер за микропроцесора I8086 - на края на текста.

IV. КОНТРОЛНИ ВЪПРОСИ

1. Каква е същността на метода за линейна интерполация чрез диференциалните нарастъци?

2. Каква е блоковата схема на интерполатор, работещ на апаратен принцип?

3. Какви действия трябва да се извършат при програмната реализация на интерполатора?

4. Какви са резултатите от тестването на програмата?

5. Как може да се определи времето за изчисляване на една дискрета?

6. Каква максимална скорост може да се постигне с даденото изчислително устройство и разработената програма?
V. ЛИТЕРАТУРА
1. Записки по дисциплината “Електронни устройства за цифрово програмно управление”

2. Брадли Д., “Програмиране на Асемблер за персонален компютър IBM/PC”, София, ДИ “Техника”, 1989.


ПРОГРАМА ЗА ЛИНЕЙНА ИНТЕРПОЛАЦИЯ ПО

МЕТОДА НА ДИФЕРЕНЦИАЛНИТЕ НАРАСТЪЦИ

STAACK SEGMENT PARA STACK

DB 300H DUP (0)

SB LABEL WORD

STAACK ENDS


CODE SEGMENT PARA PUBLIC

ASSUME CS:CODE,DS:CODE,SS:STAACK


XH DW 0

YH DW 0


XK DW 200

YK DW 99


SPEED DW 00FFH

SX DW ?


SY DW ?

DDX DW ?


DDY DW ?

KOX DW ?


KOY DW ?

FLAG DW ?


START:

PUSH CS


POP DS

MOV AH,0 ЗАДАВАНЕ НА ГРАФИЧЕН РЕЖИМ

MOV AL,5

INT 10H
MOV AX,XK ИЗЧИСЛЕНИЕ DX

SUB AX,XH

JNC M1


JMP EXIT

M1: MOV DDX,AX

MOV KOX,AX
MOV AX,YK ИЗЧИСЛЕНИЕ DY

SUB AX,YH

JNC M2

JMP EXIT


M2: MOV DDY,AX

MOV KOY,AX

MOV CX,XH ПОДГОТОВКА КЛЕТКИ

MOV DX,YH

MOV SX,0

MOV SY,0


MOV FLAG,0

L1:


MOV FLAG,0 ИЗВЕЖДАНЕ ТОЧКА

MOV AH,0CH

MOV AL,3

MOV BH,0


INT 10H
MOV AX,SPEED ЗАКЪСНЕНИЕ

D1: NOP


DEC SPEED

JNZ D1


MOV SPEED,AX

L2:


CMP KOX,0 ПРОВЕРКА ЗА КРАЙ

JNZ L6


CMP KOY,0

JZ EXIT

JMP L5


L6:

MOV AX,SX СУМИРАНЕ В SX

ADD AX,DDX

MOV SX,AX

JNC L3

INC CX


DEC KOX

INC FLAG


L3: CMP KOY,0

JZ L4


L5: MOV AX,SY СУМИРАНЕ В SY

ADD AX,DDY

MOV SY,AX

JNC L4


INC DX

DEC KOY


INC FLAG

L4:


CMP FLAG,0 ТЕСТВАНЕ ФЛАГ

JZ L2


JMP L1

EXIT:


MOV AH,0 ПРОВЕРКА ЗА НАТИСНАТ БУТОН

INT 16H


MOV AH,0 ВРЪЩАНЕ В ТЕКСТОВ РЕЖИМ

MOV AL,3


INT 10H

MOV AX,4C00H ВРЪЩАНЕ В DOS

INT 21H
CODE ENDS

END START








Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница