Nu har jag aldrig använt en CNC-maskin men om den skall gå at programmera på fjärr via terminal, borde inte mycket av det där gå att göra på distans? Som jag ser det är det svåra att i detalj fånga kraven på vad som skall göras och få till något slags testbar miljö som genererar kod, att ändra i Javascript-funktionerna i postprocessorn är det enkla.
Heidenhain 2.png
Ritade en liten testbit med något slags 3D-konturer, valde adaptive clearing med 10mm ball nose (ren gissning) och körde ut med generisk heidenhain/heidenhain.
Kod: Markera allt
0 BEGIN PGM 1001 MM
1 BLK FORM 0.1 Z X-76 Y-51 Z+0
2 BLK FORM 0.2 X+76 Y+51 Z+66
3 ;-------------------------------------
4 ;Tools
5 ; #1 D=10 CR=5 - ZMIN=+0.51 - ZMAX=+81 - ball end mill
6 ;-------------------------------------
7 ;
8 * - Adaptive1
9 M5
10 TOOL CALL 1 Z S5000
11 L M140 MB MAX
12 M3
13 L X-77.016 Y-62.492 R0 FMAX
14 L Z+81 R0 FMAX
15 M8
16 CYCL DEF 32.0 TOLERANCE
17 CYCL DEF 32.1
18 L Z+71 FMAX
19 L Z+58 FMAX
20 L Z+57 F1000
21 L X-77.015 Y-62.485 Z+56.879
22 L X-77.009 Y-62.464 Z+56.761
23 L X-77 Y-62.43 Z+56.645
24 L X-76.988 Y-62.381 Z+56.535
25 L X-76.972 Y-62.321 Z+56.432
26 L X-76.954 Y-62.249 Z+56.337
27 L X-76.933 Y-62.166 Z+56.251
28 L X-76.909 Y-62.074 Z+56.177
Vad som kom ut, ser ut att vara för modernare kontroller som beskrivits tidigare i tråden. Den verkar klara av att generera CYCL DEF kommandon men inte på de ställen som behövs för gryms system.
Kör man sedan samma test-setup med postprocessorn dumper/dump då får man ut en ej slutbehandlad mellankod där man verkar kunna se vilka javascriptfunktioner i postprocessorns .cps-fil som anropas. Det är inte exakt samma X/Y/Z värden men jag gissar att det kan bero av verktygets storlek?
Kod: Markera allt
441: onMovement(MOVEMENT_LEAD_IN /*lead in*/)
441: onLinear(-77.01636505126953, -62.492462158203125, 57, 1000)
442: onCircular(false, -76.76822662353516, -61.52373504638672, 57, -76.76822662353516, -61.52373504638672, 56, 1000)
direction: CCW
sweep: 90deg
normal: X=0.968724 Y=-0.248139 Z=0
radius: 1
helical pitch: 0.000005
443: onCircular(false, -101.49959564208984, -55.18878936767578, 56, -75.98532104492188, -56.079742431640625, 56, 1000)
direction: CCW
sweep: 12.36747deg
normal: X=0 Y=0 Z=1 (XY)
radius: 25.529826
444: onMovement(MOVEMENT_CUTTING /*cutting*/)
444: onLinear(-75.98532104492188, -55.854610443115234, 56, 1000)
445: onLinear(-76.22573852539062, -54.67679214477539, 56, 1000)
446: onLinear(-76.40924835205078, -53.48877716064453, 56, 1000)
447: onLinear(-76.54894256591797, -52.29481506347656, 56, 1000)
448: onLinear(-76.65505981445312, -51.09740447998047, 56, 1000)
449: onLinear(-76.73554992675781, -49.89799499511719, 56, 1000)
450: onLinear(-76.79652404785156, -48.69743728637695, 56, 1000)
451: onLinear(-76.84266662597656, -47.496219635009766, 56, 1000)
452: onLinear(-76.87757110595703, -46.294620513916016, 56, 1000)
453: onLinear(-76.9039535522461, -45.092803955078125, 56, 1000)
Om man ändrar i onLinear funktionen i .cps-filen med villkor som fångar upp 3D-fallen då borde det gå men jag funderar på om det kanske finns ett smartare sätt.
https://knowledge.autodesk.com/support/ ... 93a9c.html