Постпроцессор для ArtCam'а к LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Постпроцессор для ArtCam'а к LinuxCNC

Сообщение torvn77 » 10 апр 2013, 21:26

Решил вот написать постпроцессор для трёхосевого фрезера к Арткаму.
Постпроцессор не полный,я сломался на добавлений автоматической компенсаций инструмента.
Код: Выделить всёРазвернуть
;
;  LinuxCNC - G-Code XYZ Artcam post processor
; License: GPL v2
; Author : torvn77
; email  : torvn77@mail.ru
;
; Поддерживает:
; 1)Отдельные команды для подъёма и опускания инструмента.
;   Команда опускания происходит на скорости [FP],что уменьшает вероятность слома инструмента при попаданий в заготовку.
; 2)Пауза в 10 сек. в работе программы после запуска и остановки шпинделя.
; 3)Назначение места парковки портала по окончанию УП в машинных координатах.
; 4)Линейная интерполяция.
; 5)Круговая интерполяция по и против часовой стрелки.
; 6)Задание места настройки компенсаций инструмента
; 7)Задание места для ручной смены инструмента в машинных координатах
;
; Документация и описание программы LinuxCNC (en)    :  http://linuxcnc.org/docs/html/
; Быстрый обзор поддерживаемого LinuxCNC G-cod'a (en):  http://linuxcnc.org/docs/html/gcode.html
; Рускоязычная тема,посвящённая G-cod'у              :  viewtopic.php?f=15&t=113
;
;
; ######## Параметры файла ########
;
;
; Название постпроцессора в менюшке Арткама
DESCRIPTION = "AA_LinuxCNC - 3-Axis (mm) (*.ngc)"
; Расширение файла,которое ему будет присвоено при созданий
FILE_EXTENSION = "ngc"
; Система едениц,в которой написан постпроцессор
UNITS = MM
;
; Правила нумерования строк (Нумерование строк в данном постпроцессоре не используются)
FORMAT = [N|@|N|1.0]
LINE_NUM_START     = 0
LINE_NUM_INCREMENT = 10
LINE_NUM_MAXIMUM   = 999999
;
;Стандарт окончания строки в Linux:
;END_OF_LINE = "[10]"
;Стандарт окончания строки в Windows(Default):
END_OF_LINE = "[13][10]"
;
;
; ######## Установка формата переменных ########
;
;
; Формат и правила подстановки номера текущего инструмента
FORMAT = [T|@||1.0]
; Формат и правила подстановки номера прошлого инструмента
FORMAT = [TP|@||1.0]
;
; Формат и правила подстановки скорости шпинделя
FORMAT = [S|@|S|1.0]
;
; Формат и правила подстановки координаты X и параметров на её основе.
FORMAT = [X|@|X|+1.4]
; X-координата домашней точки ПРОГРАММЫ.
FORMAT = [XH|@|X|+1.4]
; Крайние точки рельефа по координате X
FORMAT = [XMIN|@|X|+1.4]
FORMAT = [XMAX|@|X|+1.4]
;
; Формат и правила подстановки координаты Y и параметров на её основе.
FORMAT = [Y|@|Y|+1.4]
; Y-координата домашней точки ПРОГРАММЫ.
FORMAT = [YH|@|Y|+1.4]
; Крайние точки рельефа по координате Y
FORMAT = [YMIN|@|Y|+1.4]
FORMAT = [YMAX|@|Y|+1.4]
;
; Формат и правила подстановки координаты Z и параметров на её основе.
FORMAT = [Z|@|Z|+1.4]
; Z-координата домашней точки ПРОГРАММЫ.
FORMAT = [ZH|@|Z|+1.4]
; Безопасная высота по Z
FORMAT = [SZ|@|Z|+1.4]
; Крайние точки рельефа по координате Z
FORMAT = [ZMIN|@|Z|+1.4]
FORMAT = [ZMAX|@|Z|+1.4]
;
; Как я предпологаю,Арткамовская ось вращения R соответствует одной из следующих осей LinuxCNC:U,V,W (ещё есть оси A,B,C)
; Но какой именно? U что-ли?
; Формат и правила подстановки координаты оси вращения R и параметров на её основе.
FORMAT = [R|@|U|+1.4]
; R-координата домашней точки ПРОГРАММЫ.
FORMAT = [RH|@|U|+1.4]
;
; Coordinated helical motion ("Arc feed")
FORMAT = [I|@|I|+1.4]
FORMAT = [J|@|J|+1.4]
;
; Формат скорости перемещения ((units|mm)/min),автоматически назначаемой Арткамом выбором из переменных
; [FR],[FC] или [FP] соответствующих текущему инструменту или траекторий.
FORMAT = [F|@|F|1.1]
; Формат скорости быстрого перемещения (units|mm)/min
FORMAT = [FR|@|F|1.1]
; Формат скорости врезания (units|mm)/min
FORMAT = [FP|@|F|1.1]
; Формат скорости подати материала (units|mm)/min
FORMAT = [FC|@|F|1.1]
;
;
; ######## Program moves ########
;
;
; Размер рабочего стола X=700 Y=800 z=100 .
; Место для ручной смены инструмента  X=350 Y=150 z=100 .
; Место парковки портала после окончания исполнения программы  X=350 Y=800 z=100 .
; Максимальная скорость линейного перемещения станка X=Y=Z=8 м/сек.
; Параметры ПК позволяют развивать скорость до X=Y=Z=3,3 м\сек.
;
; Установка скорости БЫСТРОГО перемещения [FR] в максимальное для станка значение.
; В LinuxCNC используется S-образный график ускорения,так что резкого торможения и связанных с ним проскоков координат быть не должно.
RAPID_FEED_RATE        =  3300
;
; Задание команды изменения скорости перемещения.
; Но я поставил эти комманды непосредственно в строки и поэтому этот параметр стал не нужным и закоментирован.
;FEED_RATE_CHANGE      = "[F|#] [S|#] ( FRC )"
;
; Задание команды подъёма по Z .
RETRACT_MOVE           = "[FR] [S|#] G00 [X|#] [Y|#] [Z|#] ( RtM [F] )"
;
; Задание команды опускания по Z.
PLUNGE_RATE_MOVE       = "[FP] [S|#] G01 [X|#] [Y|#] [Z|#] ( PM [F] )"
;
; Задание в сокращённой и полной (FIRST_) форме команды быстрого перемещения.
FIRST_RAPID_RATE_MOVE  = "[F|#] [S|#] G00 [X|#] [Y|#] [Z|#] ( F_RRM )"
RAPID_RATE_MOVE        = "[F|#] [S|#] G00 [X|#] [Y|#] [Z|#]"
;
; Задание в сокращённой и полной (FIRST_) форме команды линейной резки.
FIRST_FEED_RATE_MOVE   = "[F|#] [S|#] G01 [X|#] [Y|#] [Z|#] (F_FRM)"
FEED_RATE_MOVE         = "[F|#] [S|#] G01 [X|#] [Y|#] [Z|#]"
;
; Задание в сокращённой и полной (FIRST_) форме команды резки по дуге по часовой стрелке.
FIRST_CW_ARC_MOVE      = "[F|#] [S|#] G02 [X] [Y] [I] [J] (F_CW)"
CW_ARC_MOVE            = "[F|#] [S|#] G02 [X] [Y] [I] [J]"
;
; Задание в сокращённой и полной (FIRST_) форме команды резки по дуге против часовой стрелки.
FIRST_CCW_ARC_MOVE     = "[F|#] [S|#] G03 [X] [Y] [I] [J]  (F_CCW)"
CCW_ARC_MOVE           = "[F|#] [S|#] G03 [X] [Y] [I] [J]"
;
;
; ######## END Program moves ########
;
;
START = " "
START = " "
START = " ( Variables status: )"
START = " "
START = " ( S=[S] )"
START = " ( F=[F] FC=[FC] FP=[FP] FR=[FR] )"
START = " ( SZ=[SZ] )"
START = " "
START = " ( XH=[XH] YH=[YH] ZH=[ZH] RH=[RH] )"
START = " ( XMIN=[XMIN] YMIN=[YMIN] ZMIN=[ZMIN] RMIN=RMIN )"
START = " ( XMAX=[XMAX] YMAX=[YMAX] ZMAX=[ZMAX] RMAX=RMAX )"
;
;
START = " "
START = " "
START = " (######## Set up program header ########)"
START = " "
START = " "
; Закоментирую,пока не пойму,что такое абсолютные координаты и зачем они нужны
;START = "G90"
; Установка единиц координат программы G20 - inches,G21 - mm.
START = "G21"
; Выбор плоскости XY для круговой интерполяций.Варианты выбора:
; XY - G17(Default),ZX - G18,YZ - G19 (UV - G17.1,WU - G18.1,VW - G19.1 не поддерживаются)
START = "G17"
;
START = " "
START = " "
START = " (START Select tools and change offset)"
START = " "
START = " "
START = " "
; Сделано на основе секций TOOLCHANGE
;
; Предпологается,что по неизвестной причине всё,что может и не может быть включено и установлено,включено и установлено.
;
; Отключение  основного и дополнительного охлаждения
; Иначе при смене инструмента СОЖ потечёт на пол:).
; Но впринципе это может быть и пылесос.
START = "M9"
; Отключение шпинделя
START = "M05"
; Пауза в 10 сек.,для того,чтобы шпиндель успел остановится.
START = "G04P10"
; Сброс настроек компенсаций инструмента.
START = "G40"
START = "G49"
; Переход в положение для смены инструмента
START = "[FR]"
START = "G53 G00 Z100"
START = "G53 G00 X350 Y150"
; Выбор инструмента
START = "T[T] M06"
; Переход в область работы
START = "[FR]"
START = "G53 G0 Z100"
START = "G00 [XH] [YH]"
; Задание настроек инструмента(должно быть)
START = "G40"
START = "G49"
; Переход в XY "дом" программы и остановка на безопасной высоте.
; Предполагается,что крепления заготовки вы поставили так,что шпиндель во время обработки их не заденет
; и соответсвенно любое перемещение в пределах поверхности [XMIN]-[XMAX] [YMIN]-[YMAX] [SZ] пройдёт без столкновений.
START = "G53 G0 Z100"
START = "G00 [XH] [YH]"
START = "G00 [SZ]"
; Включение основного охлаждения
START = "M8"
; Включение доплнительного охлаждения
;START = "M7"
; Включение  шпинделя,установка подачи на подачу врезания и установка частоты вращения шпинделя
START = "M03 [FP] [S]"
; Пауза на 10 сек.,чтобы шпиндель успел разогнаться
START = "G04P10"
;
START = " ( END  Select tools and change offset)"
;
START = " "
START = " "
START = " (######## END Set up program header ########)"
START = " "
START = " "
;
;
;
TOOLCHANGE = " "
TOOLCHANGE = " "
TOOLCHANGE = " (########  Toolchange ########)"
TOOLCHANGE = " "
TOOLCHANGE = " "
; Вывод инструмента на безопасную высоту,скорость [FP] или [FC],чтобы чего не испортить.
TOOLCHANGE = "[FR] G00 [SZ]"
; Отключение основного и дополнительного охлаждения
; Иначе при смене инструмента СОЖ потечёт на пол.
; Но впринципе это может быть и пылесос.
TOOLCHANGE = "M9"
; Отключение шпинделя
TOOLCHANGE = "M05"
; Пауза на 10 сек.,чтобы шпиндель успел остановиться.
TOOLCHANGE = "G04P10"
; Сброс настроек инструмента
TOOLCHANGE = "G40"
TOOLCHANGE = "G49"
; Переход в положение для ручной смены инструмента на максимальной высоте Z МАШИНЫ,чтобы чего не испортить.
TOOLCHANGE = "[FR]"
TOOLCHANGE = "G53 G0 100"
TOOLCHANGE = "G53 G0 X350 Y150"
; Смена инструмента
TOOLCHANGE = "T[T] M06"
; Переход в область измерения параметров компенсаций инструмента на максимальной высоте Z МАШИНЫ,чтобы чего не испортить.
TOOLCHANGE = "[FR]"
TOOLCHANGE = "G53 G0 100"
TOOLCHANGE = "G00 [XH] [YH]"
; Задание настроек инструмента,коррекция на длинну и диаметр.
; Пока просто отключаем до понимания того,как это делать.
TOOLCHANGE = "G40"
TOOLCHANGE = "G49"
; Переход в XY "дом" программы и остановка на безопасной высоте SZ.
; Предполагается,что крепления заготовки вы поставили так,что шпиндель во время обработки их не заденет
; и соответсвенно любое перемещение в пределах поверхности [XMIN]-[XMAX] [YMIN]-[YMAX] [SZ] пройдёт без столкновений.
TOOLCHANGE = "[FR]"
TOOLCHANGE = "G53 G0 100"
TOOLCHANGE = "G00 [XH] [YH]"
TOOLCHANGE = "G00 [SZ]"
; Включение основного охлаждения
TOOLCHANGE = "M8"
; Включение доплнительного охлаждения
;TOOLCHANGE = "M7"
; Включение  шпинделя,установка подачи на подачу врезания(предосторожность) и установка частоты вращения шпинделя
TOOLCHANGE = "M03 [S] [FP]"
; Пауза на 10 сек.,чтобы шпиндель успел разогнаться
TOOLCHANGE = "G04P10"
;
TOOLCHANGE = " "
TOOLCHANGE = " "
TOOLCHANGE = " (######## END  Toolchange ########)"
TOOLCHANGE = " "
TOOLCHANGE = " "
;
;
;
END = " "
END = " "
END = " (######## End of file ########)"
END = " "
END = " "
; Вывод инструмента
END = "[FC] G00 [SZ]"
; Сброс настроек инструмента
END = "G40"
END = "G49"
; Отключение охлаждения инструмента.
END = "M9"
; Отключение шпинделя
END = "M05"
; Пауза на 10 сек.,чтобы шпиндель успел остановиться.
END = "G04P10"
; Переход в положение для ручной смены инструмента
END = "[FR]"
END = "G53 G00 Z100"
END = "G53 G00 X350 Y150"
; Возвращение инструмента в магазин
END = "(T=[T],интересно,какое значение T сейчас,если 0,то может вызвать подпрограмму TOOLCHANGE?)"
END = "T0 M06"
; Парковка портала
END = "G53 G00 Z100"
END = "G53 G00 X350 Y800 Z100"
; Остальные действия перед отключением машины
; Отключение станка
END = "M30"
END = " "
END = " "
END = " (######## End of file ########)"
END = " "
END = " "

Линк на дремучий мануальник к языку написания постпроцессора для Арткама.http://mir-cnc.narod.ru/artcam/postprocessor_config.rar

Файлы ответственные за работу постпроцессора в Арткаме 2010:

Постпроцессор для ArtCam'а к LinuxCNC ArtCAM_postprocessor_files.png


config.dll - читает постпроцессоры с расширением *.con
pmpost.dll - читает файлы с расширением *.pmopt (предположительно),файлы должны находится в субдиректории optionfiles

Файлы с расширением *.con - постпроцессоры в формате программы ArtCAM
Файлы в каталоге optionfiles с расширением *.pmopt - постпроцессоры в формате программы Power Mill
Лишние файлы *.con и *.pmopt можно спокойно удалить оставив только файл нужный непосредственно в работе.
Файлы с другими расширениями за исключением config.dll и pmpost.dll также можно удалить.

Так же внимание привлекают файлы,на поверку оказывающиеся чем-то не нужным
Файл cldata.dll является постпроцессором создающим бинарные файлы с расширением *.cut.
Файл aux_dlls/Biesse.dll,не смотря на заманчивое название часть постпроцессора к станкам Biesse и общего значения не имеет.


Мануальник к языку написания постпроцессора для Арткама 2010
Post Processor Configuration Guide.pdf
(414.12 Кб) Скачиваний: 953

Старый мануальник к языку написания постпроцессора:
Postprocessor Configuration Guide.pdf
(97.35 Кб) Скачиваний: 371

Таблица кодов символов Арткама:
Код: Выделить всёРазвернуть
= 0
  = 9 табуляция??
= 10
= 13
  = 32
| = 124
~ = 126
% = 37
{ = 123
} = 125
( = 40
) = 41
* = 42
. = 46
/ = 47
: = 58
; = 59
= = 61
? = 63
@ = 64
\ = 92
^ = 94
! = 33
+ = 43
- = 45
$ = 36
& = 38
' = 39
, = 44
` = 96
_ = 95
" = 34
# = 35
< = 60
> = 62
[ = [91]
] = [93]
#<_   = [35][60][95]
>   = [62]
[#<_  = [91][35][60][95]
>]   = [62][93]
Последний раз редактировалось torvn77 20 сен 2017, 14:35, всего редактировалось 13 раз(а).
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение asutpka » 25 авг 2013, 13:43

Если поможет линк на более новый Guide http://hobbymaro.puhasoft.hu/Beni/AC/Po ... 0Guide.pdf

пс а куда делось два предыдущих поста? Странный какой-то тред.
Вложения
Постпроцессор для ArtCam'а к LinuxCNC 1.png
asutpka
Мастер
 
Сообщения: 292
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 76

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение torvn77 » 25 авг 2013, 14:15

Спасибо за линк,просто я понял что всё достаточно хорошо описано в generic'вых (GenericTextmm.con)постпроцессорах и удалил посты как мусор.
в принципе единственное что там имеет смысл это комманда поиска
Код: Выделить всёРазвернуть
 cd ~/Documents/Memory/con;
cat `ls -1`|grep '='|sort -u|grep CCW

Про Drill bank если нужен могу перепостить,но там у меня просто не рабочая солянка.
Последний раз редактировалось torvn77 25 авг 2013, 14:25, всего редактировалось 1 раз.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение asutpka » 25 авг 2013, 14:23

То есть в generic'вых постпроцессорах генерация кода для LinuxCNC происходит корректно и без непонятных артефактов?
asutpka
Мастер
 
Сообщения: 292
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 76

Справочник дляпостпроцессора к ArtCam 2010

Сообщение torvn77 » 25 авг 2013, 18:41

Может и не очень надо,но это эдакая шпаргалка по арткамовском постпроцессору.
Пользуйтесь на здоровье.
Код: Выделить всёРазвернуть
Список секций и их назначение:
      START = "(Начальная инициализация программы,установка глобальных параметров,)"
      START = "(первая смена инструмента,инициализация опорной координаты компенсаций на длинну и радиус,)"
      START = "(установка режима первой траекторий.)"
      END   = "(Конец файла:Возвращение инструмента и выключение станка)"
      TOOLCHANGE = ""
      FIRST_TOOLCHANGE = " (Раздел для первоначальной смены инструмента)"
      NEW_SEGMENT_PRE_TOOLCHANGE = " "
      NEW_SEGMENT_POST_TOOLCHANGE= " "
      ROTARY_A_INDEX = "(инициализация поворотной оси?)"
Глобальные данные:
   Данные:Название файла постпроцессора и путь к нему:
      [FILEDIRECTORY]   [FILEDIRECTORYU]
      [PATHNAME]   [PATHNAMEU]
      [FILENAME]   [FILENAMEU]
      [FILEEXTENSION]   [FILEEXTENSIONU]
   Параметр:Вызов внешней DLL постпроцессора и настроика её работы:
      AUX_DLL = "aux_dlls\biesse.dll"
      AUX_DLL_DATA = "DEBUG OUTPUT_TOOLS"|"OUTPUT_TOOLS"
   Параметр:Название постпроцессора в меню арткама:
      DESCRIPTION = " PostProcessor Name (*.ngc) "
   Параметр:Расширение создаваемого файла УП:
      FILE_EXTENSION = "*.ngc"
   Параметр:Настройка нумераций строк:
      LINE_NUM_START = 0010
      LINE_NUM_INCREMENT = 10
      LINE_NUM_INC_ON_USE = 1
      LINE_NUM_MAXIMUM = 99999999
      MAX_SEGMENT_LINES = 1000000 ~ 1800
   Параметр:Окончание строки:
      END_OF_LINE = "[10][13]"
   Параметр:Формат вывода переменных по умолчанию:
      FORMAT = "[N|@||1.0]"
   Параметр:Единицы измерения длинны файла
      Устанавливаются путём добавления в постпроцессор двух строк:
      Параметра UNITS и части секций START,
      в которой ЧПУ сообщается в каких единицах записана программа
         UNITS = MM
         START = "G21 (Programm to use millimeters for length units)"
      Если единицы измерения миллиметры,
      а если Inch:
         UNITS = INCH
         START = "G20 (Programm to use inches for length units.)"
   Данные:Характеристики рабочей зоны:
      [XMAX][YMAX][ZMAX]
      [XMIN][YMIN][ZMIN]
      [XSIZE][YSIZE][ZSIZE]
      [ZMATERIAL]
Команды и параметры движения:
   Данные: Стандартные подачи и частота вращения шпинделя
   (Определяются в начале файла и с каждой новой секцией TOOLCHANGE):
      [S][FC][FP][FR]
   Данные задаваемые для каждой отдельной комманды:
      [F]
      [X][Y][Z][R]
      [XI][YI][ZI]
      [J][I]
      [Angle]
      [Radius]
      [ArcMidX][ArcMidY]
      [ArcStartX][ArcStartY]
      [CCR][CCL][CCO]
   Параметры движения:
      RAPID_FEED_RATE = 99999
      FEED_RATE_STATEMENT = ???
      MIN_ARC_LENGTH = 0.01
   Команда установки текущей подачи:
      FEED_RATE_CHANGE       = "F[F]"
   (Логика работы её не ясна,поэтому предостерегаю от её использования)
   Комманды движения:
      ;
      ;
      FIRST_RAPID_RATE_MOVE  = ""
      RAPID_RATE_MOVE        = ""
      ;
      FIRST_PLUNGE_RATE_MOVE = ""
      PLUNGE_RATE_MOVE       = ""   
      ;
      RETRACT_MOVE           = ""
      ;
      FIRST_FEED_RATE_MOVE   = ""
      FEED_RATE_MOVE         = ""
      ;
      CCOMP_RIGHT = "[CCR] D[T] [F] [10][13]G01[X][Y]"
      CCOMP_LEFT  = "[CCL] D[T] [F] [10][13]G01[X][Y]"
      CCOMP_OFF   = "[CCO] H[T] [F] [10][13]G01[X][Y]"
      ;
      FIRST_CW_ARC_MOVE      = ""
      CW_ARC_MOVE            = ""
      ;
      FIRST_CCW_ARC_MOVE     = ""
      CCW_ARC_MOVE           = ""
      ;
Секция START:
   Опрашиваемые данные:
      [T][TP]
   Данные для опроса:
      [FILEDIRECTORY]   [FILEDIRECTORYU]
      [PATHNAME]   [PATHNAMEU]
      [FILENAME]   [FILENAMEU]
      [FILEEXTENSION]   [FILEEXTENSIONU]
      [XMAX][YMAX][ZMAX]
      [XMIN][YMIN][ZMIN]
      [XSIZE][YSIZE][ZSIZE]
      [ZMATERIAL]
      [S][FC][FP][FR]
      [TOOLDESC][TOOLDESCU]
      [TOOLPATHNAME][TOOLPATHNAMEU]
Секция TOOLCHANGE:
   Параметры:   
      TOOL_OFFSET_ALWAYS = YES|NO
      TOOL_XYZ_OFFSET = "START_TOOL_NO END_TOOL_NO X_OFFSET Y_OFFSET Z_OFFSET"
      TOOL_XYZ_OFFSET = "3 4 100.0 200.0 100.0"
   Синтаксис секций:
      TOOLCHANGE = ""
      FIRST_TOOLCHANGE = " "
      NEW_SEGMENT_PRE_TOOLCHANGE = " "
      NEW_SEGMENT_POST_TOOLCHANGE = " "
   Комманды:
   Опрашиваемые данные:
      [T][TP]
   Изменяемые данные:
      [S][FC][FP][FR]
      [TOOLDESC][TOOLDESCU]
      [TOOLPATHNAME][TOOLPATHNAMEU]
Секция ROTARY_A_INDEX и параметры поворотной оси:
   Параметры секций поворотной оси:
      ALLOW_ROTARY_OVER_360 = YES|NO
      ROTARY_AXIS_SIGNED = YES|NO
      ROTARY_ORIGIN_IS_CENTRE = YES|NO
      Выбор оси,которой будет паралельна ось вращения (X или Y):
      ROTARY_AXIS = X|Y
      Показывать диалог с параметрами при созданий УП в арткаме:
      ROTARY_AXIS_DIALOG = YES|NO
   Данные секций поворотной оси:
      [ROTARY_DIAMETER] (Wrapping Diameter)
      [ROTARY_RADIUS] (Wrapping Radius)
      [ROTARY_THICKNESS] (Wrapping Diameter)
      [ROTARY_Z_OFFSET_FROM_CENTRE] (Internal Diameter)
   Синтаксис секций поворотной оси:
      ROTARY_A_INDEX = ""
      ROTARY_A_INDEX = "G0 A[AH]" 
      ROTARY_A_INDEX = ""
Секция цикла сверления :
      SPINDLE_ON = ""
      SPINDLE_OFF = ""
      ; Drill bank on - at start of drill bank toolpath
      ; Start drill bank motor
      ; M15 router head off
      ; M23 starts drill bank motor
      ; M21 drill head down
      DRILLBANK_ON = " "
      DRILLBANK_ON = "Drill Bank ON"
      DRILLBANK_ON = "T[]M3[13][10]G55"
      DRILLBANK_ON = "T1 M3"
      DRILLBANK_ON = "T0 D0[13][10]M06"
      DRILLBANK_ON = "M15 [13][10]G90 G55 M23 M21"
      DRILLBANK_ON = " "
      ;
      ; Drill Bank Off - at end of drill bank toolpath
      ; Stop drill bank motor,Retracts all extended drills
      ; M05 stops drill bank moter,
      ; T[0] Retracts all extended drills,
      ; [S] calls spindle speed for next toolpath
      ; G97 [S] calls spindle speed for next toolpath
      DRILLBANK_OFF = " "
      DRILLBANK_OFF = "Drill Bank OFF"
      DRILLBANK_OFF = "M05"
      DRILLBANK_OFF = "M06T0[13][10]G97[S]"
      DRILLBANK_OFF = "M05[13][10]T[0][13][10][S]"
      ; M48 stops drill bank moter
      DRILLBANK_OFF = "M48"
      ; M25 stops drill bank motor
      DRILLBANK_OFF = "M25"
      ; Drill Bank Off is only called out if there are toolpaths to follow the drilling

      ; Drill Pattern Start
      DRILLPATTERN_START = " "
      DRILLPATTERN_START = "Drill Pattern Start, Reference Drill [DREF]"
      DRILLPATTERN_START = " "
      ;
      ; Drill Pattern Change
      ;
      ; [DB] is the drill number binary sum
      ; Drill pattern start, using DREF the reference drill (first in DRILL_LIST)
      DRILLCHANGE =" "
      DRILLCHANGE ="Binary Sum of all Drills Fired [DB]"
      DRILLCHANGE =" "
      DRILLCHANGE ="T[DB]M91[13][10]M3"
      DRILLCHANGE ="T[DB]M06"
      DRILLCHANGE ="G98 P300 D[DB]"
      DRILLCHANGE =" "
      ;
      ; [D] is drill number
      ; [D] calls each drill number being used
      DRILL_LIST = " "
      DRILL_LIST = "Drill List of Each Drill Fired [D]"
      DRILL_LIST = " "
      DRILL_LIST = "M06 T[D]"
      ;
      DRILLCHANGE ="T[DREF] D[DREF]"
      ;
      ; [DBX] calls the Binary Sum of all X drills being used
      ; [DBY] calls the Binary Sum of all Y drills being used
      ; 'Order of operation is always output from top to bottom'
      ;
      DRILLCHANGE_X = " "
      DRILLCHANGE_X = "(LOG,Drill Bank X Axis ONLY [DBX] )"
      DRILLCHANGE_X = "M88 T[DBX]"
      DRILLCHANGE_X = " "
      ;
      DRILLCHANGE_Y = " "
      DRILLCHANGE_Y = "(LOG,Drill Bank Y Axis ONLY [DBY] )"
      DRILLCHANGE_Y = "M89 T[DBY]"
      DRILLCHANGE_Y = " "
Параметры с неизвестным функционированием:
      [COMMENT][COMMENTU]
      [SZ]
      [AH][RH][XH][YH][ZH]
   Пользовательские переменные:
      [USER1][USER1U]
      [USER2][USER2U]
      [USER3][USER3U]
      [USER4][USER4U]
      [USER5][USER5U]
      [USER6][USER6U]
      [USER7][USER7U]
      [USER8][USER8U]
      [USER9][USER9U]
Код: Выделить всёРазвернуть
FORMAT=[R|@||1.5|]
FORMAT=[X|@||1.5|]
FORMAT=[Y|@||1.5|]
FORMAT=[Z|@||1.5|]
;
FORMAT=[AH|@||1.3|]
FORMAT=[RH|@||1.3|]
FORMAT=[XH|@||1.3|]
FORMAT=[YH|@||1.3|]
FORMAT=[ZH|@||1.3|]
;
FORMAT=[I|@|I|1.5|]
FORMAT=[J|@|J|1.5|]
FORMAT=[IA|@|X|1.6|]
FORMAT=[JA|@|Y|1.6|]
FORMAT=[IA|@|I|1.6|]
FORMAT=[IA|@|IA|1.6|]
;
FORMAT=[XI|@||1.6|]
FORMAT=[YI|@||1.6|]
FORMAT=[ZI|@||1.6|]
;
FORMAT=[Angle|@|||]
FORMAT=[Radius|@|||]
FORMAT=[ArcStartX|@|||]
FORMAT=[ArcStartY|@|||]
FORMAT=[ArcMidX|@|||]
FORMAT=[ArcMidY|@|||]
;
Format=[T|@||1.0]
Format=[TP|@||1.0]
FORMAT=[D|@||1.0|]
FORMAT=[DB|@||1.0|]
FORMAT=[DBX|@||1.0|]
FORMAT=[DBY|@||1.0|]
FORMAT=[DREF|@||1.0|]
;
FORMAT=[S|@||1.0]
FORMAT=[F|@||1.0|]
FORMAT=[FC|@||1.0|]
FORMAT=[FP|@||1.0|]
FORMAT=[FR|@||1.0|]

;
FORMAT=[N|@||1.0]
;
FORMAT=[SZ|@||1.2|]
;
FORMAT=[ZMATERIAL|@||1.2|]
;
FORMAT=[XMAX|@||1.2|]
FORMAT=[YMAX|@||1.2|]
FORMAT=[ZMAX|@||1.2|]
;
FORMAT=[XMIN|@||1.2|]
FORMAT=[YMIN|@||1.2|]
FORMAT=[ZMIN|@||1.2|]
;
FORMAT=[XSIZE|@||1.2|]
FORMAT=[YSIZE|@||1.2|]
FORMAT=[ZSIZE|@||1.2|]
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Рабочий одноинструментный постпроцессор для Арткама 2010

Сообщение torvn77 » 03 сен 2013, 09:49

Правда без комментариев,но их можно найти в первом посте.
У него есть косяк,хотя поворотная ось отключенна,при первом движений он переводит её в ноль.
После создания файла надо удалить А0 из первого перемещения либо все [R] из команд движения
Код: Выделить всёРазвернуть
;
; G - Code configuration file
; Postprocessor for ArtCAM 2010
;
DESCRIPTION = "G-Code (mm) (*.ngc)"
;
FILE_EXTENSION = "ngc"
;
UNITS = MM
;
; Cariage return - line feed at end of each line
;
END_OF_LINE = "[13][10]"
;
; Block numbering
;
LINE_NUM_START     = 0
LINE_NUM_INCREMENT = 1
LINE_NUM_MAXIMUM   = 99999999
;LINE_NUM_INC_ON_USE = 1
;MAX_SEGMENT_LINES = 1000000
;
; Set up default formating for variables
;
; Line numbering
FORMAT = [N|@|N|1.0]
; Spindle Speed
FORMAT = [S|@|S|1.0]
; Feed Rate
FORMAT = [F|#|F|1.0]
FORMAT = [FC|@|F|1.0]
FORMAT = [FP|@|F|1.0]
FORMAT = [FR|@|F|1.0]
; Tool moves
FORMAT = [R|#|A|1.6]
FORMAT = [X|#|X|1.6]
FORMAT = [Y|#|Y|1.6]
FORMAT = [Z|#|Z|1.6]
;
FORMAT = [I|#|I|1.6]
FORMAT = [J|#|J|1.6]
;
FORMAT = [SZ|@|Z|1.1]
;
FORMAT = [AH|@|A|1.0]
FORMAT = [XH|@|X|1.0]
FORMAT = [YH|@|Y|1.0]
FORMAT = [ZH|@|Z|1.0]
;
; Program moves
;
RAPID_FEED_RATE = 99999999
MIN_ARC_LENGTH = 0.05
;
RAPID_RATE_MOVE        = "G0   [R]   [X]   [Y]   [Z]   [F]   (RRM)"
RETRACT_MOVE           = "G0   [R]   [X]   [Y]   [Z]   [F]   (RtM)"
;
PLUNGE_RATE_MOVE       = "G1   [R]   [X]   [Y]   [Z]   [F]   (PRM)"
;
FIRST_FEED_RATE_MOVE   = "G1   [R]   [X]   [Y]   [Z]   [F]   (F_FRM)"
FEED_RATE_MOVE         = "   [R]   [X]   [Y]   [Z]   "
;
FIRST_CW_ARC_MOVE      = "G2   [R]   [X]   [Y]   [Z]   [I]   [J]   [F]   (F_CW)"
CW_ARC_MOVE            = "   [R]   [X]   [Y]   [Z]   [I]   [J]   (CW)"
;
FIRST_CCW_ARC_MOVE     = "G3   [R]   [X]   [Y]   [Z]   [I]   [J]   [F]   (F_CCW)"
CCW_ARC_MOVE           = "   [R]   [X]   [Y]   [Z]   [I]   [J]   (CCW)"
;
; Секция ROTARY_A_INDEX и параметры поворотной оси:
;   Параметры секций поворотной оси(YES|NO):
ALLOW_ROTARY_OVER_360 = YES
ROTARY_ORIGIN_IS_CENTRE = YES
ROTARY_AXIS_SIGNED = NO
; Выбор оси,которой будет паралельна ось вращения (X или Y):
;ROTARY_AXIS = X
; Показывать диалог с параметрами при созданий УП в арткаме:
;ROTARY_AXIS_DIALOG = YES
;
ROTARY_A_INDEX = ""
ROTARY_A_INDEX = "Rotary Axis Section"
ROTARY_A_INDEX = ""
ROTARY_A_INDEX = "(G0 [AH])"
ROTARY_A_INDEX = ""
ROTARY_A_INDEX = "End Rotary Axis Section"
ROTARY_A_INDEX = ""
;
START = " "
START = "(FIRST TOOL INFORMATION)"
START = "(   COMMENT:   [COMMENT|@]   )"
START = "(   TOOLPATCHNAME:   [TOOLPATHNAME|@]   )"
START = "(   TOOLDESC:   [TOOLDESC|@]   )"
START = ""
START = "(   SZ = [SZ|@||1.1]   )"
START = "(MATERIAL:)"
START = "(   X_MIN:   [XMIN|@||1.6]   Y_MIN:   [YMIN|@||1.6]   Z_MIN:   [ZMIN|@||1.6]   )"
START = "(   X_MAX:   [XMAX|@||1.6]   Y_MAX:   [YMAX|@||1.6]   Z_MAX:   [ZMAX|@||1.6]   )"
START = "(   X_SIZE:   [XSIZE|@||1.6]   Y_SIZE:   [YSIZE|@||1.6]   Z_SIZE:   [ZSIZE|@||1.6]   )"
START = "(   THICKNESS Z: [ZMATERIAL|@||1.6]   )"
START = ""
START = "(FEED RATES:) "
START = "(   SPINDLE SPEED      : [S|@||1.1]   r.p.m      )"
START = "(   CUTTING FEED RATE   : [FC|@||1.1]   units/min   )"
START = "(   PLUNGE FEED RATE   : [FP|@||1.1]   units/min   )"
START = "(   RAPID FEED RATE      : [FR|@||1.1]   units/min   )"
START = " "
START = "(ROTARY AXIS:)"
START = "(   Wrapping Diameter:   [ROTARY_DIAMETER|@||1.6]   )"
START = "(   Wrapping Radius:   [ROTARY_RADIUS|@||1.6]   )"
START = "(   Ring Thickness:      [ROTARY_THICKNESS|@||1.6]   )"
START = "(   Internal Diameter:   [ROTARY_Z_OFFSET_FROM_CENTRE|@||1.6]   )"
START = ""
START = "(   AH = [AH|@||1.1]   )"
START = "(   RH = [RH|@||1.1]   )"
START = "(   XH = [XH|@||1.1]   )"
START = "(   YH = [YH|@||1.1]   )"
START = "(   ZH = [ZH|@||1.1]   )"
START = ""
START = "(   USER1 = [USER1|@]   )"
START = "(   USER2 = [USER2|@]   )"
START = "(   USER3 = [USER3|@]   )"
START = "(   USER4 = [USER4|@]   )"
START = "(   USER5 = [USER5|@]   )"
START = "(   USER6 = [USER6|@]   )"
START = "(   USER7 = [USER7|@]   )"
START = "(   USER8 = [USER8|@]   )"
START = "(   USER9 = [USER9|@]   )"
START = ""
START = "(   CCR = [CCR|@]   )"
START = "(   CCL = [CCL|@]   )"
START = "(   CCO = [CCO|@]   )"
START = ""
START = "(   D = [D|@||1.1]      )"
START = "(   DB = [DB|@||1.1]   )"
START = "(   DBX = [DBX|@||1.1]   )"
START = "(   DBY = [DBY|@||1.1]   )"
START = "(   DREF = [DREF|@||1.1]   )"
START = ""
START = ""
;
; Set up program header
;
START = ""
START = "G21"
START = ""
;
START = ""
START = "G61.1G40G49"
START = "(MSG,TOOLPATHNAME:   [TOOLPATHNAME])"
START = "(MSG,TOOLDESC:   [TOOLDESC])"
START = "(MSG,[COMMENT])"
START = "(MSG,Please,insert tool and press pause buton from continUOus working programm)"
START = "G53 G0 Z100"
START = "G53 G0 X350 Y150"
START = "M1"
START = ""
;
START = ""
START = "G53 G0 Z100"
START = "[S]M3"
START = "G00 [XH][YH]"
START = "G04P8"
START = "G17"
START = "( Коды управления движением М52 и G64,М52 закаментирован до понимания его работы)"
START = "G64P0.05Q0.05"
START = "(M52)"
START = "G00 [ZH]"
START = "(M8)"
START = "(M7)"
START = ""
;
; End of file
;
END = ""
END = "G61G40G49"
END = "G0[SZ]"
END = "M09M05"
END = "G04P8"
END = "G53 G00 Z100"
END = ""
;END = "(MSG,Please,eject tool and press pause button from continuous stopping programm)"
;END = "G53 G0 Z100"
;END = "G53 G0 X350 Y150"
;END = "M1"
END = ""
END = "G53 G00 Z100"
END = "G53 G00 X350 Y800"
END = "M30"
END = ""
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение torvn77 » 07 сен 2013, 11:30

Архивное сообщение:
Проект постпроцессора для трёхосевого фрезера к Арткаму.
Сделан так,Арткам генерирует bash скрипт,а он уже после запуска генерирует УП путём вызова функций из папки ./Function.
После освоения вызова подпрограмм в g-cod'e считаю эту идею не оправданно сложной (см O-codes:Subroutines).
Но если комуто захочется сохранить УП как базу данных,
то ему остаётся только что соответсвующею функцию RegistrAction().
Код: Выделить всёРазвернуть
;
; Bash - G-Code XYZ Artcam post processor
; License: GPL v2
; Author : torvn77
; email  : torvn77@mail.ru
; Справка по языку программирования Bash (rus)      :  http://ru.wikipedia.org/wiki/Bash
; Справка по языку программирования Bash (en)      :  http://www.gnu.org/software/bash/manual/bashref.html
; Документация и описание программы LinuxCNC (en)   :  http://linuxcnc.org/docs/html/
; Быстрый обзор поддерживаемого LinuxCNC G-cod'a (en)   :  http://linuxcnc.org/docs/html/gcode.html
; Рускоязычная тема,посвящённая G-cod'у         :  viewtopic.php?f=15&t=113
;
;
; ######## Параметры файла ########
;
;
; Название постпроцессора в менюшке Арткама
DESCRIPTION = "Bash header script (mm) (*.src)"
; Расширение файла,которое ему будет присвоено при созданий
FILE_EXTENSION = "src"
; Система едениц,в которой написан постпроцессор
UNITS = MM
;
; Правила нумерования строк
FORMAT = [N|@||1.0]
LINE_NUM_START     = 0
LINE_NUM_INCREMENT = 1
LINE_NUM_MAXIMUM   = 999999
;
;Стандарт окончания строки в Linux:
;END_OF_LINE = "[10]"
;Стандарт окончания строки в Windows(Default):
END_OF_LINE = "[13][10]"
;
;
; ######## Установка формата переменных ########
;
;
; Формат и правила подстановки номера текущего инструмента
FORMAT = [T|@||1.0]
; Формат и правила подстановки номера прошлого инструмента
FORMAT = [TP|@||1.0]
;
; Формат и правила подстановки скорости шпинделя
FORMAT = [S|@||1.0]
;
; Формат и правила подстановки координаты X и параметров на её основе.
FORMAT = [X|@||+1.4]
; X-координата домашней точки ПРОГРАММЫ.
FORMAT = [XH|@||+1.4]
; Крайние точки рельефа по координате X
FORMAT = [XMIN|@||+1.4]
FORMAT = [XMAX|@||+1.4]
;
; Формат и правила подстановки координаты Y и параметров на её основе.
FORMAT = [Y|@||+1.4]
; Y-координата домашней точки ПРОГРАММЫ.
FORMAT = [YH|@||+1.4]
; Крайние точки рельефа по координате Y
FORMAT = [YMIN|@||+1.4]
FORMAT = [YMAX|@||+1.4]
;
; Формат и правила подстановки координаты Z и параметров на её основе.
FORMAT = [Z|@||+1.4]
; Z-координата домашней точки ПРОГРАММЫ.
FORMAT = [ZH|@||+1.4]
; Безопасная высота по Z
FORMAT = [SZ|@||+1.4]
; Крайние точки рельефа по координате Z
FORMAT = [ZMIN|@||+1.4]
FORMAT = [ZMAX|@||+1.4]
;
; Формат и правила подстановки координаты оси вращения R и параметров на её основе.
FORMAT = [R|@||+1.4]
; R-координата домашней точки ПРОГРАММЫ.
FORMAT = [RH|@||+1.4]
;
; Относительные координаты центра дуги для круговой интерполяций (G02,G03)
FORMAT = [I|@||+1.4]
FORMAT = [J|@||+1.4]
FORMAT = [K|@||+1.4]
;
; Формат скорости перемещения ((units|mm)/min),автоматически назначаемой Арткамом выбором из переменных
; [FR],[FC] или [FP] соответствующих текущему инструменту или траекторий.
FORMAT = [F|@||1.1]
; Формат скорости быстрого перемещения (units|mm)/min
FORMAT = [FR|@||1.1]
; Формат скорости врезания (units|mm)/min
FORMAT = [FP|@||1.1]
; Формат скорости подати материала (units|mm)/min
FORMAT = [FC|@||1.1]
;
;
; ######## Program moves ########
;
;
;
; Установка скорости БЫСТРОГО перемещения [FR] в максимальное для станка значение.
; В LinuxCNC используется S-образный график ускорения,так что резкого торможения и связанных с ним проскоков координат быть не должно.
RAPID_FEED_RATE        =  3300
;
; Задание команды изменения скорости перемещения.
;FEED_RATE_CHANGE      = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R]; Action_Type=FEED_RATE_CHANGE ; Form_Type=FIRST ;   RegistrAction() ; "
;
; Задание команды подъёма по Z .
RETRACT_MOVE           = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=RETRACT_MOVE ; Form_Type=FIRST ;   RegistrAction() ; "
;
; Задание команды опускания по Z.
PLUNGE_RATE_MOVE       = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=PLUNGE_RATE_MOVE ; Form_Type=FIRST ;   RegistrAction() ; "
;
; Задание в сокращённой и полной (FIRST_) форме команды быстрого перемещения.
FIRST_RAPID_RATE_MOVE  = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=RAPID_RATE_MOVE ; Form_Type=FIRST ;      RegistrAction() ; "
RAPID_RATE_MOVE        = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=RAPID_RATE_MOVE ; Form_Type="FIRST ;   RegistrAction() ; "
;
; Задание в сокращённой и полной (FIRST_) форме команды линейной резки.
FIRST_FEED_RATE_MOVE   = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=FEED_RATE_MOVE ; Form_Type=FIRST ;   RegistrAction() ; "
FEED_RATE_MOVE         = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=FEED_RATE_MOVE ; Form_Type=SECOND ;   RegistrAction() ; "
;
; Задание в сокращённой и полной (FIRST_) форме команды резки по дуге по часовой стрелке.
FIRST_CW_ARC_MOVE      = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=CW_ARC_MOVE ; Form_Type=FIRST ; I=[I] ; J=[J] ; K=[K] ;   RegistrAction(); "
CW_ARC_MOVE            = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=CW_ARC_MOVE ; Form_Type=SECOND ; I=[I] ; J=[J] ; K=[K] ;   RegistrAction(); "
;
; Задание в сокращённой и полной (FIRST_) форме команды резки по дуге против часовой стрелки.
FIRST_CCW_ARC_MOVE     = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=CCW_ARC_MOVE ; Form_Type=FIRST  ; I=[I] ; J=[J] ; K=[K] ;   RegistrAction(); "
CCW_ARC_MOVE           = "N=[N] ; F=[F] ; S=[S] ; X=[X] ; Y=[Y] ; Z=[Z] ; R=[R] Action_Type=CCW_ARC_MOVE ; Form_Type=SECOND ; I=[I] ; J=[J] ; K=[K] ;   RegistrAction(); "
;
;
; ######## END Program moves ########
;
;
START = "#!/bin/bash "
START = "# "
START = "./func/* # Function Import"
START = " "
START = "ArtCam_XH=[XH]"
START = "ArtCam_YH=[YH]"
START = "ArtCam_ZH=[ZH]"
START = "ArtCam_RH=[RH]"
START = "ArtCam_XMIN=[XMIN]"
START = "ArtCam_YMIN=[YMIN]"
START = "ArtCam_ZMIN=[ZMIN]"
START = "ArtCam_RMIN=NULL"
START = "ArtCam_XMAX=[XMAX]"
START = "ArtCam_YMAX=[YMAX]"
START = "ArtCam_ZMAX=[ZMAX]"
START = "ArtCam_RMAX=NULL"
START = "ArtCam_PATHNAME=[PATHNAME]"
START = "ArtCam_FILENAME=[FILENAME]"
START = " "
START = " "
START = " "
;
;
;
TOOLCHANGE = " "
TOOLCHANGE = " "
TOOLCHANGE = "   ########  Toolchange ########"
TOOLCHANGE = " "
TOOLCHANGE = "ArtCam_N=[N]"
TOOLCHANGE = "ArtCam_TP=[TP] "
TOOLCHANGE = "ArtCam_T=[T] "
TOOLCHANGE = "ArtCam_TOOLDESC=[TOOLDESC]"
TOOLCHANGE = "ArtCam_FR=[FR]"
TOOLCHANGE = "ArtCam_FP=[FP]"
TOOLCHANGE = "ArtCam_FC=[FC]"
TOOLCHANGE = "ArtCam_S=[S] "
TOOLCHANGE = "ArtCam_SZ=[SZ]"
TOOLCHANGE = " "
TOOLCHANGE = "Action_Type=TOOLCHANGE"
TOOLCHANGE = "   RegistrAction() #Call func to registr action"
TOOLCHANGE = "   ######## END  Toolchange ########"
TOOLCHANGE = " "
;
;
;
END = " "
END = " "
END = "Action_Type=END_Programm"
END = "   RegistrAction() #Call func to registr action"
END = " (######## End of file ########)"
END = " "
END = " "
END = " "
END = " "
END = " (######## End of file ########)"
END = " "
END = " "
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение michael-yurov » 07 сен 2013, 12:31

torvn77, объясни тем, кто в танке, что это все и зачем?
Т.е. я понимаю, что такое постпроцессор для арткама... но чем они отличаются от стандартных?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10056
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3622
Медальки:
Настоящее имя: Михаил Львович

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение РЕКЛАМА » 23 сен 2013, 20:53

Я "переделал" постпроцессор от МАЧа, теперь сохраняет с видимым сразу EMC расширением и, до кучи, поменял назвние.

Так нельзя делать?
Или есть какие-то существенные различия?

Всё работает вроде как надо..
Аватара пользователя
РЕКЛАМА
Почётный участник
Почётный участник
 
Сообщения: 718
Зарегистрирован: 11 дек 2012, 21:46
Откуда: Брянск
Репутация: 78
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение torvn77 » 23 сен 2013, 21:27

Откройте файл с УП и посмотрите что там нагенерилось,в часности сделаное на основе разделов START END TOOLCHANGE.
Если всё устраивает то значит всё впорядке.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение alfa » 26 май 2014, 11:08

Здравствуйте. У меня вопрос к сторожилам по постпроцессору для станка Gerber Sabre 408. Из списка постпроцессоров в Artcam используем D200, но шпиндель не слушается задаваемых оборотов.
Может быть причина здесь?

Spindle Speed
FORMAT = [S|@||1.0]

alfa-kg@mail.ru
alfa
Новичок
 
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение aaleksander » 26 май 2014, 11:58

alfa писал(а):Здравствуйте. У меня вопрос к сторожилам по постпроцессору для станка Gerber Sabre 408. Из списка постпроцессоров в Artcam используем D200, но шпиндель не слушается задаваемых оборотов.
Может быть причина здесь?

Spindle Speed
FORMAT = [S|@||1.0]

alfa-kg@mail.ru


Возможно, это из-за того, что сначала ты включаешь шпиндель, а потом задаешь обороты. Или наоборот :thinking:
aaleksander
Мастер
 
Сообщения: 576
Зарегистрирован: 23 авг 2013, 18:04
Откуда: г. Ухта
Репутация: 117
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение alfa » 26 май 2014, 13:18

Включение шпинделя и обороты задаются в программе. Причём в родном ПО к станку проблем не возникает.
alfa
Новичок
 
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение Nick » 27 май 2014, 08:26

В том смысле, что сначала идет M3, а потом S1000.

Скинь пример программы, которая не работает...
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1330
Заслуга: Developer
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение alfa » 27 май 2014, 08:52

Код: Выделить всёРазвернуть
;
; Gerber GSP output for use by ArtCAM Gerber Spooler
;
; History
;
; Who When     What
; === ======== ========================================
; BEM 06/04/98 Written for Gerber
; bem 21/03/00 Added DESCRIPTION and FILE_EXTENSION fields
; JAB 18/12/01 Changed feedrate multiplier to be correct for D200
;
DESCRIPTION = "Gerber D200(*.ger)"
;
FILE_EXTENSION = "ger"
;
; All output units in inches
;
UNITS=INCH
;
; Cariage return - line feed at end of each line
;
END_OF_LINE = "[13][10]"
;
;RAPID_FEED_RATE = 600
;
; Set up default formating for variables
;
; Spindle Speed
FORMAT = [S|@||1.0]
; Feed Rate
FORMAT = [FC|@||1.0|1.0]
FORMAT = [FP|@||1.0|1.0]
; Tool moves in x,y and z
FORMAT = [X|@||1.5]
FORMAT = [Y|@||1.5]
FORMAT = [Z|@||1.5|-1.0]
; Home tool positions
FORMAT = [XH|@||1.5]
FORMAT = [YH|@||1.5]
FORMAT = [ZH|@||1.5]
; Tool Number
FORMAT = [T|@||1.0]
;
;
;
; Set up program header
;
;START = "#T[TOOLDESC]"
; initialize selected axis (all axis)
START = "#R4000"
; Tool select - pen
START = "#R4100"
; Set Tool up position z= 0.25
START = "#R49000061A8"
START = "#MJob Start. Load Matl"
START = "#L[XMIN] [YMIN] [ZMIN] [XMAX] [YMAX][ZMAX]"
; Tool select - cut
START = "#R4101"
; initialize selected axis (z axis)
START = "#R4001"
; Tool description and spindle speed
START = "#M[T]:[TOOLDESC] <[S] R.P.M>"
; Set Tool Down Position
START = "#R4A00000001"
START = "#F[FC]"
START = "#P[FP]"

;START = "#C[FILENAME]: Press START"
;START = "#N[T]"
;START = "#S[S]"
;START = "#P[FP]"
; Output raw gerber commands
;
; Program moves
;
; Rapid rate
;FIRST_RAPID_RATE_MOVE = "#F[F][13][10]#A[X] [Y] [Z]"
;RAPID_RATE_MOVE       = "#A[X] [Y] [Z]"

RAPID_RATE_MOVE  = "#A[X] [Y] [Z]"
FEED_RATE_MOVE   = "#B[X] [Y] [Z]"
PLUNGE_RATE_MOVE = "#C[X] [Y] [Z]"
RETRACT_MOVE     = "#D[X] [Y] [Z]"

;
; Feed Rate
;
;FIRST_FEED_RATE_MOVE = "#F[F][13][10]#B[X] [Y] [Z]"
;FEED_RATE_MOVE       = "#B[X] [Y] [Z]"
;
; End of file
;
;
; Toolchange moves (only output for 2nd and later tools )
;
TOOLCHANGE = "#M[T]:[TOOLDESC] <[S] R.P.M>"
TOOLCHANGE = "#F[FC]"
TOOLCHANGE = "#P[FP]"
alfa
Новичок
 
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение Nick » 27 май 2014, 08:59

Лучше готовый Gкод скинь посмотреть...
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1330
Заслуга: Developer
Медальки:

Re: Постпроцессор для ArtCam 'а к LinuxCNC

Сообщение torvn77 » 20 янв 2015, 23:07

Сделал версию постпроцессора с восстановлением части параметров при запуске не сначала программы,
а начальной команды субтраектории:
gcode_mm-v3_G1.con.zip
(1.01 Кб) Скачиваний: 231

полная версия предыдущего постпроцессора,в нём есть команды круговой интерполяции,
но Арткам не всегда корректно задаёт их значение,поэтому лучше пользоваться обрезанной без них.
gcode_mm-v3.con.zip
(1.1 Кб) Скачиваний: 227

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

Все версии постпроцессоров писались и проверялись месяц назад один раз.
Так что перед использованием хорошо бы их проверить.
Вложения
gcode_mm-v2.con.zip
(1.31 Кб) Скачиваний: 197
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam'а к LinuxCNC

Сообщение torvn77 » 10 дек 2015, 12:39

Постпроцессор для снятия фаски с частичной выборкой остатков.
Все траектории ниже некоторой высоты z_min считает снятием фаски,
а выше этой высоты выборкой материала и соответственно меняет скорость подачи.
Код: Выделить всёРазвернуть
START = "#<_safe_z> = [SZ]"
START = " "
START = "#<_plunge_feed>           = [FP]"
START = "#<_plunge_shpindle_speed> = [S]"
START = " "
START = "#<_line_feed>           = [FC]"
START = "#<_line_shpindle_speed> = [S]"
START = " "
START = "#<_if_z_move_feed>           = #<_plunge_feed>"
START = "#<_if_z_move_shpindle_speed> = #<_plunge_shpindle_speed>"
START = " "
START = "#<_curve_feed>           = #<_line_feed>"
START = "#<_curve_shpindle_speed> = #<_line_shpindle_speed>"
START = " "
START = " "
START = "#<_z_min>  = -1.50"

Код: Выделить всёРазвернуть
START = "O<g01_int> sub"
START   = "[9]O<g01_if1> if [91][91]#<_z> LE #<_z_min>[93] AND [91]#3 LE #<_z_min>[93][93]"
START     = "[9][9]F#<_line_feed> S#<_line_shpindle_speed>"
START     = "[9][9]G01 X#1 Y#2 Z#3"
START   = "[9]O<g01_if1> else"
START     = "[9][9]F#<_if_z_move_feed> S#<_if_z_move_shpindle_speed>"
START     = "[9][9]G01 X#1 Y#2 Z#3"
START   = "[9]O<g01_if1> endif"
START = "O<g01_int> endsub"

Код: Выделить всёРазвернуть
FIRST_RAPID_RATE_MOVE   = "(Rp)[10]O<rapid_int> call [91][X][93] [91][Y][93] [91][Z][93]"
RAPID_RATE_MOVE                 = "O<rapid_int> call [91][X][93] [91][Y][93] [91][Z][93]"

RETRACT_MOVE          = "(Rt)[10]O<retract_int> call [91][X][93] [91][Y][93] [91][Z][93]"

FIRST_PLUNGE_RATE_MOVE = "(Pl)[10]O<plunge_int> call [91][X][93] [91][Y][93] [91][Z][93]"
PLUNGE_RATE_MOVE               = "O<plunge_int> call [91][X][93] [91][Y][93] [91][Z][93]"

FIRST_FEED_RATE_MOVE      = "(Ln)[10]O<g01_int> call [91][X][93] [91][Y][93] [91][Z][93]"
FEED_RATE_MOVE                    = "O<g01_int> call [91][X][93] [91][Y][93] [91][Z][93]"

FIRST_CW_ARC_MOVE         = "(CW)[10]O<g02_int> call [91][X][93] [91][Y][93] [91][Z][93] [91][I][93] [91][J][93]"
CW_ARC_MOVE                       = "O<g02_int> call [91][X][93] [91][Y][93] [91][Z][93] [91][I][93] [91][J][93]"

FIRST_CCW_ARC_MOVE       = "(CCW)[10]O<g03_int> call [91][X][93] [91][Y][93] [91][Z][93] [91][I][93] [91][J][93]"
CCW_ARC_MOVE                      = "O<g03_int> call [91][X][93] [91][Y][93] [91][Z][93] [91][I][93] [91][J][93]"
Вложения
LinuxCNC_Engraver.zip
(2.54 Кб) Скачиваний: 131
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Re: Постпроцессор для ArtCam'а к LinuxCNC

Сообщение torvn77 » 10 июн 2016, 23:46

Очень может быть, что для работы последнего постпроцессора необходимо включить расширения Gcode:
Код: Выделить всёРазвернуть
[RS274NGC]
FEATURES = 14

Optional Interpreter features: ini file configuration

И пожалуй дам ещё к нему пояснения:
При фрезеровке угла концевой фрезой остаётся остаётся не довыбранный материал, который убирается гравёром и чтобы гравёр не ломался. это надо делать на довольно низкой скорости обработки, чтобы не сломать кончик гравёра.
С другой стороны в местах где материал снят полностью фаска снимается верхней частью кромки гравёра, а сам кончик ничего не режет и скорость обработки можно делать в несколько раз большей.
Если правильно подобрать глубину фрезеровки и гравировки, диаметр фрезы и гравёр с определённым полууглом то гравёр в местах, где не прошла фреза всегда будет несколько. хоть немного приподниматься над полной глубиной обработки.
Высота , на которой это происходит в постпроцессоре названа #<_z_min>.
Ну а дальше вспоминаете школьный курс геометрии и что такое тангенс угла.
И ещё диаметр_фрезы=диаметр_гравёра-материал_под_фаску.
Последовательность обработки такая
Сначала цилиндрическими фрезами последняя из которых должна быть не больше диаметра гравёра минус фаска убирается основной материал.
Потом делается "виртуальная фреза" диаметром равной пятке гравёра и в режиме "только профиль" обходит вырезаемый контур.
Потом в режиме "только профиль" и "подрезка углов" делается обработка уже самим гравёром.
Так как при поднятии гравёра выше определённой высоты скрипт будет снижать скорость, то кончик гравёра ломаться не будет.
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

Быстрый расчёт УП для гравёра в ArtCAM

Сообщение torvn77 » 12 июн 2016, 16:22

Чтобы использование выше опубликованного постпроцессора имело смысл надо понимать,
что траектория гравёра в CAM должна быть настроена правильно
Не правильная настройка траектории гравёра:
Постпроцессор для ArtCam'а к LinuxCNC Screenshot-1.png

Правильная настройка гравёра:
  • Черновая обработка как я полагаю, вами уже сделана и оставлен небольшой припуск для финишной и кромки.
  • :attention: После сохранения УП необходимо открыть её в текстовом редакторе и назначить режимы обработки и расскоментировать и назначить высоту #<_z-min>
    Без этого обработка пойдёт на максимальной скорости и ваш инструмент будет сломан!
  • Первый проход делается виртуальным инструментом Концевая фреза(End Mill) с диаметром равным или меньшим чем пятка гравёра и
    с тем же припуском, что и у гравёра, в данном случае нулевым.
  • Второй проход делается гравёром с максимальной точностью и минимальным шагом по z, в Арткам оба значения совпадают и равны 0,001
Постпроцессор для ArtCam'а к LinuxCNC Screenshot-2.png


Если вы правильно, после создания УП назначили в ней режимы резки ниже и выше <_z-min>, то гравёр ломаться не будет.

Текущая версия постпроцессора, с произвольной строки запускатьь нельзя, но можно запускать со строк с (RpM).
LinuxCNC_EndMill_safe_z.con.zip
(1.95 Кб) Скачиваний: 135

:attention: Перед использованием проверьте на совместимость с вашим станком и наличие ошибок,
программировать это вам не мешки ворочить. можно что нибудь и уронить.
:hehehe:
Аватара пользователя
torvn77
Мастер
 
Сообщения: 2203
Зарегистрирован: 02 июн 2012, 22:12
Откуда: Санкт-Петербург
Репутация: 174
Медальки:

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: 1240, 19bvn58, a_leha, aicT, Alexxs, anthro, Bender, Bing [Bot], crusider, evgenymcp, Google [Bot], Homo_erectus, ignv, Ivan91, Majestic-12 [Bot], meruslan, mikehv, Nonstopich, nva-tuning, passer-by, Sashalex24, VAT, Yahoo [Bot], Yandex [bot], Фрост, Дрюня

Поделиться

Reputation System ©'