Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vo_vremya_praktiki_v_laboratorii_kafedry.docx
Скачиваний:
10
Добавлен:
09.02.2015
Размер:
1.64 Mб
Скачать

Операторы безусловного перехода

Для создания циклов и ветвлений программы используются операторы безусловного перехода (JMP_LBL). Вид инструкции:

JMP_LBL[i], где i – номер метки, в которую необходимо осуществить переход.

LBL[i] – инструкция описывающая метку, i – номер метки.

Пример 1:

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

Пусть имеется программа

1: JP[1] 100% FINE

2: J P[2] 100% FINE

3: JP[3] 100% FINE

[END]

Добавим в программу следующие операторы

1: R[1] = 0

В данном примере –R[1] – регистр выступающий в качестве счетчика. Начальное значение регистра ноль.

Инструкция JMP_LBL[1] (безусловный переход) – переводит выполнение программы в метку 1 (строка 2). Таким образом блок кода реализующий обход трех точек (строки 3, 4, 5) будет выполняться бесконечное количество раз. Причем в регистре номер 1 будет содержаться число выполненных итераций.

2: LBL[1]

3: J P[1] 100% FINE

4: J P[2] 100% FINE

5: J P[3] 100% FINE

6: R[1] = R[1] + 1

7: JMP_LBL[1]

[END]

Добавление инструкции безусловного перехода

Для перемещения к метке например JMPLBL[4]или установки метки нужно нажать F1 (INST) и выбрать в открывшемся меню - JMP/LBL. Откроется меню (Рис.5).

Рис.5. Меню меток

Оператор if

Условный оператор IF служит для ветвления программы.

Пример 2:

Для примера 1 из предыдущей главы написать условие при котором выход из цикла осуществляется после 3й итерации.

1: R[1] = 0 // регистр играющий роль счетчика

2: LBL[1] // метка LBL[1], начало цикла

3: JP[1] 100% FINE // движение в точку P[1]

4: JP[2] 100% FINE // движение в точку P[2]

5: JP[3] 100% FINE // движение в точку P[3]

6: R[1] = R[1] + 1 // прибавление к регистру-счетчику единицы

7: IF (R[1] <> 3), JMP_LBL[1] // условный переход в метку LBL[1]

8: JP[4] 100% FINE // движение в точку P[4]

[END]

Из примера видно, что в 7 строке происходит ветвление кода, то есть, в зависимости от значения регистра 1 может выполниться либо блок кода обхода трех точек, либо переход в точку P[4].

Блок-схема работы данной программы представлена на рисунке 6.

Рис.6. Блок-схема программы с условным переходом

Позиционный регистр

Служит для хранения значений координат точек. Обозначается PR[i]

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

Доступно 100 регистров.

Возможны следующие арифметические операции

PR[…] = …+… подсчет (суммирование)

PR[…] = …-… вычитание

PR[…] = …*… умножение

PR[…] = …/… деление

PR[…] = …DIV… целочисленное деление

PR[…] = …MOD… остаток после деления.

Кроме того операции:

  • Смещения – PR[i]-(регистр), например PR[n]=PR[m];

  • смещение по отдельной оси - PR[i,j]=(регистр)(оператор)(регистр), например PR[1,2]=1500.

  • Арифметическая операция для оси PR[i,j]=()параметр)(оператор)(параметр), например PR[1,2]=PR[1,2]+100.

i- номер позиционного регистра

j – обозначение координаты.

j=1 X

j=2 Y

j=3 Z

j=4 W

j=5 P

j=6 R

НапримерPR[2,3]= 100 – это присвоение значения 100 координате Z находящейся во втором позиционном регистре.

Пример 1:

Рассмотрим программу, которая обходит 3 точки в плоскости XOY 6й пользовательской системы координат, образующие прямоугольный треугольник с катетами 40 и 60.

Предполагаем, что в позиционном регистре номер 10 записаны координаты точки на плоскости XOY (в системах UF=6, UT=4).

1: UFRAME_NUM=6 ;

2: UTOOL_NUM=4 ;

3: J PR[10] 100% FINE ; // двигаться в точку с координатами PR[10]

4: PR[10,1]=PR[10,1]-60 ; // вычесть 60 из значения координаты Х PR[10]

5: L PR[10] 500mm/secFINE ; // двигаться в точку с координатами PR[10]

6: PR[10,2]=PR[10,2]+40 ; //прибавить 40 к значению координаты У PR[10]

7: L PR[10] 500mm/secFINE ;// двигаться в точку с координатами PR[10]

8: PR[10,1]=PR[10,1]+60 ; //вернуть координате Х PR[10] начальное значение

9: PR[10,2]=PR[10,2]-40 ; //вернуть координате У PR[10] начальное значение

10: L PR[10] 500mm/secFINE ;// двигаться в точку с координатами PR[10]

Результат работы программы представлен на рисунке 7.

Рис.7. Результат работы программы

Отметим так же, что позиционный регистр хранит лишь числовые значения координат X Y Z W P R, поэтому один и тот же регистр можно использовать в разных системах координат.

Пример 2:

Рассмотрим программу, которая рисует треугольник из примера 1 в двух разных пользовательский системах координат:

Предполагаем что регистр PR[11] хранит значения точки на плоскости XOY (координата Z равна нулю).

1: UFRAME_NUM=6 ;// активная пользовательская система координат

2: UTOOL_NUM=4 ;// активная система координат инструмента

3: R[100]=0 ; //регистр-счетчик

4: LBL[1] ; //метка LBL[1], начало цикла

5: PR[10] = PR[11] ; //начальная точка

6: JPR[10] 100% FINE ; // в точку с координатами PR[10]

7: PR[10,1]=PR[10,1]-60 ; // смещение PR[10] по оси X на 60

8: LPR[10] 500mm/sec FINE ; // в точку с координатами PR[10]

9: PR[10,2]=PR[10,2]+40 ; // смещение PR[10] по оси Y на 40

10: LPR[10] 500mm/sec FINE ; // в точку с координатами PR[10]

11: PR[10,1]=PR[10,1]+60 ; // смещение PR[10] по оси X на 60

12: PR[10,2]=PR[10,2]-40 ; // смещение PR[10] по оси Y на 40

13: LPR[10] 500mm/sec FINE ; // в точку с координатами PR[10]

14: UFRAME_NUM=7;// смена активной пользовательской системы координат

15: R[100]=R[100] + 1 ; // прибавление к регистру-счетчику единицы

16: IF (R[100] <> 2) JMP_LBL[1] // условный переход в метку LBL[1]

В результате выполнения данной программы, блок кода для рисования треугольника (строки 4-16) будет выполнен дважды (регистр R[100] выступает в роли счетчика, а оператор IF на 16 строке обеспечивает выход из цикла после второй итерации). Причем в первый раз данный блок кода будет выполняться при активной системе координат UF6 (строка 1), второй раз треугольник будет нарисован в плоскости XOY системы координат UF7 (строка 14).

Блок-схема работы программы представлена на рисунке 8.

Рис.8. Блок-схема работы программы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]