Редактировал(а) Edgar Allan Poe 2024/11/14 17:01

От версии 4.1
отредактировано writer
на 2022/06/23 14:50
Изменить комментарий: К данной версии нет комментариев
К версии 9.1
отредактировано Edgar Allan Poe
на 2024/11/14 17:01
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Автор документа
... ... @@ -1,1 +1,1 @@
1 -XWiki.Knetyaga
1 +XWiki.afirsov
Теги
... ... @@ -1,0 +1,1 @@
1 +macros|макросы|probing
Содержимое
... ... @@ -1,62 +1,69 @@
1 -Для определённых задач (например, фрезеровки печатных плат) возникает необходимость сканирования поверхности с последующей корректировкой неровностей по Z. Карта высот подготавливается с помощью макроса (пример ниже), и на основе этой карты высот модифицируется G-код. Сформировать G-код с готовыми координатами можно, например, в программе G-Code Ripper.
1 +Для определённых задач (например, фрезеровки печатных плат) может возникнуть необходимость сканирования поверхности с последующей корректировкой неровностей по Z.
2 2  
3 -{{code}}
3 +Карту высот на основе сканирования поверхности можно подготовить с помощью макроса (пример ниже) и затем, используя эту карту высот, модифицировать G-код.
4 +
5 +Сформировать G-код с готовыми координатами поможет, например, программа G-Code Ripper.
6 +
7 +{{code language="lua"}}
4 4  function m155()
5 - local XWidth = 70
6 - local YWidth = 50
7 - local SafeZ = 3
8 - local ProbeZ = -3
9 - local StepX = 15
10 - local StepY = 15
11 - local Feed = 50
12 - local TipHeight = 0
13 - local ProbeFilename = "C:\temp\probe.txt"
9 + local XWidth = 70
10 + local YWidth = 50
11 + local SafeZ = 3
12 + local ProbeZ = -3
13 + local StepX = 15
14 + local StepY = 15
15 + local Feed = 50
16 + local TipHeight = 0
17 + local ProbeFilename = "C:\\temp\\probe.txt"
14 14  
15 - PushCurrentDistanceMode()
16 - PushCurrentMotionMode()
17 -
18 - if (IsProbingPinConfigured()) then
19 - -- open the file
20 - file, msg = io.open(ProbeFilename, "w")
19 + PushCurrentDistanceMode()
20 + PushCurrentMotionMode()
21 +
22 + if (IsProbingPinConfigured()) then
23 + file, msg = io.open(ProbeFilename, "w") -- open the file
24 + else
25 + DisplayMessage("Probe input is not configured")
26 + return
27 + end
21 21  
22 22   if (file == nil) then
23 - DisplayMessage("Could not open probe output file ("..msg..")")
24 - Stop()
25 - return
30 + DisplayMessage("Could not open probe output file ("..msg..")")
31 + Stop()
32 + return
26 26   end
27 27  
28 28   ExecuteMDI("F "..Feed)
29 29   ExecuteMDI("G90 G38.2 Z-100")
30 30  
31 - -- set the current location to 0,0,0
32 - ExecuteMDI("G92 X0Y0Z0")
38 + ExecuteMDI("G92 X0Y0Z0") -- set the current location to 0,0,0
33 33   ExecuteMDI("G0 Z"..SafeZ)
34 34  
35 35   local direction = 0
36 36   for y = 0, YWidth, StepY do
37 - if (direction == 1) then
38 - direction = 0
39 - else
40 - direction = 1
41 - end
42 -
43 - for x = 0, XWidth, StepX do
44 44   if (direction == 1) then
45 - ExecuteMDI("G0 X"..x.." Y"..y.." Z"..SafeZ)
44 + direction = 0
46 46   else
47 - ExecuteMDI("G0 X"..(XWidth - x).." Y"..y.." Z"..SafeZ)
46 + direction = 1
48 48   end
48 +
49 + for x = 0, XWidth, StepX do
50 + if (direction == 1) then
51 + ExecuteMDI("G0 X"..x.." Y"..y.." Z"..SafeZ)
52 + else
53 + ExecuteMDI("G0 X"..(XWidth - x).." Y"..y.." Z"..SafeZ)
54 + end
49 49  
50 - ExecuteMDI("G38.2 Z"..ProbeZ)
51 - LogCurrentPos(TipHeight)
52 - ExecuteMDI("G0 Z"..SafeZ)
53 - end
56 + ExecuteMDI("G38.2 Z"..ProbeZ)
57 + LogCurrentPos(TipHeight)
58 + ExecuteMDI("G0 Z"..SafeZ)
59 + end
60 +
54 54   end
55 55  
56 56   if (direction == 1) then
57 - ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ)
64 + ExecuteMDI("G0 X"..XWidth.." Y"..YWidth.." Z"..SafeZ)
58 58   else
59 - ExecuteMDI("G0 X".."0".." Y"..YWidth.." Z"..SafeZ)
66 + ExecuteMDI("G0 X".."0".." Y"..YWidth.." Z"..SafeZ)
60 60   end
61 61  
62 62   local HighZ = 5
... ... @@ -64,20 +64,17 @@
64 64   ExecuteMDI("G0 X0Y0")
65 65  
66 66   file:close()
67 - else
68 - DisplayMessage("Probe input is not configured")
69 - return
70 - end
71 71  end
72 72  
73 73  function LogCurrentPos(tipHeight)
74 - local CurrX = AxisGetPos(Axis.X)
75 - local CurrY = AxisGetPos(Axis.Y)
76 - local CurrZ = AxisGetPos(Axis.Z)
77 + local CurrX = AxisGetPos(Axis.X)
78 + local CurrY = AxisGetPos(Axis.Y)
79 + local CurrZ = AxisGetPos(Axis.Z)
77 77  
78 - local fmt = "%.5f"
79 - file:write(string.format(fmt, CurrX)..","..string.format(fmt, CurrY)..","..string.format(fmt, CurrZ - tipHeight), "\n")
81 + local fmt = "%.5f"
82 + file:write(string.format(fmt, CurrX)..","..string.format(fmt, CurrY)..","..
83 + string.format(fmt, CurrZ - tipHeight), "\n")
80 80  end
81 81  {{/code}}
82 82  
83 -[[Скачать макрос>>attach:M155.pm]]
87 +**[[Скачать макрос>>attach:M155.pm]]**