Операторы безусловного перехода
Для создания циклов и ветвлений программы используются операторы безусловного перехода (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. Блок-схема работы программы