
czas obróbki w pliku nc.
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 5
- Posty: 150
- Rejestracja: 07 sty 2011, 17:48
- Lokalizacja: Polska
czas obróbki w pliku nc.
Sprawa która mnie nurtuje to czy jest możliwosć dodania czasu obróbki do generowanego pliku nc. z solida. Widziałem gdzieś na necie ze pod data generuje się jeszcze linijka z czasem całej obróbki. Jesli jest to możliwe może ktoś by podpowiedział jak to dodać do podprocesora. 

-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4394
- Rejestracja: 13 lut 2017, 19:34
- Lokalizacja: Szczecin
Re: czas obróbki w pliku nc.
Jak masz gcode, to wciskasz generuj z czasem, ale postprocesor musi mieć tą funkcję.
Dodane 1 minuta 21 sekundy:
Co jeszcze możemy za Ciebie przeczytać w instrukcji/helpie*?
*- niepotrzebne skreślić.
Dodane 1 minuta 21 sekundy:
Co jeszcze możemy za Ciebie przeczytać w instrukcji/helpie*?
*- niepotrzebne skreślić.
Można?
Morzna!!!
Morzna!!!
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4394
- Rejestracja: 13 lut 2017, 19:34
- Lokalizacja: Szczecin
Re: czas obróbki w pliku nc.
Strona 39 i dalej
https://www.google.pl/url?sa=t&rct=j&q= ... 5NEa3kX67T
Co jeszcze możemy za Ciebie znaleźć w instrukcji/helpie*?
*- niepotrzebne skreślić.
https://www.google.pl/url?sa=t&rct=j&q= ... 5NEa3kX67T
Co jeszcze możemy za Ciebie znaleźć w instrukcji/helpie*?
*- niepotrzebne skreślić.
Można?
Morzna!!!
Morzna!!!
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 262
- Rejestracja: 22 kwie 2011, 01:19
- Lokalizacja: Jarocin
Re: czas obróbki w pliku nc.
Witam
w pliku *.gpp szukasz funkcji o nazwie @start_of_job (funkcja to kawałek kodu zaczynający się od @NAZWA i kończąca się wpisem endp chociaż nazwa endp sugeruje nazwę konca procedury - 'end procedures') nieważne chodzi o to żeby gdzieś pomiędzy dopisać kawałek kodu jak poniżej:
w pliku *.gpp szukasz funkcji o nazwie @start_of_job (funkcja to kawałek kodu zaczynający się od @NAZWA i kończąca się wpisem endp chociaż nazwa endp sugeruje nazwę konca procedury - 'end procedures') nieważne chodzi o to żeby gdzieś pomiędzy dopisać kawałek kodu jak poniżej:
@start_of_job
...
...
if job_time ne '' then
{nl,"(Czas obrobki: " job_time ")"}
endif
...
...
endp
nie będę się rozwodził co jest co ale sprawi to tyle że jeśli wykoszasz generowanie kodu z czasem to cały napis (Czas obrobki: 00:01:00) będzie dodany do pliku....Programowanie ma to do siebie, że urzeczywistnienie nawet najbardziej
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 4394
- Rejestracja: 13 lut 2017, 19:34
- Lokalizacja: Szczecin
Re: czas obróbki w pliku nc.
Może jak nie radzisz sobie z czytaniem instrukcji, to lepiej nie grzebać w postprocesorach 
Do tego jeszcze trzeba symulację przeprowadzić

Do tego jeszcze trzeba symulację przeprowadzić
Można?
Morzna!!!
Morzna!!!
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 5
- Posty: 150
- Rejestracja: 07 sty 2011, 17:48
- Lokalizacja: Polska
Re: czas obróbki w pliku nc.
No i super .. Taką pomoc to ja rozumie.. Wszystko działa jak należy.... pytanie dodatkowe .. jest możliwość zsumowania wszystkich cykli i zapis tego jak wyżej ?
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 262
- Rejestracja: 22 kwie 2011, 01:19
- Lokalizacja: Jarocin
Re: czas obróbki w pliku nc.
A bo to się generuje dla każdej operacji.. No tak, nie testowałem tego 
Zobaczę wieczorem (późnym wieczorem)

Zobaczę wieczorem (późnym wieczorem)
...Programowanie ma to do siebie, że urzeczywistnienie nawet najbardziej
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 4
- Posty: 262
- Rejestracja: 22 kwie 2011, 01:19
- Lokalizacja: Jarocin
Re: czas obróbki w pliku nc.
Witam ponownie..
Ja kiedyś kiedyś kiedyś... pisałem PP do mazaka i zrobiłem coś takiego,
że wrzuca czas na początek ale robi to tak jak tutaj:

W zasadzie to wszystko jest podane do grory numer narzędzia, posuw, obroty (tylko nie w iMachining)
numer operacji, numer mocowania (nie sztywno G54 i cześc tylko w nagłowku mozna zmienic G54-59 lub G54.1 P1-P299)
no i czas, z tym ze czas tez jest podany dla kazdej operacji.
Ogolnie nie jest to takie proste do żeby powyciagac sobie cos z dołu i wkleic do gory trzeba dzielic plik i osobno zapisywac okreslone partie kodu, nastepnie trzeba je poukladac i wkleic tzn postprocesor ma to zrobic
tylko trzeba mu powiedziec jak 
Trzeba wiedziec jak jest generowany program np taka procedura
i za kazdym razem przyjmuje ona pewną ilossc zmiennych w ktorych są zapisane wartosci takie jak srednica narzedzia kat typ itp..
jedną z takich zmiennych do ktorej mozemy sie odwolac wewnatrz
czyli łancuch znakow czyli tekst jak sms w telefonie. Jak wiadomo lub nie
to że cos jest stringiem, nie jest liczbą chociaz wygląda jak liczba wiec nie możemy se od tak wziasc
kawałka tekstu i dodac do niego np 5 ale są sposoby na to aby coś takiego zrobic ale po kolei.
Gdy generujemy kod bez obliczania czasu to zmienna tool_work_time ma wartosc ' 0:00:00'
gdy generujemy kod z czasem to wtedy zmienna ma jakis czas pracy np ' 0:01:15' minuta i piętnaście sekund
no to juz jest coś trzeba tylko zapisac ten czas gdzies no i powtorzyc to dla kazdego narzedzia
na koncu wydrukowac i po sprawie.. no ale nie chcemy smieci jesli nie przeliczymy gcode z czasem.
na poczatek dodamy sobie zmienną globalną typu integer i nazwijmy ją total_tools_time

(jak ktoś chce się dowiedziec co to sa zmienne lokalne i globalne i co to wgl jest ten integer to zapraszam do pierwszego lepszego kursu programowania na yt albo gooooooooglee!!)
teraz skopiuj sobię kod
a w

teraz trzeba zrzucic czas do jednego "mianownika" tzn zamienic wszystko na sekundy (najmniejsza wielkosc aby mozna było swobodnie dodawac kolejne czasy)
funkcja substr (sub string) wydziela poszczegolne czesci ze stringa.
popatrz się tu ^ teraz na kod \/ i znow tutaj i tak az rozkminisz co się dzieje
dorzuciłem Ci pare ficzerow zebys mial co rozpracowywac
Ja kiedyś kiedyś kiedyś... pisałem PP do mazaka i zrobiłem coś takiego,
że wrzuca czas na początek ale robi to tak jak tutaj:

W zasadzie to wszystko jest podane do grory numer narzędzia, posuw, obroty (tylko nie w iMachining)
numer operacji, numer mocowania (nie sztywno G54 i cześc tylko w nagłowku mozna zmienic G54-59 lub G54.1 P1-P299)
no i czas, z tym ze czas tez jest podany dla kazdej operacji.
Ogolnie nie jest to takie proste do żeby powyciagac sobie cos z dołu i wkleic do gory trzeba dzielic plik i osobno zapisywac okreslone partie kodu, nastepnie trzeba je poukladac i wkleic tzn postprocesor ma to zrobic


Trzeba wiedziec jak jest generowany program np taka procedura
@def_tooljest wywoływana tyle razy ile mamy uzytych narzedzi w programie
i za kazdym razem przyjmuje ona pewną ilossc zmiennych w ktorych są zapisane wartosci takie jak srednica narzedzia kat typ itp..
jedną z takich zmiennych do ktorej mozemy sie odwolac wewnatrz
@def_tooljest tool_work_time jest to zmienna typu String
czyli łancuch znakow czyli tekst jak sms w telefonie. Jak wiadomo lub nie

kawałka tekstu i dodac do niego np 5 ale są sposoby na to aby coś takiego zrobic ale po kolei.
Gdy generujemy kod bez obliczania czasu to zmienna tool_work_time ma wartosc ' 0:00:00'
gdy generujemy kod z czasem to wtedy zmienna ma jakis czas pracy np ' 0:01:15' minuta i piętnaście sekund
no to juz jest coś trzeba tylko zapisac ten czas gdzies no i powtorzyc to dla kazdego narzedzia
na koncu wydrukowac i po sprawie.. no ale nie chcemy smieci jesli nie przeliczymy gcode z czasem.
na poczatek dodamy sobie zmienną globalną typu integer i nazwijmy ją total_tools_time

(jak ktoś chce się dowiedziec co to sa zmienne lokalne i globalne i co to wgl jest ten integer to zapraszam do pierwszego lepszego kursu programowania na yt albo gooooooooglee!!)
teraz skopiuj sobię kod
@time_count ... endpgdzies do gpp (tylko nie wewnątrz innej procedury)
a w
@def_toolwywołaj procedurę jeśli tool_work_time nie wyglada tak ' 0:00:00'

teraz trzeba zrzucic czas do jednego "mianownika" tzn zamienic wszystko na sekundy (najmniejsza wielkosc aby mozna było swobodnie dodawac kolejne czasy)
funkcja substr (sub string) wydziela poszczegolne czesci ze stringa.
123456789 ' 0:00:00'
popatrz się tu ^ teraz na kod \/ i znow tutaj i tak az rozkminisz co się dzieje

dorzuciłem Ci pare ficzerow zebys mial co rozpracowywac

Kod: Zaznacz cały
@time_count
; hours minutes seconds ===> seconds, i do wora :)
total_tools_time = total_tools_time + tonum(substr(tool_work_time,8,2)) + (tonum(substr(tool_work_time,5,2))*60) + (tonum(substr(tool_work_time,1,3))*3600)
; jesli następna operacja nie jest już definicją narzędzia to
if next_command ne '@def_tool'
;zainicjuj kilka zmiennych ale lokalnie (tylko tu czyli @def_tool...endp),
local numeric time_h, time_m, time_s
local string time_h_f, time_m_f, time_s_f
local string szh, szm, szs, ssh, ssm, sss, sop, csc
local integer iFrontEndTimeSep
local logical bNullOffFormat, bFillWithZero
;dobra wszystko policzone ale my są ludzie i chcemy czas w hh:mm:ss a nie sssssss
;no to godzin jest tyle cooooo w sumie sekund podzielone przez ilosc sekund w godzinie
;i interesują nas tylko pełne godziny wiec za pomocą funkcji int usuń
;wszystko po przecinku
time_h = int(total_tools_time/3600)
;no a minut to jest tyle co sekund podzielone przez ilośc sekund w minucie
;no ale jeszcze trzeba od tego odjąc te sekundy co juz poswiecilismy na policzenie godzin
;i znow chcemy tylko pelne minuty
time_m = int((total_tools_time-(time_h*3600))/60)
;tu to juz wiadomo z puli sekund odejmujemy ilośc godzin razy
;ilosc sekund w godzinie i oczywiscie ilosc minut razy ilosc sekund w minucie
time_s = total_tools_time-(time_h*3600)-(time_m*60)
;SETTINGS OUTPUT
bFillWithZero = true ;true - hh:mm:ss
;false - h:m:s
iFrontEndTimeSep = 0 ;0 = '0:0:0'
;1 = '0h 0m 0s'
;2 = '0 godz 0 min 0 sek'
bNullOffFormat = true ;true - no print insignificant time:
;'0h0m30s' --> '30s'
;'1h0m30s' --> '1h30s'
;false - print all
;<prefix><sign><leading-zeroes><integer>.<fraction><trailing-zeroes><options><postfix>
;troche algebry bool'a
if bFillWithZero then
szh = 'z2.0'
szm = 'z2.0'
szs = 'z2.0'
else
szh = '2.0'
szm = '2.0'
szs = '2.0'
endif
if bNullOffFormat and iFrontEndTimeSep eq 1 or iFrontEndTimeSep eq 2 then
sop = '(nd)'
else
sop = '(n)'
endif
if iFrontEndTimeSep eq 1 then
ssh = '<h>'
ssm = '<m>'
sss = '<s>'
else
if iFrontEndTimeSep eq 2 then
ssh = '<godz >'
ssm = '<min >'
sss = '<sec >'
else
ssh = '<:>'
ssm = '<:>'
sss = '<>'
endif
endif
time_h_f = szh + sop + ssh
time_m_f = szm + sop + ssm
time_s_f = szs + sop + sss
{nl}
{nl,'(Czas Programu: ' time_h time_m time_s ')'}
endif
endp
...Programowanie ma to do siebie, że urzeczywistnienie nawet najbardziej
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...