(Ещё раз предупреждаю - я не спец - я только учусь, если у кого есть замечания - очень даже приветствуются.)
Продолжаем.
прежде чем писать пост - нужно понимать что мы хотим получить на выходе.
И осознавать - что гкод по большому счёту рассчитан для ручной работы - ручного написания, сгенерированные же программы могут не использовать сложные циклы стойки, эмулируя их в определённые последоательности. и просто нужно решать как проще.
Также нужно понимать нужны ли языковые конструкции в УП программе. Эти конструкции были нужны для получения компактной программы.
Сейчас же объём памяти стоек и устройств ввода, и скорость ввода программ гораздо больше - поэтому циклы и условия нужны разве для каких-то операций по типу измерений заготовки или смены-измерения инструмента.
Итак: включив режим отладки в постпроцессоре можно получить последовательность вызовов команд пикода, со списками параметров которые передаются этим командам.
По параметрам - нужно учитывать их актуальность. Т.е. значение некоторых параметров меняется с командой, а некоторые могут остаться от предыдущих команд или смен режима.
Есть некоторые переменные (как и пикоманды) - которые не описаны в хелпах.
файл с отладочными вставками (этакий assert)) имеет такой вид:
Код: Выделить всё
(@start_of_file)
%
O1000 (FM_FACEMILL.NC)
( Feeler FV-1600A )
( 12-JAN-2014 - 19:03:00 )
(SUBROUTINES: O3 .. O0)
(@start_of_file)
(@vmid_info)
(@vmid_info)
(@vmid_info)
(@vmid_info)
(@vmid_info)
(@vmid_info)
(@def_tool)
(@def_tool)
(@start_program)
G40 G49 G80 G90
(@start_program)
(@rotate_to_plane)
G17
(@rotate_to_plane)
(@home_number)
G54
(@home_number)
(@change_tool)
( TOOL -1- ROUGH DIA 20.0 MM )
( 316-20SM450-20005P 1030 hold E20-A20-SE-095 )
M6 T1
(@change_tool)
(@offset_change)
G43 H1 D1
(@offset_change)
(@start_of_job)
(@start_of_job)
(@message)
(--------------------------)
(@message)
(@message)
(FM-FACEMILL - FACE-MILLING)
(@message)
(@message)
(--------------------------)
(@message)
(@m_feed_spin)
(@rapid_move)
G00 X0. Y0. Z50.
(@rapid_move)
S7958 M03
M8
(@m_feed_spin)
(@tool_path_info)
(@tool_path_info)
(@rapid_move)
X-71.816 Y44.291 Z10.
(@rapid_move)
(@rapid_move)
Z2.
(@rapid_move)
(@line)
G01 Z0. F3183.1
(@line)
(@tool_path_info)
(@tool_path_info)
(@line)
X71.816 F9549.3
(@line)
(@line)
X72. F15000
(@line)
(@arc)
G02 Y31.637 R-6.327
(@arc)
(@line)
G01 X-72. F9549.3
(@line)
(@arc)
G03 Y18.982 R-6.327 F15000
(@arc)
(@line)
G01 X72. F9549.3
(@line)
(@arc)
G02 Y6.327 R-6.327 F15000
(@arc)
(@line)
G01 X-72. F9549.3
(@line)
(@arc)
G03 Y-6.327 R-6.327 F15000
(@arc)
(@line)
G01 X72. F9549.3
(@line)
(@arc)
G02 Y-18.982 R-6.327 F15000
(@arc)
(@line)
G01 X-72. F9549.3
(@line)
(@arc)
G03 Y-31.637 R-6.327 F15000
(@arc)
(@line)
G01 X72. F9549.3
(@line)
(@arc)
G02 Y-44.291 R-6.327 F15000
(@arc)
(@line)
G01 X71.816
(@line)
(@line)
X-71.816 F9549.3
(@line)
(@tool_path_info)
(@tool_path_info)
(@rapid_move)
G00 Z10.
(@rapid_move)
(@tool_path_info)
(@tool_path_info)
(@end_of_job)
(@end_of_job)
(@end_program)
M30
(@end_program)
(@end_of_file)
%
(@end_of_file)
здесь видно все процедуры которые вызываются в процессе генерации.
нужно иметь ввиду что из-за различных установок в препосте и самом СК - может генерироваться различный пикод.
Т.к. в подавляющем большинстве случаев заголовок файл УП должен иметь один и тот же вид (зачем усложнять себе жизнь) то и заголовок можно прописать в одной из команд,
например в том же @start_of_file
но тогда могут возникнуть проблемы при ипользовании нескольких операций в одной УП.
Поэтому на ваше усмотрение.
Я буду пытаться сделать более-менее простой, но неконфликтующий препост.
итак команда @rapid_move:
Код: Выделить всё
@rapid_move
if my_debug then
{nl,'(@rapid_move)'}
endif
{nb}
gcode = 0
;if change(gcode) then
{['G',gcode:gcode_f]}
;else
; {' '}
;endif
{[' X',xpos], [' Y',ypos], [' Z',zpos]}
if my_debug then
{nl,'(@rapid_move)', nl}
endif
endp
здесь закомментированы(;) строки позволяющие получать более красивый код - с отступами когда выводится несколько одинаковых команд.
Всё что заключено в фигурные скобки - выводится в результирующий файл(пока не учитываем работу поста с файлами).
всё что заключено в квадратные скобки - выводится только если была смена параметра. полный вывод параметров позволяет например сделать более просто модифицируемый вручную код.
gcode:gcode_f - это вывод текущего гкода в формате прописанном в @init_post
gcode_f = 'z2.0(p)' - это присвоение формата,
строго говоря для переменной gcode можно не указывать формат - он задаётся в инитпосте и применяется по умолчанию при любом выводе переменной gcode