Разделы сайта
Читаемое
Обновления Nov-2024
|
Промышленность Ижоры --> Станки механосборочного производства Переменные, используемые в подпрограмме, принадлежат одному из трех переменных классов: локальные, общие и системные. Принадлежность переменной тому или иному классу определяется ее номером. Например, переменные от # 1 до # 33 принадлежат классу локальных. Эти переменные соответствуют определенным адресам-аргументам в макрокоманде, и, следовательно, их значения действуют на период вызова подпрограмм. При следующем вызове их значения могут быть иными. Взаимное влияние различных макрокоманд через указанные переменные отсутствует. Для общих переменных выделены номера от #100 до #149 и от #500 до #509. Эти переменные сохраняют свои значения (если они не будут изменены) в пределах основной управляющей программы. Значения общих переменных могут быть стерты нажатием клавиши Исходное . Принадлежность системных переменных в устройстве ЧПУ зафиксирована. Этот класс заслуживает более подробного рассмотрения. Подкласс от #1000 до #1015 принадлежит входному шестнадцатибитному регистру, т. е. значения переменных определены соответствующими внешними двоичными сигналами. Переменная #1032 определена кодом входного регистра, т. е. читает все его разряды одновременно. Подкласс от #1100 до #1115 принадлежит выходному шестнадцатибитному регистру, т. е. значения переменных задают состояния соответствующих двоичных разрядов этого регистра. Переменная #1132 определяет код выходного регистра, т. е. задает состояния всех разрядов сразу. Подкласс от #2000 до #2099 принадлежит корректурам инструмента. Прочитав значения этих переменных, можно установить значения корректур. Приравнивая эти переменные другим, можно модифицировать корректуры. Переменные от #2500 до #2806 принадлежат корректурам заготовок, и использовать их можно точно так же, как и корректуры инструментов. Переменной #3000 придается номер i лампочки аварийной сигнализации, которая должна быть включена. Одновременно может быть запрограммирована генерация соответствующего аварийного сообщения на дисплее. Переменные #3001 и #3002 содержат накопленные результаты работы двух таймеров с ценой временной дискреты 1 мс и 1 ч соответственно. Показания таймеров сбрасываются при приравнивании переменных нулю. Рассмотрев классы переменных, перейдем к изложению правил их использования. Переменные используют либо непосредственно (например, #5, #109, #1005 и т. д.), либо в рамках сложных форм, таких, как # [<формула>] (например, #[#100], # [#\00- 1],#[#6/21 и т. д.). Численное значение, следующее за адресом, можно заменить переменной: F # 33, Z - # 18, G # 130 ... Такая замена возможна и на базе более сложной структуры: X (#24 -f #18 * [cos [#1]], Z- 1#18 + #26] и т.д. Из немногих приведенных примеров видно, что над переменными можно выполнять различные операции, в том числе одноместные, двухместные, комбинированные (многоместные), операции типа (условие), операции управления. Пример одноместной операции: #i = SIN [#j]. Другие функции, используемые в одноместных операциях: COS, TAN, ATAN. (arctg), SQRT (квадратный корень), ABS (абсолютное значение), BIN (преобразование из двоично-десятичного в двоичное представление), BCD (преобразование из двоичного в двоично-десятичное представление), ROUND (отбрасывание разрядов после запятой), FIX (уничтожение дроби, меньшей единицы), FUP (округление до единицы дроби, меньшей единицы). Пример двухместной операции: #i = #j + #к. Другие функции, используемые в двухместных операциях: -, *, /, OR (ИЛИ для каждого бита переменных), XOR (исключительное ИЛИ), AND (операция И). Комбинированные операции дополнительных пояснений, по-видимому, не требуют; достаточно привести такой пример: #i = = SIN [ [ [#j -f #к] * #1 -f #m] * #п]. Последовательность действий здесь соответствует общепринятой. К операциям типа <усло-вие> относятся EQ (равно), NE (не равно), GT (больше), LT (меньше), GE (больше или равно), LE (меньше или равно). К операциям управления относятся условный переход, безусловный переход, условная итерация (цикл), безусловная итерация. Конструкция условного перехода имеет вид: IF [(условие)! GOTO (адрес перехода), причем в качестве (адреса перехода) может выступать номер кадра подпрограммы, переменная или (формула). Конструкция безусловного перехода еще более проста: GOTO (адрес перехода). Конструкция условной итерации такова: WHILE [(условие)! DO (индекс итерации) (тело итерации) END (индекс итерации). Предусмотрены три (индекса итерации): 1, 2, 3; из этого следует, что допустимая глубина вложения итераций равна трем. Исполнение фрагмента (тело итерации) повторяется многократно циклически до тех пор, пока не будет выполнено условие. Конструкция безусловной итерации еще более проста: DO (индекс итерации) (тело итерации) END (индекс итерации). В качестве примера рассмотрим специальный цикл последовательного выхода в позицию сверления отверстий под болты в круглом фланце. Полагаем, что в исходном положении ось шпинделя совмещена с осью первого отверстия, координаты X, Y которого относительно центра известны и зафиксированы в качестве значений переменных #101 и 7102. В исходной макрокоманде необходимо задать R (радиус), А (величину начального угла), Н (число отверстий) (рис. 26.11). Таким образом, форма макрокоманды может быть такой: G65 Р9207 R (величина радиуса) А (начальный угол) Н (число отверстий). Приступая к разработке подпрограммы, зарезервируем необходимые переменные. Адресам R, А, Н в подпрограмме соответствуют © 2-е отверстие 1-P отверстие переменные #18, #1, #11, которые автоматически принимают значения, указанные в макрокоманде. Выделим дополнительные переменные: #100 - счетчик общего числа обработанных отверстий для всех деталей; #101 - координата X оси текущего отверстия относительно центра; #102 - координата Y оси текущего отверстия относительно центра; #30 - координата X оси первого отверстия относительно центра; #3.1 - координата Y оси первого отверстия относительно центра; #32 - переменная, указывающая на номер обрабатываемого отверстия в рамках одной детали; #33 - угол текущего отверстия. Текст подпрограммы принимает следующий вид: О 9207 (номер подпрограммы); #30 = = #101; #31 = #102 (запоминание координат первого отверстия); #32 = 1 (обрабатывается первое отверстие); WHILE [#32 LE ABS [#11)1 D01 (начало итерации,цель которой - последовательный обход отверстий; число отверстий соответствует значению переменной #1); #33 = #1 + 360 * [# 32 - 11/# 11 (угол текущего отверстия); #101 = #30 -f + #18* COS [#33] (коор- Piic. 26.1). Использование макроязыка для организации цикла последовательного выхода в позиции сверления дината X оси текущего отверстия); #102 = #31 +#18 *S1N (#33) (координата Y оси текущего отверстия); X #101; Y # 102 (выход в заданные координаты; здесь должно быть организовано прерывание для выполнения стандартного сверлильного цикла, который не рассматриваем); #32 = #32 + 1 (подсчет отверстий в цикле итерации); END1 (конец итерации); #101 = #30; #102 = #31 (возврат к исходным значениям переменных #101 и #102); М99 (конец подпрограммы). Вернемся к проблеме повышения языкового уровня управляющей программы..Из уже сказанного на эту тему следует: повышение языкового уровня, с формальной точки зрения, состоит в том, что детализированные описания многих действий вынесены из текста основной управляющей программы, а сами действия представлены в тексте лишь своими наименованиями или макроопределениями. Это позволяет во многих случаях резко упростить процедуру подготовки управляющей программы. Одновременно нужно сознавать, что программирование на языке повышенного уровня предполагает макрорасширение в процессе обработки исходного текста в самом устройстве ЧПУ, и это требует дополнительного математического обеспечения. Очередным средством повышения языкового уровня является упрощение описания контура. Такое упрощение позволяет сосредоточить в одном кадре описание двух-трех и даже большего числа 1* Jf?V7? > ./I...A>... [m Н...А.,Л2.., {Ш Zj Ъ... Н . 602(urn G03)r...K.. л N..X3...Z3 B...Xj... (u/IUZi) N...A..j2.,.{am2i)B... UmAj...fl2-h- 3- E.Ji..J2.,J3, Z3. B-.,. V... Zj.., Щ, J, X Zf\ tf..J2.uZfuB... N... Xj.-.Zy., М...А,...Дг...Хз... Zj... B... M 4..Z... /jn.Zj... /,Z.j *j.Zj 7-> - , Z XuZt Z N... Xi... Zj... Zj... B2... X1.Z3 %,Zt N..:002(Ш603]В...A...X3... H...A1,..Аг-Xi..,Zy..Bf!..b£.,. H...Б02(т603)T,. Ki, Tj,., Zf.,. t/u. Хч2..г KjilXjuuZi- Рис. 26.12. Способы упрощенного задания контура детали иа основе данных чертежа Xt.Zi Z N...A,...Ai...Xj,.,Zj.uu...8., смежных участков. Наиболее важным здесь является то, что удается избежать расчетов тех размеров, относящихся к точкам сопряжения, которые не проставлены на чертеже (т.е. заданы косвенно). При этом возникает возможность вводить описание контура непосредственно с чертежа через клавиатуру панели управления. Как правило, подобие процедура вполне доступнаоперору торые способы упрощенного задания фрагментов контура. Точки пересечения прямолинейных участков контура могут быть заданы либо координатами (в абсолютных или относительных размерах), либо посредством угла. Точки сопряжения прямой с окружностью, двух окружностей могут быть определены самой системой управления. Расчеты, относящиеся к участкам сопряжения (фаски, скругления), выполняются автоматически. Таким образом, устройство ЧПУ взамен одного блока упрощенного задания фрагмента контура должно сгенерировать несколько кадров программы на языке ISO прежде, чем начнется воспроизведение управляющей информации. Дополнительным средством повыщения языкового уровня управляющих программ может послужить так называемое безэквидистантное программирование, позволяющее описывать лишь требуемый контур, а параметры инструмента вводить в качестве корректирующих. Подобная проблема не так проста, как это может показаться на первый взгляд; и это проиллюстрировано с помощью рис. 26.13, на котором показаны контуры плоских деталей и траектории центра фрезы, причем контуры и траектории не эквивалентны. При безэквидистантном программировании в некоторые кадры приходится вставлять дополнительные кадры (от одного до трех) на основе анализа двух смежных участков. Некоторые вычислительные задачи, которые,необходимо решать при безэквидистантном программировании, рассмотрены на оис. 26 14. Коррекция на радиус фрезы может быть включена в начале программы (функцией G42 на рис. 26.14, а-в) или выключена при завершении программы (функцией G40 на рис. 26.14, г-з); Рис. 26.13. Сравнение контуров обрабатываемых деталей с программируемой траекторией центра фрезы
|
© 2003 - 2024 Prom Izhora
При копировании текстов приветствуется обратная ссылка |