Вы находитесь на странице: 1из 35

Раздел 2.

Pro/NC-GPOST
УПРАЖНЕНИЯ

2-1
– page intentionally left blank –

2-2
Упражнение 1

Создание и настройка постпроцессора для 3-х


осевого фрезерного станка
Цель это упражнения ознакомление с Optfile, Pro/NC-GPOST анкетой. Начните с
существующей конфигурацией по умолчанию, создайте новый постпроцессор для
обычного 3-х осевого горизонтального фрезерного станка со стойкой FANUC 15M.

Шаги:

1. Загрузите модель pplab1.mfg.

2. Запустите модуль Pro/NC-GPOST’s Optfile, Application (Приложения)>


NC Postprocessor (Постпроцессор ЧПУ).

3. Создайте новый постпроцессор :

4. Выберите Mill в качестве типа постпроцессора.

5. Введите номер постпроцессора 1 (Machine Number). Ваш постпроцессор будет


иметь имя UNCX01.P01.

2-3
6. Выберите метод инициализации (Method of initialization), выберите ”Select a
system supplied default”.

7. Из списка файлов выберите ”FANUC 15M CONTROL”

8. Введите имя постпроцессора ”Exercise Number 1”

9. Вернитесь на главную панель (нажав Finish), затем сохраните постпроцессор

скройте список доступных постпроцессоров .

10. Закройте окно постпроцессора. Нажмите CL Data (CL-Данные) > Output


(Вывод)> Operation (Операция) > OP010> File (В файл), поставьте галочки на
опции CL File и MCD File. Подтвердите имя по умолчанию pplab1.ncl для файла CL-
Data, нажав ОК. В меню PP Options отметьте только опцию Verbose и нажмите Done
(Принять). Выберите постпроцессор UNCX01.01 из меню PP List и нажмите Done
(Принять).

11. После выполнения постпроцессирования прочитайте информацию, отображенную


в окне Pro/NC и нажмите Close.

12. Используя текстовый редактор (Блокнот), посмотрите файл управляющей


программы pplab1.tap и отчет о выполнении pplab1.lst.

Вашей следующей задачей будет задача по модификации постпроцессора.

Требования к управляющей программе:

 Первое движение после смены инструмента должно выводиться в


двух кадрах для движения по XY, а затем по Z.
 Коды G и T должны выводиться с использованием двух цифр
(например, G00 вместо G0).
 Коды M должны стоять перед T и S.
 Нумерация кадров должна начинаться с 2 и увеличиваться на 2.

2-4
 Управляющая программа должна начинаться с номера программы
Program ID number начинающийся с буквы “O” (например, O001).
 Не должно быть пробелов между регистрами.
 В конце программы требуется код M30.

Ниже приведен пример программ до и после изменений:

% %
N5 G70 O0001
N10 T1 M06 N2G70
N15 S600 M03 N4M06T01
N20 G0 Z.5 M08 N6M03S600
N25 X-2.5 Y0. N8G00X-2.5Y0.
N30 Z.1 N10Z.5M08
N35 G1 Z-.25 F5. N12Z.1
N40 X8.25 F10. N14G01Z-.25F5.
N45 X9.25 Y.875 N16X8.25F10.
N50 X0. N18X9.25Y.875
N55 X-1. Y1.75 N20X0.
N60 X8.25 N22X-1.Y1.75
... ...

13. Запустите Pro/NC-GPOST Application (Приложения)> NC Postprocessor


(Постпроцессор ЧПУ) и откройте созданный постпроцессор (Exercise
Number 1
14. Выберите категорию File Formats> MCD File.

15. Измените формат регистров T и G.

16. Переместите регистр M перед S и T.

17. Снимите галочку с опции “Insert a blank before each address” на закладке
General Address Output.

18. Выберите категорию Sequence Numbers и измените номер начального кадра и


приращение нумерации кадров как показано ниже.

19. Выберите категорию Startup/End of Program и поставьте галочку на пункт


Program Number (проверьте так же установленную галочку на DNC format).

2-5
20. Появится новая закладка: Prog #. Нажмите на нее и заполните как показано на
следующем рисунке:

21. На закладке General поставьте галочку на пункте Output user defined end of
program blocks, появится закладка EndProg. Заполните ее в соответствии со
следующим рисунком, добавив строку с кодом M30.

2-6
22. Выберите категорию Machine Codes> Tool Change Seq. Нажмите на закладку Tool
Change Coordinates. Установите координату Z в 999 для предотвращения выдачи
движений по оси Z перед XY в первом кадре после смены инструмента.

23. Сохраните постпроцессор, покиньте редактор постпроцессора и выведите


управляющую программу.

Дополнительные задачи:

 Вставьте сообщение в начало программы: (MSG, message ).


 Установите максимальную частоту вращения шпинделя maximum
spindle speed 7000RPM.
 Установите максимальную подачу maximum feedrate 900 MMPM.
 Установите подачу для быстрых перемещений RAPID feedrate 5000
IPM.
 Измените метод круговой интерполяции circular interpolation на
радиус Radius вместо центра окружности (IJK), максимальная дуга должна
быть 180˚ (maximum arc should be 180˚).

2-7
 Выведите время и дату (Date and Time) начала процессирования в
начало программы.
 Выведите следующие кадры в начале программы:

G90G80G94
G40G49

2-8
Упражнение 2

Создание и настройка постпроцессора для 4-х


осевого фрезерного станка

Вы создажите постпроцессор для 4-х координатного станка Toshiba с горизонтальным


шпинделем и поворотным столом с осью поворота B, стойка Tosnuc 520. Вы так же
установите лимиты на перемещение по линейным осям

Шаги:

1. Запустите генератор постпроцессоров и создайте новый постпроцессор.

2. Выберите тип Mill( фрезерный) и введите 2 в качестве номера поста Machine


Number. Ваш файл будет называться UNCX01.P02.

3. Выберите в Method of initialization ”Select a system supplied default”.

4. Выберите TOSHIBA TOSNUC 500 SERIE CONTROL

5. Задайте имя “Exercise Number 2”.

2-9
6. В категории Machine Tool Type измените тип станка Machine Type на 4-axis
Rotary table.

7. Появится новая панель: 4 Axis Rot. Table


Выберите эту закладку.

8. Проверьте, что осью поворота является ось B (то есть Rotation about Y axis
поворот вокруг оси Y)
Снимите галочку с пункта Only Capable of Indexing (поворот только с
позиционированием)

2-10
9. Выберите закладку Axes и установите лимиты на перемещение по осям от –
200 мм до 1000 мм по оси X, от 0 до 700м по оси Y и от 0 до 330мм для оси Z.
Проверьте, что галочка Check axis Limits установлена.

10. Домашняя позиция home position должна быть установлена по максимальным


значениям пределов осей.

11. Выберите категорию Machine Codes> Feedrates и закладку UPM Mode


(Единицы в минуту). Установите максимальную подачу maximum feedrate на
5000МPM.
12. В разделе Start/End of Program> Default Prep Code установите метрические
единицы измерения Option File равными Metric.

2-11
13. Сохраните постпроцессор и покиньте генератор постпроцессоров.

14. Загрузите pplab2.mfg. Нажмите CL Data (CL-Данные) > Output (Вывод)>


Operation (Операция) > OP010> File (В файл), поставьте галочки на опции CL File и
MCD File. Подтвердите имя по умолчанию pplab1.ncl для файла CL-Data, нажав ОК.
В меню PP Options отметьте только опцию Verbose и нажмите Done (Принять).
Выберите постпроцессор UNCX01.02 из меню PP List и нажмите Done (Принять).

15. Прочитайте информацию в окне сообщений и закройте его.

16. В текстовом файле посмотрите полученный файл pplab2.tap и файл отчета


pplab2.lst.

Ваша задача теперь модифицировать постпроцессор так, чтобы поворот по оси


B был перед движением по осям XY и значения оси B должны быть
положительными.

%
N10G70
N20M6T1
N30S500M3
N40G0X0.Y.5B90. <- Поворот стола должен быть перед XY
N50G43Z2.2071H1M8
N60G73X0.Y.5Z.7593R1.3071F10.B90.
N70G80

2-12
N80G0Z2.2071
N90B45.
N100G73X0.Y.5Z.698R1.3071F10.B45.
N110G80
N120G0Z2.2071
N130B0.
N140G73X0.Y.5Z.698R1.3071F10.B0.
N150G80
N160G0Z2.2071
N170B-45. <- B315 требуется вместо B-45
N180G73X0.Y.5Z.698R1.3071F10.B-45.
N190G80
N200G0Z2.2071
N210B-90. <- B270 требуется вместо B-90
N220G73X0.Y.5Z.7022R1.3071F10.B-90.
N230G80
N240M5
.........

17. Загрузите генератор постпроцессоров и откройте созданный постпроцессор.

18. Выберите категорию Machine Tool type и закладку 4 Axis Rot. Table.

Выберите пункт 0 and 359.99 controller takes shortest path (Кратчайший путь).

19. Выберите категорию Motion> RAPID. В разделе Motion analysis можно установить
нужную последовательность действий при подходе и отходе. Однако, здесь мы ничего
менять не будем! Изменим это значение через переменные.

20. Выберите категорию Advanced> PLABELS.

21. Выберите закладку 31-40 и установите опцию 40 в Rotary then XY then Z ….

2-13
22. Сохраните постпроцессор и выйдите из генератора постпроцессора.

23. Заново получите управляющую программу.

24. Откройте в текстовом редакторе pplab2.tap. Обратите на изменения,


произошедшие с осью поворота В.

Дополнительные задания:

 Измените прядок выдачи регистра B после Z.


 Создайте регистр Q (используйте регистр Extra #1) для задания шага
в циклах
 Установите вывод в файл отчета (.lst) времени обработки Output
Block and Tool time (используя опции PLABEL).
 Установите код G для режима UPM равным G94.
 Добавьте следующие строки в конце программы:

G28G91Z0
M30

2-14
Упражнение 3
Постпроцессор и параметры Pro/MFG
Цель этого упражнения лучше понять отношения между параметрами
механообработки и информацией выдаваемой постпроцессором. Вы будите
настраивать постпроцессор 4-х осевого фрезерного станка на базе стойки
Mazatrol™ M32.

Шаги:

1. Создайте новый постпроцессор UNCX01.P03 используя стойку MAZAK M32.


Измените тип станка для этого постпроцессора на 4-х координатный
фрезерный станок с поворотным столом (ось B). Задайте имя “Exercise
Number 3”.

2. В Pro/MFG загрузите модель pplab3.mfg. Выведите первую операцию и получите


CL-данные pplab4.ncl и управляющую программу pplab4.tap через созданный
постпроцессор UNCX01.P03. Проанализируйте результаты.

3. Настройте в Pro/MFG дерево модели, добавив новые колонки параметров


обработки Machining Parameters, указанных ниже

 CUT_FEED
 ARC_FEED
 SPINDLE_SPEED
 COOLANT_OPTION
 CUTCOM
 FIXT_OFFSET_REG
 PLUNGE_FEED (PLUNGE_RELIEF_FEED)

4. Используя новую конфигурацию дерева модели задайте подходящие параметры


для всех переходов и выведите CL Data и управляющую программу еще раз,
проанализируйте результаты.

5. В Pro/MFG, выберите Mfg Setup (Настройка) → CL Setup (CL-атрибуты) →


PPRINT→Create(Создать) и активируйте следующие опции:

 NC_SEQUENCE_COMMENTS
 TOOL_NAME
 TOOL_COMMENTS

2-15
6. Повторите вывод Cl-data и управляющей программы. Обратите внимание на
сообщения, появившиеся в управляющей программе.

7. Вернитесь в Pro/MFG и измените первый переход зайдя в нем в пункт


Customize (Настройка). Выделите
Automatic Cut и вставьте через
Insert команду CL Command в
текущей позиции.

Используя меню, выберите команду


OPSKIP. Выберите ON в качестве
аргумента. Завершите вставку
данной команды. Выделите <end of
tool path> и используя команду Insert
аналогично вставьте команду
OPSKIP/ OFF. Ваше окно со
вставленными командами должно
совпадать с рисунком слева.

Выведите CL Data и получите


управляющую программу. Обратите
внимание, что первый переход
выведен с использованием опции
удаления блока “block delete”.

Дополнительные задачи:

 Некоторые значения регистра B больше или равны 370. Измените


параметры оси так, что бы они были в пределах от 0 до 359.99
 Вставьте пробел перед каждым регистром в кадре.
 Вывод команды охлаждения (М8) в кадре с движением по осям XY.

2-16
Упражнение 4
Полное создание постпроцессора

Необходимые материалы для упражнения:

 инструкция по программированию вашей стойки NC

 список характеристик вашего станка (например, максимальные


подачи, обороты шпинделя, ограничения перемещений по осям и т.д.)

 если доступно, то изображение или схема вашего станка (очень


рекомендуется станок с 4-х или 5-ю осями)

 пример программы, которая была успешно отработана на станке

В этом упражнении вы создадите постпроцессор на свой станок с использованием


пройденного материала.

По окончании этого упражнения вы позднее продолжите настройку созданного


постпроцессора.

Подсказки и требования:

1. Рекомендуется создать постпроцессор с именем UNCX01.P04 или UNCL01.P04.

2. Начните создание постпроцессора с выбора настроек приемлемой стойки,


существующей в базе.

3. Для тестирования постпроцессора для вас доступны следующие модели:

 Pplab4_mill.mfg для 3-х осевой фрезерной обработки


 Pplab4_trn.mfg для 2-х осевой токарной обработки

2-17
Упражнение 5
Основные процедуры FIL
Цель этого упражнения представить некоторые основные процедуры FIL.

Шаги:

1. Создайте общий (Generic) постпроцессор для 3-х осевого фрезерного станка за


основу взяв Mitsubishi Meldas 500M. Сохраните новый постпроцессор как
UNCX01.P11 и используйте его для постпроцессирования файла CL pplab1.ncl
в Pro/NC

2. Создайте процедуру FIL для игнорирования всех команд охлаждения.


Следующая процедура позволит вам это сделать.

CIMFIL / ON, COOLNT


$$ эта процедура перехватит все команды COOLNT
$$ и удалит все команды M08 и M09 из файла
CIMFIL/OFF

Для добавления этой процедуры в постпроцессор UNCX01.P11 просто введите


текст процедуры в окне FIL Editor

Сохраните постпроцессор и получите управляющую программу из файла


pplab1.ncl (все коды M08 были исключены)

2-18
3. Давайте предположим, что охлаждение должно включаться оператором
вручную. Модифицируем процедуру COOLNT FIL для выдачи сообщения
оператору. Это демонстрирует другой вариант работы с CIMFIL: замена CL
команды другой командой.

Новая процедура:

CIMFIL/ON,COOLNT
$$ эта процедура перехватит все команды COOLNT
$$ и удалит все команды M08 и M09 из файла
ARG1=POSTF(7,4) $$ первый аргумент COOLNT
IF(ARG1.EQ.ICODEF(OFF)) THEN
$$ Это команда COOLNT/OFF
INSERT/(TEXT/’(OPERATOR STOP COOLANT)$’) $$ сообщение
ELSE
$$ This command starts the coolant (ON, FLOOD or MIST)
INSERT/(TEXT/’(OPERATOR START COOLANT)$’) $$ сообщение
ENDIF
DELAY/20 $$ пауза 20 сек. для реакции оператора :)
CIMFIL/OFF

Сохраните постпроцессор и получите управляющую программу:

%
O1111
N0010 G20
N0020 T01 M06
N0030 S600 M03
N0040(OPERATOR START COOLANT)
N0050 G04 X20.
N0060 G00 X-2.5 Y0.

4. Ваша следующая задача создать другую процедуру для включения и выключения


подачи воздуха (M12, M13) перед обработкой команды SPINDL (не команды
SPINDL/OFF). Это демонстрирует другой вариант работы процедур в CIMFIL:
добавление своей команды в обработку существующей.

CIMFIL/ON,SPINDL $$ перехват всех команд SPINDL


DMY=POSTF(20) $$ сохранить запись SPINDL в память
PARAM=POSTF(7,4) $$ первый параметр команды SPINDL
IF(PARAM.NE.ICODEF(OFF)) THEN
$$ это не команда SPINDL/OFF
AUXFUN/12 $$ включить воздух М12
ENDIF
DMY=POSTF(21) $$ восстановить запись SPINDL из памяти
DMY=POSTF(13) $$ обработка текущей записи CL
CIMFIL/OFF $$ конец CIMFIL на SPINDL

5. Теперь вы добавите некоторые коды в конец управляющей программы:

2-19
G91 G28 Z0.
G28 X0. Y0.
M30

Создайте данную процедуру на FINI:

CIMFIL / ON, FINI $$ перехват записи FINI


DMY=POSTF(20) $$ сохранить запись FINI в памяти
INSERT/’ G91 G28 Z0.$’
INSERT/’ G28 X0. Y0.$’
INSERT/’ M30$’
DMY=POSTF(21) $$ восстановить запись FINI из памяти
DMY=POSTF(13) $$ обработка текущей записи CL
CIMFIL/OFF $$ end of CIMFIL on FINI

Не забудьте добавить команду REDEF/ON в глобальной секции FIL файла для


разрешения изменения переменной DMY.

6. И наконец, необходимо добавить несколько кодов в начале программы:

G90 G80 G40


(DATE: 12/12/1999 03:20)

Для этого необходимо перехватить команду MACHIN. Это очень важно, так как
управляющая программа выводится только после обработки команды MACHIN.

CIMFIL/ON,MACHIN $$ перехват команды MACHIN


DMY=POSTF(13) $$ обработка команды MACHIN
INSERT/’G90 G80 G40$’ $$ Вывод кадра
DVAL=TEXT/TIMES $$ извлечение текущего времени
INSERT/’( DATE:’,DVAL,’)$’ $$ вставка сообщения
CIMFIL/OFF $$ конец процедуры на MACHIN

Дополнительные задачи:

 Создайте процедуру CIMFIL для замены всех команд RAPID на команду


FEDRAT/1000,ММPM.
 Модифицируйте процедуру на SPINDL для вывода команды AIR (М12) после
обработки команды SPINDL.
 Удалите все команды PPRINT, содержащие слова COMMENTS (смотри
функции TEXT/CLW и INDXF).

2-20
Упражнение 6
FIL переменные: Scalars (Скалярные)
Это упражнение позволит вам лучше понять скалярные переменные scalar variables
доступные в FIL.

Шаги:

1. Создайте обычный постпроцессор для фрезерного 3-х координатного станка, взяв


за базу стойку Mitsubishi Meldas 500M. Сохраните новый постпроцессор как
UNCX01.P12 и используйте его при обработке файла pplab1.ncl из Pro/NC модели
pplab1.mfg.

Каждая смена инструмента должна начинаться с определенного номера кадра, а


точнее после первой смены должны быть кадры N1000, N1001, N1002, после второй
N2000, N2001, N2002… и так далее).

2. Первый шаг – это создание скалярной переменной SEQNB в глобальной


области.

$$ Variable definition and initialization


SEQNB=0

3. Теперь необходимо создать процедуру на перехват команды LOADTL:

CIMFIL/ON,LOADTL $$ перехват LOADTL


DMY=POSTF(20) $$ сохранить текущую CL record
SEQNO/OFF $$ остановить нумерацию кадров
INSERT/(TEXT/‘ $‘) $$ вставка пустой строки
SEQNB=SEQNB+1 $$ увеличение переменной SEQNB на 1
STVAL=SEQNB*1000 $$ расчет номера кадра
SEQNO/STVAL,INCR,1 $$ задание новой последовательности
$$ нумерации кадров
SEQNO/ON $$ включить нумерацию кадров
DMY=POSTF(21) $$ восстановить из памяти запись LOADTL
DMY=POSTF(13) $$ обработать LOADTL
CIMFIL/OFF $$ конец процедуры CIMFIL на LOADTL

4. Сохраните постпроцессор и выведите управляющую программу на файл


pplab1.ncl . Посмотрите результаты.

2-21
Упражнение 7
FIL переменные: Strings (Строковые)
Это упражнение позволит вам лучше понять строковые переменные string variables
доступные в FIL.

Exercise Steps:

1. Создайте обычный постпроцессор для 3-х координатного фрезерного станка, взяв


за основу стойку FANUC 6M. Сохраните новый постпроцессор под именем
UNCX01.P13 и используйте его при обработке файла pplab1.ncl из Pro/NC модели
pplab1.mfg.

Необходимо создать специальную шапку в программе. Строка в PARTNO нуждается в


отображении как сообщение оператору в начале программы. Начальный кадр: G90
G80 G40 должен быть так же вставлен. Подача по умолчанию должна быть 10 ММPM.

2. Создайте перехват команды PARTNO для сохранения текста:

CIMFIL/ON,PARTNO $$ перехват PARTNO


DMY=POSTF(13) $$ обработка PARTNO
PTXT=TEXT/CLW $$ извлечение текста из PARTNO
PTXT=TEXT/OMIT,PTXT,1 $$ удаление начальных пробелов
CIMFIL/OFF $$ конец перехвата

3. Создайте перехват на команду MACHIN. Не забудьте, что вывод управляющей


программы будет только после обработки команды MACHIN

CIMFIL/ON,MACHIN $$ перехват MACHIN


DMY=POSTF(13) $$ обработка MACHIN
INSERT/(TEXT/’(’,PTXT,’)$’) $$ вставка текста PARTNO
INSERT/(TEXT/’G90 G80 G40$’) $$ вставка спец. кадра
FEDRAT/10,MMPM $$ установка подачи по
умолчанию
CIMFIL/OFF $$ конец перехвата

4. Сохраните постпроцессор и выведите управляющую программу на файл


pplab1.ncl . Посмотрите результаты.

Дополнительные задачи:
 Удалите ”/” в сообщениях оператору (смотри команду REPLAC).
 Выведите имя файла CL в управляющую программу (смотри команду TEXT).
 Выведите текущие дату и время в управляющую программу (смотри TEXT).

2-22
Упражнение 8
Техника создания подпрограмм
Цель это упражнения – настройка постпроцессора на поддержку подпрограмм.

Шаги:

1. Создайте постпроцессор для 3-х координатного фрезерного станка, взяв за


основу стойку FANUC 10M. Сохраните свой постпроцессор как UNCX01.P14 и
используйте его для постпроцессирования файла pplab14.ncl. Проанализируйте
результаты (pplab14.tap).

2. Первая FIL процедура будет на команду DEFSUB: запись, определяющая


подпрограмму. На стойке Fanuc все подпрограммы начинаются с кадра “O”-и
последующим номеров подпрограммы.

CIMFIL/ON,DEFSUB $$ перехват DEFSUB


SUBNUM=POSTF(7,4) $$ первый параметр DEFSUB
$$ конвертация скалярной величины SUBNUM в строковую 4-х симв
TPNUM=TEXT/’O’,CONVF,SUBNUM,4,0,0,1,1,’$’
SEQNO/OFF $$ выкл. нумерации кадров
INSERT/TPNUM $$ вставить номер подпрограммы
SEQNO/10,INCR,1 $$ начать новую нумерацию кадров
CIMFIL/OFF $$ конец CIMFIL на DEFSUB

3. Следующий шаг – создание FIL процедуры на команду конца подпрограммы:


ENDSUB. На стойка Fanuc конец подпрограммы задается кодом M99.

CIMFIL/ON,ENDSUB $$ перехват ENDSUB


INSERT/(TEXT/’M99$’) $$ вставка конца подпрограммы
SEQNO/OFF $$ выкл. нумерации кадров
INSERT/(TEXT/’ $’) $$ вставка пустой строки
SEQNO/ON $$ начать новую нумерацию кадров
CIMFIL/OFF $$ конец CIMFIL на ENDSUB

4. В заключении необходимо создать FIL процедуру на команду вызова


подпрограммы: CALSUB. На стойке Fanuc подпрограммы вызываются кодом M98 и
следующим словом “P”-номером подпрограммы.

CIMFIL/ON,CALSUB $$ перехват CALSUB


CNUM=POSTF(7,4) $$ первый параметр CALSUB
$$ конвертация скалярной величины CNUM в строковую для M98P
$$ номера подпрограммы
TPNUM=TEXT/’M98 P’,CONVF,CNUM,4,0,0,1,3,’$’
INSERT/TPNUM $$ вывод вызова подпрограммы
CIMFIL/OFF $$ конец CIMFIL на CALSUB

5. Для определения начала основной программы нам необходимо найти первую


смену инструмента.

2-23
Необходимо определить «флаг» в глобальной области:

$$ Флаг определяющий первую смену инструмента


FTOOL = 0

6. Пишем FIL процедуру на LOADTL:

CIMFIL/ON,LOADTL $$ перехват LOADTL


DMY = POSTF(20) $$ сохранение текущей CL записи
IF(FTOOL.EQ.0) THEN $$ первая смена инструмента?
FTOOL=1 $$ изменение флага
SEQNO/OFF $$ выкл. нумерации кадров
INSERT/(TEXT/’ $’) $$ вставка пустой строки
INSERT/(TEXT/’%$’) $$ вставка “%”
SEQNO/10,INCR,2 $$ нумерация кадров
INSERT/(TEXT/’G90G40G80$’) $$ вставка начального кадра
DATTXT=TEXT/TIMES $$ сохр. текущей даты и времени
INSERT/’(‘,DATTXT,’)$’ $$ вывод сообщения оператору
ENDIF
DMY=POSTF(21) $$ вызов из памяти LOADTL
DMY=POSTF(13) $$ обработка LOADTL
CIMFIL / OFF $$ конец CIMFIL на LOADTL

7. Сохраните постпроцессор и получите управляющую программу из файла


pplab14.ncl и посмотрите на результаты.

Дополнительные задачи:

”Подчистите” управляющую программу:

 Удалите код G20 в начале программы.


 Выведите имя инструмента в качестве комментария после каждой
смены инструмента (CIMFIL на PPRINT).
 Все подпрграммы должны сбрасывать текущий режим подачи (G94 или
G93) feedrate mode (смотри POSTF, INTCOM).
 Игнорируйте все команды SPINDL/OFF.

Упражнение 9

2-24
Оптимизация фала FIL

В этом упражнении демонстрируется различная техника для упрощения разработки


FIL процедур, используя макросы (macros), а так же псевдонимы (ALIAS) и
включения (INCLUDE).

Шаги:

1. Создайте постпроцессор для фрезерного 3-х координатного станка, взяв за


основу стойку FANUC 16M. Сохраните новый постпроцессор как UNCX01.P15 и
используйте его для получения управляющей программы из CL файла pplab1.ncl
механообработки pplab1.mfg. Проанализируйте результаты (pplab1.tap).

2. Вначале создадим несколько псевдонимов alias definitions для команд FIL наиболее
часто встречающихся:

$$ определение ALIAS
ALIAS/%SAVE_CLREC,DMY=POSTF(20) $$ сохранить текущую CL запись
ALIAS/%RESTORE_CLREC,DMY=POSTF(21) $$ restore saved CL запись
ALIAS/%PROCESS_CLREC,DMY=POSTF(13) $$ обработка текущей CL записи
ALIAS/%OUTPUT,DMY=POSTF(13) $$ обработка текущей CL записи
ALIAS/%FCL1,POSTF(7,4) $$ 1-й аргумент текущей CL записи
ALIAS/%FCL2,POSTF(7,5) $$ 2-й аргумент текущей CL записи ALIAS/
%FCL3,POSTF(7,6) $$ 3-й аргумент текущей CL записи ALIAS/
%FCL4,POSTF(7,7) $$ 4-й аргумент текущей CL записи
ALIAS/%FCL5,POSTF(7,8) $$ 5-й аргумент текущей CL записи ALIAS/
%FCL6,POSTF(7,9) $$ 6-й аргумент текущей CL записи
ALIAS/%FCL7,POSTF(7,10) $$ 7-й аргумент текущей CL записи
ALIAS/%FCL8,POSTF(7,11) $$ 8-й аргумент текущей CL записи
ALIAS/%FIZE,POSTF(5) $$ число аргументов текущей CL записи
ALIAS/%GET_TXT,TEXT/CLW $$ извлечение текстовой строки из CL записи
ALIAS/%MTNMAC_TRUE,DMY=POSTF(26,5,5,1) $$ активация перехвата движения
ALIAS/%MTNMAC_FALSE,DMY=POSTF(26,5,5,0) $$ деактивация перехвата движения

3. Можно задать последовательность стандартных переменных, используемых в


файлах FIL, такие как адреса регистров:

A=1;B=2;C=3;D=4;E=5;F=6;G=7;H=8;I=9;J=10;K=11;L=12;M=13
N=14;O=15;P=16;Q=17;R=18;S=19;T=20;U=21;V=22;W=23;X=24;Y=25;Z=26

4. Теперь пишется макрос на вывод машинного времени и размер программы. Этот


макрос может быть использован в любом постпроцессоре:

ENDSUM=MACRO
_TTIME=POSTF(1,3,495) $$ DBLCOM 495: общее машинное время
_TCHAR=POSTF(1,3,494) $$ DBLCOM 494: общая длина программы
PPRINT/(TEXT/’CYCLE TIME:’,_TTIME ,’sec. BYTES:’,_TCHAR)
TERMAC

5. Для вывода этой информации в конце программы необходимо создать процедуру


FIL на FINI. Можно использовать псевдонимы, которые предварительно были

2-25
созданы:

CIMFIL/ON,FINI $$ перехват FINI


%SAVE_CLREC $$ сохранить в памяти CL запись
CALL/ENDSUM $$ печать времени и длины программы
%RESTORE_CLREC $$ восстановление CL записи из памяти
%PROCESS_CLREC $$ обработка текущей записи CL.
CIMFIL/OFF $$ конец CIMFIL на FINI

6. Следующий шаг будет выдача кода M98P1000 (super GI команда для Makino)
перед первым движением следующим за сменой инструмента. Напишите процедуру
FIL на GOTO. Обратите внимание, что возможность перехватывать команды GOTO
активируется в процедуре CIMFIL/ON,LOADTL:

Here are the two routines:

CIMFIL/ON,LOADTL $$ перехват LOADTL


%PROCESS_CLREC $$ обработка LOADTL
%MTNMAC_TRUE $$ активация CIMFIL на GOTO
CIMFIL/OFF $$ конец CIMFIL на LOADTL

CIMFIL/ON,GOTO $$ перехват GOTO


%SAVE_CLREC $$ сохранение GOTO
INSERT/’M98P1000$’ $$ вывод команды super GI
%MTNMAC_FALSE $$ деактивация CIMFIL на GOTO
%RESTORE_CLREC $$ восстановление CL записи (GOTO)
%PROCESS_CLREC $$ обработка GOTO
CIMFIL/OFF $$ конец CIMFIL на GOTO

Примечания:

 Все псевдонимы (ALIAS), инициализация переменных и макросы могут быть


написаны во внешнем файле (например, myfil.txt), который может быть затем
включен в любой постпроцессор. Синтаксис:

INCLUD / myfil.txt

 Другим решением может быть создание серии файлов настройки: UNCX01.F00,


UNCL01.F00, UNCP01.F00, UNCC01.F00 и соответственно UNCW01.F00 внутри
директории $pro_directory/$MC/obj.

Дополнительная задача:
 Перепишите программы, созданные в предыдущих упражнениях, с
использованием псевдонимов (ALIAS).

2-26
Упражнение 10
Внутренние переменные
Это упражнение показывает возможность чтения и модификации внутренних
переменных постпроцессора в процессе постпроцессирования.

Шаги:

1. Создайте постпроцессор на 3-х координатный фрезерный станок, взяв за основу


стойку Toshiba TOSNUC 800 Serie. Сохраните новый постпроцессор как UNCX01.P16
и используйте его для получения управляющей программы из файла CL pplab1.ncl
механообработки pplab1.mfg.

Проанализировав CL файл pplab1.ncl и полученную управляющую прогамму


pplab1.tap, вы обнаружите, что команда M9 (выкл. охлаждения) никогда не
появляется, хотя команды COOLNT/OFF присутствуют в CL файле и даже код M9
присутствует в категории Coolnt Aux/M-Codes постпроцессора UNCX01.P16.

Вывод команд COOLNT будет осуществлен при следующем движении по оси Z.


Однако, команда COOLNT/OFF не обрабатывается, потому что постпроцессор
встречает команду COOLNT/ON перед движением по оси Z:

GOTO / 9.7500000000, 5.2500000000, 0.5000000000


COOLNT / OFF <- COOLNT programmed wait for next Z move to process
SPINDL / OFF
$$-> END /
$$-> FEATNO / 73
LOADTL / 2 $$-> 1" F.E.M.
$$-> CUTTER / 1.000000
SPINDL / RPM, 600.000000, CLW
COOLNT / ON <- COOLNT programmed wait for next Z move to process
RAPID
GOTO / 9.6250000000, 3.6250, 0.500 <- Z move, process last COOLNT programmed

2-27
2. Вы должны создать FIL процедуру для того чтобы команда COOLNT/OFF
обрабатывалась в отдельном кадре, а все остальные команды COOLNT
обрабатывались при следующем движении по оси Z.

3. Во-первых необходимо найти внутреннюю переменную, отвечающую за вывод


команды COOLNT.
Для ее поиска зайдите в категорию Advanced> Search, введите искомое слово
COOLNT и нажмите рядом на кнопку поиска. Поиск придется повторить несколько (12)
раз, так как искомое слово встречается довольно часто. Внимательно читайте
описание найденной переменной.

Переменная INTCOM 3425.

4. Теперь напишите FIL процедуру на COOLNT:

CIMFIL/ON,COOLNT $$ перехват COOLNT


COLTYP=POSTF(7,4) $$ первый аргумент COOLNT
IF(COLTYP.EQ.ICODEF(OFF))THEN
$$ Это команда COOLNT/OFF
DMY=POSTF(2,1,3425,0) $$ установить INTCOM 3425 в 0 (вывод сейчас)
ELSE
$$ Это команда COOLNT/ON или FLOOD, или т.п.
DMY=POSTF(2,1,3425,2) $$ установить INTCOM 3425 в 2
$$(вывод при движении по Z)
ENDIF
DMY=POSTF(13) $$ обработка COOLNT
CIMFIL/OFF $$ конец CIMFIL на COOLNT

5. Сохраните постпроцессор и получите управляющую программу для CL файла


pplab1.ncl и посмотрите на результат. Обратите внимание, что команда COOLNT/OFF
теперь обрабатывается сразу.
6. Ваша следующая задача – вставка специального кода (M12), доступного только
при включении охлаждения на инструмент с номером: T3. Вы должны создать

2-28
процедуру на команду COOLNT (или модифицировать уже существующую) для
замены команды M8 на M12 если текущий инструмент #3.
7. В начале вам необходимо найти переменную, хранящую текущий номер
инструмента. Зайдите в категорию Advanced> Search и введите в строку поиска:
“current tool number”, затем нажмите кнопу поиска

переменная DBLCOM 497.

8. Теперь измените FIL процедуру на команду COOLNT:

CIMFIL/ON,COOLNT $$ перехват COOLNT


COLTYP=POSTF(7,4) $$ первый аргумент COOLNT
IF(COLTYP.EQ.ICODEF(OFF))THEN
$$ Это команда COOLNT/OFF
DMY=POSTF(2,1,3425,0) $$ установить INTCOM 3425 в 0 (вывод сейчас)
ELSE
$$ Это команда COOLNT/ON или FLOOD, или т.п.
DMY=POSTF(2,1,3425,2) $$ установить INTCOM 3425 в 2
$$(вывод при движении по Z)
ENDIF
CURTOL=POSTF(1,3,497) $$ Извлечь DBLCOM 497 (текущий номер инстр.)
IF(CURTOL.EQ.3) THEN
$$ Заменить M8 на M12 только при следующем выводе
T1=TEXT/’M8’
T2=TEXT/’M12’
REPLAC/T1,T2,1,1
ENDIF
DMY=POSTF(13) $$ Обработка COOLNT
CIMFIL/OFF $$ Конец CIMFIL на COOLNT

2-29
9. Сохраните постпроцессор и получите управляющую программу на CL файл pplab1.ncl
для просмотра результатов. Проверьте, что при инструменте 3 код на включение
охлаждения M12.

10. В заключение вам необходимо сделать так, чтобы после каждой смены
инструмента выводился код, устанавливающий плоскость обработки для круговой
интерполяции (то есть G17, G18 or G19). Файл CL pplab1.ncl содержит обработку дуги
только в плоскости XY. Поэтому постпроцессор никогда не выводит команду G17. Вам
необходимо найти переменную, хранящую текущую плоскость круговой интерполяции.
Зайдите в категорию Advanced> Search и введите слово для поиска plane, затем
нажмите на кнопку поиска.

Переменная INTCOM 619

Теперь создайте FIL процедуру на команду LOADTL для сброса переменной при
каждой смене инструмента:

CIMFIL/ON,LOADTL $$ перехват LOADTL


DMY=POSTF(13) $$ обработка записи LOADTL
DMY=POSTF(3,1,619) $$ сброс переменной INTCOM 619
CIMFIL/OFF

11. Сохраните постпроцессор и получите управляющую программу на CL файл


pplab1.ncl для просмотра результатов. Проверьте, что код G17 вставляется перед
первой окружностью после каждой смены инструмента.

2-30
Дополнительные задачи:

 Найти переменную, хранящую предыдущее значение режима подачи (FEDRAT


mode).
 Найти переменную, хранящую минимальные и максимальные пределы для
перемещений по осям XYZ.
 Найти переменную, хранящую последнюю позицию по координате X.

2-31
Упражнение 11
Файловый ввод/вывод
Это упражнение показывает работу с открытия, чтения и записи во внешний
текстовый файл.

Шаги:

1. Создайте постпроцессор для фрезерного станка, за основы взяв сойку FANUC


16M. Сохраните новый постпроцессор под именем UNCX01.P17 и используйте его
для получения управляющей программы на CL файл pplab1.ncl механообработки
pplab1.mfg. Проанализируйте результаты (pplab1.tap).
Вы можете обратить внимание, что каждая смена инструмента сопровождается
перемещением вначале по оси Z, а затем XY. Это может быть очень опасным, так
как текущее значение оси Z нам неизвестно.

Для решения этой проблемы просто модифицируйте позицию смены инструмента,


задав в категории Machine Codes> Tool Change Sequence значение Z равным
999.

Сохраните постпроцессор и получите вновь управляющую программу.

2. Необходимо получить весь список инструмента, используемого в программе. Вы


должны написать FIL rпроцедуру на MACHIN и считать всю необходимую информацию
из внешнего файла clfilename.tl1, созданного постпроцессором. Например, если CL
файл используется pplab1.ncl, то файл с инструментом будет pplab1.ncl.tl1.

2-32
Это пример текстового файла:

6
6 1 1.0000 .0000 .0000 .0000 .0000 0 0
36 1 2.0000 .0000 .0000 .0000 .0000 0 0
292 1 3.0000 .0000 .0000 .0000 .0000 0 0
 ….

Первая строка отображает общее количество инструмента, 6. Каждая последующая


описывает смену инструмента: номер CL записи, тип смены (1:LOADTL магазин,
2:TURRET резцедержатель), номер инструмента, корректор на длину, длину
инструмента, вылет по оси X (для резцедержателя), вылет по оси Y (для
резцедержателя), направление вращения резцедержателя TURRET (1:CLW, -1:CCLW) и
выбранный резцедержатель TURRET (1:FRONT, 2:REAR, 4:MAIN).
CIMFIL/ON,MACHIN
DMY=POSTF(13) $$ обработка записи MACHIN
CLNAME=TEXT/PART $$ имя CL файла
T1=TEXT/'.'
NCLPOS=INDXF(CLNAME,T1) $$ поиск знака . в имени CL
$$ удаление номера версии в имени CL файла
FNAME=TEXT/RANGE,CLNAME,1,NCLPOS+4
FNAME=TEXT/FNAME,'TL1' $$ добавление расширения TL1
FEXT=FILEF(1,7,FNAME) $$ существует ли файл
IF(FEXT.EQ.1) THEN $$ файл найден
INSERT/(TEXT'( TOOL LIST )$') $$ заголовок
FOPEN=FILEF(1,2,FNAME) $$ открытие файла
TBUFF=TEXT/READ,1 $$ чтение первой строки из файла
MXTL=SCALF(TBUFF) $$ конвертация строки в скалярное значение
IF(MXTL.GT.0)THEN
DO/ENDDO,I=1,MXTL,1 $$ цикл
TBUFF=TEXT/READ,1 $$ чтение следующей строки
TLNUM=TEXT/RANGE,TBUFF,17,30 $$ номер инстр. в позиции 17
TLVAL=SCALF(TLNUM) $$ конвертация в скалярное значен
INSERT/(TEXT/'( TOOL ',TLVAL,')$')
ENDDO) CONTIN
IF(FOPEN.EQ.0) THEN
FCLOS=FILEF(1,5) $$ закрытие файла
ENDIF
ENDIF
INSERT/'(---------)$' $$ конец списка инструмента
ENDIF
CIMFIL/OFF

Сохраните постпроцессор и получите управляющую программу из файла


pplab1.ncl :

%
N5 G70
N10( TOOL LIST )

2-33
N15( TOOL 1)
N20( TOOL 2)
N25( TOOL 3)
N30( TOOL 4)
N35( TOOL 5)
N40( TOOL 6)
N45(---------)
N50 T1 M06
...

3. Другой тип приложений CIMFIL включает технику запроса пользователя об


информации не включенной в CL файл, например, номер редакции детали part
revision number. Ответ должен быть отображен вместе с текстом в PARTNO:

Создайте процедуру FIL на PARTNO для сохранения имени детали:

CIMFIL/ON,PARTNO $$ перехват PARTNO


TPART=TEXT/CLW $$ извлечение строи из PARTNO
TPART=TEXT/OMIT,TPART,1 $$ удаление начальных пробелов
CIMFIL/OFF

Теперь добавьте несколько строк к существующей процедуре на MACHIN:

CIMFIL/ON,MACHIN
DMY=POSTF(13)
PROMPT=TEXT/'PART',TPART,' - Revision ?:'
RSLT=FILEF(0,1,PROMPT)
STRNG=TEXT/READ,0
SCALR=SCALF(STRNG)
PRGNM=TEXT/CONVF,SCALR,5,0,0,1,1
INSERT/(TEXT/'(',TPART,' - REV:',PRGNM,')$')
...

Дополнительные задачи:

 Добавьте номер корректора инструмента к номеру инструмента в начале


программы.
 Удалите / в сообщении о номере редакции (revision number).

2-34
Дополнительные задания
 Измените вывод значения подачи по формуле F=2xF+80000, при
этом не изменив время обработки. Необходимо решить задачу
двумя способами: с использованием и без использования макроса
_MCDWT.
 Пересчитать значение регистра C, если оно отрицательное по
формуле: С=-360-С
 Вставить кадр F0 после ускоренного перемещения

2-35

Оценить