Условное выполнение ( IF THEN) — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Условное выполнение ( IF THEN)

2020-11-19 92
Условное выполнение ( IF THEN) 0.00 из 5.00 0 оценок
Заказать работу

Выполнение операторов управления может также быть достигнуто использованием конструкции IF THEN. Формат следующий:

IF [<conditional expression>] THEN<statement>;

 

Этот формат традиционно используется для условных операторов присваивания, таких как:

 

IF [#590 GT 100] THEN #590=0.0;

 

Здесь переменная #590 устанавливается на ноль, когда значение #590 превышает 100.0 В управлении, если условный оператор вычислен как FALSE (0.0), то остаток блока IF игнорируется. Это значит, что операторы управления могут также быть обусловлены, поэтому можно написать следующим образом:

 

IF [#1 NE #0] THEN G1 #24 Y#26 F#9;

 

Это выполняет линейное перемещение, только если переменной #1 присвоено значение. Вам надо попробовать что-либо подобное этому:

 

IF [#1 GE 180] THEN #101=0.0 М99;

 

Это говорит, что, если переменная #1 (адрес А) больше или равна 180, то переменная #101 устанавливается на ноль и возвращается из подпрограммы.

 

Здесь есть пример утверждения IF, которое переходит, если переменная была инициализирована для содержания значения. В ином случае обработка будет продолжаться и будет создан сигнал тревоги. Помните, что когда сигнал тревоги создается, выполнение программы останавливается.

 

N1 IF [#9NE#0] GOTO3 (TEST FOR VALUE IN F);

N2 #3000=11(NO FEED RATE);

N3 (CONTINUE);

 

Итерация/организация циклов (WHILE DO END)

Существенным для всех языков программирования является возможность выполнять последовательность утверждений заданное количество раз или выполнять цикл через последовательность утверждения, пока не встретится условие. Традиционное G-программирование позволяет это с использованием L-адреса. Подпрограмма может быть выполнена любое количество раз посредством использованием L-адреса.

 

М98 Р2000 L5;

 

Это ограничено, так как вы не можете прекратить выполнение подпрограммы по условию. Макросы позволяют больше гибкости с конструкцией WHILE-DO-END.

Синтаксис следующий:

 

WHILE[<conditional expression>]DOn;

<statement>;

ENDn;

 

Это выполняет утверждения между DOn и ЕNDn столько, сколько условное выражение вычислено как TRUE. Скобки в выражении необходимы. Если выражение вычислено как FALSE, то блок после ENDn выполняется следующим. WHILE может быть сокращено до WH. Часть утверждения DOn-ENDn - это подобранная пара. Значение n: 1...3. Это значит, что не может быть более трех вложенных циклов в подпрограмме. Вложение - это, в основном, цикл внутри цикла. Хороший пример использования вложения циклов WHILE -это определение матрицы.

 

#101=3;

3102=4;

GOX#101 Y4;

F2.5;

WH[#101 GTO]D01;

#102=4;

WH[#102GTO]DO2; G81 X#101 Y#102X-0.5;

#102=#102-1; END2;

#101=#101 -1; END1;

M30;

 

Эта программа сверлит матричную 3x4 схему расположения отверстий.

 

Хотя вложение утверждений WHILE может быть только на три уровня, в действительности нет ограничения, так как каждая подпрограмма может иметь до трех уровней вложения. Если случается необходимость вложения на более 3 уровней, то сегмент, содержащий три нижних уровня вложения, может быть сделан подпрограммой, тем самым преодолевается ограничение.

 


Если в подпрограмме есть два отдельных цикла WHILE, они могут использовать одинаковый индекс вложения. Например:

 

#3001=0 (WAIT 500 MILLISECONDS); (ожидание 500 миллисекунд)

WH [#3001 LT 500] D01;

END1;

<other statements> (другие утверждения)

#3001=0 (WAIT 300 MILLISECONDS); (ожидание 300 миллисекунд)

WH [#3001 LT 300] D01;

END1;

Это правильный код.

 

Вы можете использовать GOTO для перехода из зоны, окруженной DO-END, но вы не можете использовать GOTO для перехода в нее. Допускается использование GOTO для перехода внутри зоны DO-END.

 

Бесконечный цикл может быть выполнен удалением WHILE и выражения. Поэтому

D01;

<statements>

END1;

Выполняет, пока не нажата клавиша RESET.

 

ВНИМАНИЕ! Следующий код может создавать помехи:  

WH [ #1 ] D01;

END1;

В

ыше сигнал тревоги, указывает, что не найдено "then", здесь "then" изначально устанавливается на D01. Изменить D01 (ноль) на D01 (буква О).

 

 

СВЯЗЬ С ВНЕШНИМИ УСТРОЙСТВАМИ - DPRNT []

Макро позволяют дополнительные возможности связи с периферийными устройствами. Можно делать оцифровку деталей, обеспечивать отчеты осмотра прогона программы или синхронизировать управление с устройствами пользователя. Предназначенные для этого программы: POPEN, DPRNT[ ] и PCLOS.

 

Команды подготовки связи

POPEN и PCLOS не требуются для фрезерных станков. Программы от различных управлений могут входить в порты Haas. На некоторых управлениях POPEN требуется перед использованием утверждения PDPRNT. POPEN подготавливает устройство на последовательном порте, посылая ему код DC2. PCLOS прерывает связь с внешними устройствами, посылая код DC4.

 

Форматный вывод

Утверждение DPRNT позволяет программисту посылать форматированный текст на последовательный порт. Любой текст и любая переменная могут быть распечатаны на последовательном порте. Переменные могут быть форматированы. Форма утверждения DPRNT следующая:

 

DPRNT[<text> <#nnnn[wf]>...];

 

DPRNT должна быть единственной командой в блоке. Как указано выше, <text> (текст) - это любой символ от А до Z или знаки (+, -, /, * и пробел). Когда звездочка - вывод, она преобразовывается в пробел. <#nnnn[wf]> - это переменная, за которой следует формат. Номером переменной может быть любая действительная макро-переменная. Формат [wf] требуется и состоит из двух цифр внутри квадратных скобок. Помните, что макро-переменные - это действительные числа с целой частью и дробной частью. Первая цифра в формате обозначает общее число мест, зарезервированных в выводе для целой части. Вторая цифра обозначает общее число мест, зарезервированных для дробной части. Общее число мест, зарезервированных для вывода, не может быть равно нулю или больше восьми. Поэтому следующие форматы недействительны:

 

[00] [54] [45] [36] /* недействительный формат */

 

Десятичная точка печатается между целой частью и дробной частью. Дробная часть округляется до последнего значимого знака. Когда для дробной части зарезервированы нулевые знаки (разряды), то десятичная точка не печатается. Конечные нули (нулевые младшие разряды) распечатываются при необходимости, если есть дробная часть. По меньшей мере один знак резервируется для целой части, даже если здесь используется ноль. Если значение целой части имеет меньше цифр, чем было зарезервировано, то на выходе пробелы. Если значение целой части имеет больше цифр, чем было зарезервировано, то поле расширяется, чтобы эти номера были напечатаны.

 

Возврат каретки посылается после каждого блока DPRNT.

 

Примеры DPRNT []

#1= 1.5436;

DPRNT[X#1[44]*Z#1[03]*T#1[40]];

вывод: X1.5436 Z 1.544 T 1

DPRNT[***MEASURED*INSIDE*DIAMETER***];

вывод: MEASURED INSIDE DIAMETER

DPRNT[];

вывод: (без текста, только возврат каретки)

#1=123.456789;

DPRNT[X-#1[25]];

вывод: X-123.45679;

 

 

ВЫПОЛНЕНИЕ

Утверждения DPRNT выполняются во время интерпретации блока. Это означает, что программист должен быть осторожен с местами программы, где появляется утверждение DPRNT, особенно, если намеревается распечатать информацию о позициях. В основном, программу интерпретируют с предварительным просмотром многих блоков, чтобы избежать пауз между перемещениями.

 

G103 полезна для ограничения предварительного просмотра. Если вы хотите ограничить интерпретацию с предварительным просмотром 1 блока, вы включаете следующую команду в начале вашей программы (Это меняет действительный результат в предварительном просмотре 2 блоков).

 

G103 P1;

 

Чтобы отменить ограничение предварительного просмотра, задайте G103 РО; G103 не может использоваться, когда коррекция на режущий инструмент запущена.

 



Поделиться с друзьями:

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.