postprocesor Mach dla SheetCam-a, Detekcja pływającą głowicą

Dyskusje dotyczące SheetCam

moderasura
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 4
Posty: 38
Rejestracja: 12 lip 2015, 15:48
Lokalizacja: Kolberg

#11

Post napisał: moderasura » 27 cze 2016, 23:05

Witam!
Posiadam THC MyPlasm chce wykorzystać ARC OK do detekcji materiału...
Teraz pytanie czy to zagra z kodem co karpik74 zapodał?
Pytam bo nie chcę znowu czegoś spartaczyć w THC.

HeightOfDetect = 10
SpeedOfDetect = 300
Offset = 5
HeightOfPierce = 5
HeightOfCut = 1
Delay = Param1()

Dim MaterialPos As Double

If GetOEMDro(186)>HeightOfDetect Or GetOEMDro(186) Then code "G00 Z" & HeightOfDetect
While IsMoving()
Wend

DoSpinCW()
sleep(200) message("Detecting of material pos.")
code "G31 Z-10 F" & SpeedOfDetect
While IsMoving()
Wend
If GetOEMDro(186)=-10 Then
DoSpinStop() message("No material detected")
code "G00 Z" & HeightOfDetect
While IsMoving()
Wend
1: GoTo 1
Else
MaterialPos = GetOEMDro(186) - offset
message("Material detected pos = " & MaterialPos)
If Delay>200 Then
code "G00 Z" & MaterialPos + HeightOfPierce
While IsMoving()
Wend
End If
Sleep(Delay+1)
code "G00 Z" & MaterialPos + HeightOfCut
While IsMoving()
Wend
End If



Tagi:

Awatar użytkownika

Autor tematu
karpik74
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 394
Rejestracja: 27 cze 2015, 16:36
Lokalizacja: kłodzko

#12

Post napisał: karpik74 » 28 cze 2016, 09:51

Rozumiem, że chcesz wykrywać materiał łukiem pilotującym? ...makro na stronie Proma-Elektronika

Moje makro M300 jest do detekcji pływającą głowicą z czujnikiem na PROBE i wygląda tak:

message"Uruchomienie palnika...."


Code "G31 z-30 F1000" ' opuszczanie osi Z do wspolrzednej -30 - w tym czasie powinna nastapic aktywacja czujnika
While IsMoving()
Wend

Call setdro(2,0)

Code "G92 z-1.5" ' korekta czujnika
While IsMoving()
Wend

End''koniec makra


moderasura
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 4
Posty: 38
Rejestracja: 12 lip 2015, 15:48
Lokalizacja: Kolberg

#13

Post napisał: moderasura » 28 cze 2016, 20:38

Dzięki za info Karpik :mrgreen: wpakowałem te makro do macha 3 i działa idealnie, oczywiście na pływającej głowicy. Z tym co wyżej od Prokopcia działy się jakieś cuda na kiju, nie mam pojęcia dlaczego, cały czas pomiar wychodził ten sam :neutral: on sie gryzie z posts z SheetCam tym co podałeś na początku tematu.


G00 Z20 (ustawienie palnika ok 20mm nad materiał)
M3 (Załączenie plazmy)
G31 Z-10 F300 (szukanie materiału z prędkością 300 do pozycji Z=-10)
G92 Z3 (Zerowanie osi Z + przykładowa korekcja)
G00 Z6 (podniesienie palnika 6mm nad materiał)
G04 P1000 (czas przebijania materiału 1000ms/1s)
G00 Z1 (obniżenie palnika 1mm nad materiał)

Na tym pewnie by działało ale to ręcznie wprowadzać do G-kod to jakaś masakra jest chyba ze jest gdzieś coś ze wprowadzi to przez SheetCam do G-kod?

Ile u Ciebie tak mniej więcej podnosi palnik na głowicy, by załączyć styk na PROBE ?

Awatar użytkownika

Autor tematu
karpik74
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 394
Rejestracja: 27 cze 2015, 16:36
Lokalizacja: kłodzko

#14

Post napisał: karpik74 » 28 cze 2016, 21:43

Potrzebujesz post procesor dla SheeCama ...czy już wszystko jest ok ?

[ Dodano: 2016-06-28, 21:52 ]
Opuszczaj powoli palnik do załączenia czujnika (dalej nie powinien iść). Wyzeruj Macha i podnoś aż palnik zejdzie z czujnika i będzie "muskał" materiał. To co pokaże ci Mach wpisujesz edytując makro M300 "korekta czujnika" z "-". Zapisujesz poprawione makro. Zawsze możesz tam sobie to poprawić. Za każdym razem palnik po włączeniu czujnika bedzie podnosił się o tą korektę i zerował ...od tego momentu wchodzą dalsze wiersze kodu ...czyli wysokość przebicia, itd.


moderasura
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 4
Posty: 38
Rejestracja: 12 lip 2015, 15:48
Lokalizacja: Kolberg

#15

Post napisał: moderasura » 28 cze 2016, 22:06

karpik74 pisze:Potrzebujesz post procesor dla SheeCama ...czy już wszystko jest ok ?.
No jak byś miał pod te kody ze strony PromaElektronika to bym był wdzieczny.
To bym sobie potestował z tym ARCOK i porównał na czym by było lepiej.
Jeśli nie masz to zostanę przy tym co podałeś wcześniej bo jak na razie działa to najlepiej z tego wszystkie co sprawdzałem.
Sprawdzałem to na zasadzie Testu z podkładaniem różnej grubości materiału i jest wyśmienicie no prawie bo musze powprowadzać małe korekty co do wysokości itp , no ale to wiadome trzeba to metoda prób i błędów robić.
Najbardziej się boje o THC bo 2 razy już wysyłałem do Prokopcia Gość ma niebiańską cierpliwość :D

Awatar użytkownika

Autor tematu
karpik74
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 394
Rejestracja: 27 cze 2015, 16:36
Lokalizacja: kłodzko

#16

Post napisał: karpik74 » 28 cze 2016, 22:39

Niestety nie mam postprocesora do makra prokopcia.

ARC OK jest to wykrycie łuku przez THC, program nie ruszy do puki palnik nie odpali pilota lub zatrzyma program jak łuk zgaśnie. Jeżeli podłączysz dobrze MyPlasma THC to tak będzie działać. Oczywiście możesz wyłączyć THC z poziomu Macha lub makrem w kodzie.


moderasura
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 4
Posty: 38
Rejestracja: 12 lip 2015, 15:48
Lokalizacja: Kolberg

#17

Post napisał: moderasura » 29 cze 2016, 22:15

Jak by ktoś potrzebował to jest postprocesor do SheetCam pod MyPlasm ARC OK.
Nie testowałem tego bo uwaliłem wszystkie ceramiki od palnika i czekam na dostawę...
Jak by ktoś sprawdzał to niech da znać czy działa :mrgreen:

W tym function OnPenDown() można sobie edytować na własne potrzeby

Kod: Zaznacz cały

function OnAbout(event)
   ctrl = event:GetTextCtrl()
   ctrl:AppendText("plasma THC300 post processor\n")
   ctrl:AppendText("\n")
   ctrl:AppendText("Modal G-codes and coordinates\n")
   ctrl:AppendText("Comments enclosed with ( and )\n")
   ctrl:AppendText("M03/M05 turn the torch on/off\n")
   ctrl:AppendText("Incremental IJ\n")
   ctrl:AppendText("The torch is referenced at cut start and every 500mm of movement thereafter\n")
   ctrl:AppendText("Designed for use with Mach2 and Campbell Designs THC300\n")
   ctrl:AppendText("Post variables:\n")
   ctrl:AppendText("refdistance - set the distance between each reference\n")
end



--  revision 3/2/07
--  Removed final safety move. This is now done in SheetCam

--   revision 7/10/05
--   Added new arc handling

--   created 27/10/04
--   Based on plasma1.post



function OnInit()

   post.SetCommentChars ("()", "[]")  --make sure ( and ) characters do not appear in system text
   post.Text (" (Filename: ", fileName, ")\n")
   post.Text (" (Post processor: ", postName, ")\n")
   post.Text (" (Date: ", date, ")\n")
   if(scale == metric) then
      post.Text (" G21 (Units: Metric)\n") --metric mode
   else
      post.Text (" G20 (Units: Inches)\n") --inch mode
   end
   post.Text (" G53 G90 G40\n F1\n S500\n")

   dist = 9999999
   refdistance = 500 * scale
   switchoffset = -0.08
   bigarcs = 1 --stitch arc segments together
   minArcSize = 0.05 --arcs smaller than this are converted to moves
end

function OnNewLine()
   post.Text ("N")
   post.Number (lineNumber, "0000")
   lineNumber = lineNumber + 10
end


function OnFinish()
   post.Text (" M05 M30\n")
end

function OnRapid()
   if(math.hypot(endX-currentX , endY-currentY) < 0.001 and endZ < currentZ) then return end
   dist = dist + math.hypot(endX-currentX , endY-currentY)
   post.ModalText (" G00")
   post.ModalNumber (" X", endX * scale, "0.0000")
   post.ModalNumber (" Y", endY * scale, "0.0000")
   post.ModalNumber (" Z", endZ * scale, "0.0000")
   post.Eol()
end

function OnMove()
   dist = dist + math.hypot(endX-currentX , endY-currentY)
   post.ModalText (" G01")
   post.ModalNumber (" X", endX * scale, "0.0000")
   post.ModalNumber (" Y", endY * scale, "0.0000")
   post.ModalNumber (" Z", endZ * scale, "0.0000")
   post.ModalNumber (" F", feedRate * scale, "0.###")
   post.Eol()
end

function OnArc()
   dist = dist + math.hypot(endX-currentX , endY-currentY)
   if(arcAngle <0) then
      post.ModalText (" G03")
   else
      post.ModalText (" G02")
   end
   post.NonModalNumber (" X", endX * scale, "0.0000")
   post.NonModalNumber (" Y", endY * scale, "0.0000")
   post.ModalNumber (" Z", endZ * scale, "0.0000")
   post.Text (" I")
   post.Number ((arcCentreX - currentX) * scale, "0.0000")
   post.Text (" J")
   post.Number ((arcCentreY - currentY) * scale, "0.0000")
   post.ModalNumber (" F", feedRate * scale, "0.0###")
   post.Eol()
end


function OnPenDown()
   
post.Text ("\n G00 Z20\n")--         ustawienie palnika ok 20mm nad materiał
post.Text ("\n M03\n")--             Załączenie plazmy   

post.Text ("\n G31 Z-10 F300\n")--   szukanie materiału z prędkością 300 do pozycji Z=-10
post.Text ("\n G92 Z3\n")--          Zerowanie osi Z + przykładowa korekcja
post.Text ("\n G00 Z6\n")--          podniesienie palnika 6mm nad materiał
post.Text ("\n G04 P1000\n")--       czas przebijania materiału 1000ms/1s
post.Text ("\n G00 Z1\n")--          obniżenie palnika 1mm nad materiał
end



function OnPenUp()
   post.Text (" M05\n")
   
end


function OnNewOperation()
   post.Text (" (Process: ", operationName, ")\n")
   if (plungeRate <= 0) then
      post.Warning("WARNING: Plunge rate is zero")
   end
   if (feedRate <= 0) then
      post.Warning("WARNING: Feed rate is zero")
   end
end

function OnComment()
  post.Text(" (",commentText,")\n")
end

function OnToolChange()
   post.Text (" M06 T")
   post.Number (tool, "0")
   post.Text ("  (", toolName, ")\n")
end

function OnNewPart()
   post.Text(" (Part: ",partName,")\n");
end

function OnDrill()
   OnRapid()
   OnPenDown()
   endZ = drillZ
   OnMove()
   OnPenUp()
   endZ = safeZ
   OnRapid()
end

A tu makro do macha M300 pod ARC OK PROBE ze strony Proma Elektronika

Kod: Zaznacz cały

HeightOfDetect = 10
SpeedOfDetect = 300
Offset = 5
HeightOfPierce = 5
HeightOfCut = 1
Delay = Param1()

Dim MaterialPos As Double

If GetOEMDro(186)>HeightOfDetect Or GetOEMDro(186) Then code "G00 Z" & HeightOfDetect
While IsMoving()
Wend

DoSpinCW()
sleep(200) message("Detecting of material pos.")
code "G31 Z-10 F" & SpeedOfDetect
While IsMoving()
Wend
If GetOEMDro(186)=-10 Then
DoSpinStop() message("No material detected")
code "G00 Z" & HeightOfDetect
While IsMoving()
Wend
1: GoTo 1
Else
MaterialPos = GetOEMDro(186) - offset
message("Material detected pos = " & MaterialPos)
If Delay>200 Then
code "G00 Z" & MaterialPos + HeightOfPierce
While IsMoving()
Wend
End If
Sleep(Delay+1)
code "G00 Z" & MaterialPos + HeightOfCut
While IsMoving()
Wend
End If


Olędzki
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 07 sty 2017, 16:04
Lokalizacja: Siedlce

#18

Post napisał: Olędzki » 07 sty 2017, 16:44

Witam serdecznie wszystkich!

Nie chciałem zakładać nowego tematu, bo mój problem jest związany z tym tematem.
Do tej pory korzystałem z LazyCAMa i przesiadłem się właśnie na SheetCAMa. Pobrałem postprocesor zapodany przez kolegę karpik74.

Problem jest z generowoniem gkodu, tak mi się wydaję. LazyCAM generował prękość posuwu po każdym M03, a SheetCAM tylko po pierwszym, tak jak na przykładowym fragmencie kodu z SheetaCAMa. Powoduje to u mnie, że następne np. otwory w detalu wypala z prędkością przejazdową.
Niestety nie wiem jak przerobić postprocesor, dlatego zwracam się do Was o pomoc.

N0090 G00 X9.9009 Y77.2284 Z30.0000
N0100 M300
N0110 G00 Z3.0000
N0120 M03
N0130 G03 X12.4152 Y73.4656 I3.1385 J-0.6243 F1500.0
N0140 X12.4152 Y73.4656 I0.0000 J3.9500
N0150 M05
N0160 G04 P0.4
N0170 G00 Z30.0000
N0180 X53.9177 Y79.8207
N0190 M300
N0200 G00 Z3.0000
N0210 M03
N0220 G03 X56.4319 Y76.0579 I3.1385 J-0.6243
N0230 X56.4319 Y76.0579 I0.0000 J3.9500
N0240 M05
N0250 G04 P0.4
N0260 G00 Z30.0000
N0270 X18.1121 Y112.7941
N0280 M300
N0290 G00 Z3.0000
N0300 M03
N0310 G03 X20.6264 Y109.0313 I3.1385 J-0.6243
N0320 X20.6264 Y109.0313 I0.0000 J3.9500
N0330 M05
N0340 G04 P0.4

Awatar użytkownika

Autor tematu
karpik74
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 10
Posty: 394
Rejestracja: 27 cze 2015, 16:36
Lokalizacja: kłodzko

#19

Post napisał: karpik74 » 08 sty 2017, 09:52

Postprocesor jest w 100% poprawny i wykorzystywany w praktyce.
Pobaw się ustawieniami w SheetCam-ie.

[ Dodano: 2017-01-08, 10:34 ]
Ten postprocesor był powprawiany kilka razy dla różnych potrzeb np. do MyPlasm THC, z detekcją pływającą głowicą.
Chyba, że coś przypadkowo usunąłeś z procka. Spróbuj na nowo zainstalować lub sprawdź ten z zał.
Załączniki
steelbox karpik74.rar
(1.42 KiB) Pobrany 255 razy


dudziak4
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 20
Posty: 702
Rejestracja: 06 wrz 2007, 13:30
Lokalizacja: Bielawa

#20

Post napisał: dudziak4 » 08 sty 2017, 11:46

Witam tak jak napisał Karpik postprocesor jest poprawny.

Problem jest w makrze M300 do detekcji które nie ma zapamiętania i później przywrócenia prędkości.
A u ciebie prędkość następnego palenia nie jest prędkością przejazdową tylko prędkością wykrywania blachy też tak miałem.
Rozwiązaniem na chwilę jest ustawić prędkość wykrywania blachy w M300 na taką samą jak prędkość palenia. (Jednakże jest to dosyć uciążliwe)
Gdybyś miał Sterownik CSMIO to mógł bym ci pomóc bo mam dobrze dopracowane makro i postprocesor do sheetcama a nie mam pojęcia czy z inny sterowaniem będzie chciało działać.
Przykładowo makro ze strony prokopcia z moim sterownikiem CSMIO-IP\S nie chciało współpracować.

Ja mam zrobione tak że wysokość przejazdowa między detalami to 100 mm potem zadziałanie makra M20 Q czyli szybki zjazd (30m/min) na G0 ze 100mm na sztywną wysokość ustawioną w makrze.
U mnie jest to 25 mm, detekcja blachy z prędkością 2,5m/min wyzerowanie i podniesienie palnika na wysokość przebicia braną z postprocesora (i tu jest to "Q") u mnie z reguły 5-6 mm ale dla przykładu np.8mm M20 Q8 (koniec makra).
Potem opuszczenie palnika do wysokość cięcia np. 3mm z prędkością przebicia ustawioną w sheetcamie z reguły 100mm/min.
Następnie cięcie kształtu po czym 5mm przed końcem palenia ustawiona reguła na sygnał blokady thc (używam My Plasm prokopcia) jest to Makro M10 P (On) i M11 P (Off).
Jest to szybkie makro które nie powoduje chwilowego opóźnienia, gdzie przy innych makrach palnik leciał w dół.
Ponoć te dwa makra cały czas lecą w tle z g-codem.
Mam jeszcze dodane do każdego palenia Makro M1 które jest opcjonalną Pauzą, gdzie podczas palenia serii jest możliwość w każdym momencie zatrzymanie maszyny po zakończeniu cięcia detalu.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „SheetCam”