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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Решил вот написать постпроцессор для трёхосевого фрезера к Арткаму.
Постпроцессор не полный,я сломался на добавлений автоматической компенсаций инструмента.

Код: Выделить всё

;
;  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'у              :  http://cnc-club.ru/forum/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_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 КБ) 2000 скачиваний
Старый мануальник к языку написания постпроцессора:
Postprocessor Configuration Guide.pdf
(97.35 КБ) 780 скачиваний
Таблица кодов символов Арткама:

Код: Выделить всё

= 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 30 дек 2017, 02:32, всего редактировалось 15 раз.
asutpka
Мастер
Сообщения: 294
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 78
Контактная информация:

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

Сообщение asutpka »

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

пс а куда делось два предыдущих поста? Странный какой-то тред.
Вложения
1.png
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Спасибо за линк,просто я понял что всё достаточно хорошо описано в generic'вых (GenericTextmm.con)постпроцессорах и удалил посты как мусор.
в принципе единственное что там имеет смысл это комманда поиска

Код: Выделить всё

 cd ~/Documents/Memory/con;
cat `ls -1`|grep '='|sort -u|grep CCW
Про Drill bank если нужен могу перепостить,но там у меня просто не рабочая солянка.
Последний раз редактировалось torvn77 25 авг 2013, 14:25, всего редактировалось 1 раз.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
asutpka
Мастер
Сообщения: 294
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 78
Контактная информация:

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

Сообщение asutpka »

То есть в generic'вых постпроцессорах генерация кода для LinuxCNC происходит корректно и без непонятных артефактов?
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Может и не очень надо,но это эдакая шпаргалка по арткамовском постпроцессору.
Пользуйтесь на здоровье.

Код: Выделить всё

Список секций и их назначение:
		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
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Правда без комментариев,но их можно найти в первом посте.
У него есть косяк,хотя поворотная ось отключенна,при первом движений он переводит её в ноль.
После создания файла надо удалить А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
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Архивное сообщение:
Проект постпроцессора для трёхосевого фрезера к Арткаму.
Сделан так,Арткам генерирует 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'у			:  http://cnc-club.ru/forum/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 = " "
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11210
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4436
Настоящее имя: Михаил Львович
Откуда: Новоуральск, Свердловская область.
Контактная информация:

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

Сообщение michael-yurov »

torvn77, объясни тем, кто в танке, что это все и зачем?
Т.е. я понимаю, что такое постпроцессор для арткама... но чем они отличаются от стандартных?
Аватара пользователя
РЕКЛАМА
Почётный участник
Почётный участник
Сообщения: 723
Зарегистрирован: 11 дек 2012, 21:46
Репутация: 80
Откуда: Брянск
Контактная информация:

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

Сообщение РЕКЛАМА »

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

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

Всё работает вроде как надо..
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Откройте файл с УП и посмотрите что там нагенерилось,в часности сделаное на основе разделов START END TOOLCHANGE.
Если всё устраивает то значит всё впорядке.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
alfa
Новичок
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0
Контактная информация:

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

Сообщение alfa »

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

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

alfa-kg@mail.ru
aaleksander
Мастер
Сообщения: 576
Зарегистрирован: 23 авг 2013, 18:04
Репутация: 118
Откуда: г. Ухта
Контактная информация:

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

Сообщение aaleksander »

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

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

alfa-kg@mail.ru
Возможно, это из-за того, что сначала ты включаешь шпиндель, а потом задаешь обороты. Или наоборот :thinking:
alfa
Новичок
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0
Контактная информация:

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

Сообщение alfa »

Включение шпинделя и обороты задаются в программе. Причём в родном ПО к станку проблем не возникает.
Аватара пользователя
Nick
Мастер
Сообщения: 22631
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1631
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

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

Скинь пример программы, которая не работает...
alfa
Новичок
Сообщения: 3
Зарегистрирован: 26 май 2014, 10:57
Репутация: 0
Контактная информация:

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

Сообщение alfa »

Код: Выделить всё

;
; 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]"
Аватара пользователя
Nick
Мастер
Сообщения: 22631
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1631
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Лучше готовый Gкод скинь посмотреть...
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

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

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

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

Сообщение torvn77 »

Постпроцессор для снятия фаски с частичной выборкой остатков.
Все траектории ниже некоторой высоты 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 КБ) 335 скачиваний
Аватара пользователя
torvn77
Мастер
Сообщения: 2426
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 214
Откуда: Россия,Санкт-Петербург
Контактная информация:

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

Сообщение torvn77 »

Очень может быть, что для работы последнего постпроцессора необходимо включить расширения Gcode:

Код: Выделить всё

[RS274NGC]
FEATURES = 14
Optional Interpreter features: ini file configuration

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

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

Сообщение torvn77 »

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

Текущая версия постпроцессора, с произвольной строки запускатьь нельзя, но можно запускать со строк с (RpM).
LinuxCNC_EndMill_safe_z.con.zip
(1.95 КБ) 415 скачиваний
:attention: Перед использованием проверьте на совместимость с вашим станком и наличие ошибок,
программировать это вам не мешки ворочить. можно что нибудь и уронить.
:hehehe:
Ответить

Вернуться в «LinuxCNC»