840d otwarcie / zamkniecie uchwytu automatycznego
-
Autor tematu - Specjalista poziom 1 (min. 100)
- Posty w temacie: 2
- Posty: 228
- Rejestracja: 21 mar 2008, 11:41
- Lokalizacja: Łódź
- Kontakt:
840d otwarcie / zamkniecie uchwytu automatycznego
Witam,
Jak powinien zostac napisany poprawnie program do otwierania i zamykania uchwytu automatycznego?
Aktualnie otwieranie i zamykanie realizuje z pulpitu, co przeszkadza w pracy pelni automatycznej z podajnikiem preta.
Kazdą sztuke operator musi klinknac:
1.otwarcie uchwytu,
2.wysuniecie preta,
3.zamkniecie uchwytu
4.start programu
inaczej nie pojdzie a chodzi o to aby z preta 3m zrobic za jednym kliknieciem 50szt. i w programie wpisac te komendy.
Funkcje M25 i M26 nie działają.
Zastanawiam sie jak powinien byc napisany poprawnie program z ich uzyciem, moze jest niezbedna jakas komenda poprzedajaca? Lub jakis inny sposob?
Maszyna to centrum tokarskie FAMOT 200 CNC 2000r. Sterowanie Sinumerik 840D.
Jak powinien zostac napisany poprawnie program do otwierania i zamykania uchwytu automatycznego?
Aktualnie otwieranie i zamykanie realizuje z pulpitu, co przeszkadza w pracy pelni automatycznej z podajnikiem preta.
Kazdą sztuke operator musi klinknac:
1.otwarcie uchwytu,
2.wysuniecie preta,
3.zamkniecie uchwytu
4.start programu
inaczej nie pojdzie a chodzi o to aby z preta 3m zrobic za jednym kliknieciem 50szt. i w programie wpisac te komendy.
Funkcje M25 i M26 nie działają.
Zastanawiam sie jak powinien byc napisany poprawnie program z ich uzyciem, moze jest niezbedna jakas komenda poprzedajaca? Lub jakis inny sposob?
Maszyna to centrum tokarskie FAMOT 200 CNC 2000r. Sterowanie Sinumerik 840D.
Tagi:
-
- Specjalista poziom 3 (min. 600)
- Posty w temacie: 1
- Posty: 665
- Rejestracja: 28 sie 2006, 17:55
- Lokalizacja: dolnyśląsk
- Kontakt:
-
- Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 1
- Posty: 28
- Rejestracja: 07 sty 2010, 20:17
- Lokalizacja: Brodnica
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 2
- Posty: 262
- Rejestracja: 22 kwie 2011, 01:19
- Lokalizacja: Jarocin
Witam napisałem mały cykl który powinien wspomóc używanie automatycznego podajnika pręta. Wrzucę go teraz z tym że nie testowałem go jeszcze i tu prośba dla osób które mają działającego SinuTraina (mój wygasł) o sprawdzenie programu ewentualnie ja przetestuję go w poniedziałek popołudniu. Cykl należy skopiować do katalogu "CYKLE UŻYTKOWNIKA" (W TRYBIE CNC ISO - JEŚLI KTOŚ NIE WIE O CO CHODZI ALBO MA PROBLEM TO PROSZĘ O KONTAKT).MxM pisze:Zastanawiam sie jak powinien byc napisany poprawnie program z ich uzyciem, moze jest niezbedna jakas komenda poprzedajaca? Lub jakis inny sposob?
Ewentualne błędy w cyklu postaram się usunąć.
Cykl powinien działać zarówno wywołany w programie ISO jak i ShopTurn
Na tę chwile nie mam już za dużo czasu na robienie szczegółowego opisu wywołania ale myślę że jeśli ktoś wie jak wywołać cykl bez używania ShopTurna i nakładek GUI to powinien sobie dać radę.
Opis:
PODAJNIK(
1. NUMER PODAJNIKA (NUMER NARZĘDZIA),
2. POZYCJA DOJAZDU SZYBKIEGO X,
3. POZYCJA DOJAZDU SZYBKIEGO Z,
4. POZYCJA ZAHACZENIA Z,
5. POZYCJA WYSUNIĘCIA Z,
6. INKREMENTALNE POZYCJA ODCZEPIANIA + KIERUNEK NP "X30",
7. LICZBA POWTÓRZEŃ,
8. BLOK POWROTU (CZYLI BLOK STARTOWY NP N5))
Kod: Zaznacz cały
PODAJNIK(1,0,10,-50,-10,"X30",50,10)
| | | | | | | |
1. NUMER NARZĘDZIA-----------+ | | | | | | |
2. POZYCJA BEZPIECZNA (G0) X,--+ | | | | | |
3. POZYCJA BEZPIECZNA (G0) Z,-----+ | | | | |
4. POZYCJA ZAHACZENIA (G1) Z,--------+ | | | |
5. POZYCJA WYSUNIĘCIA (G1) Z,------------+ | | |
6. ODCZEPIANIE PODAJNIKA NP "X30" LUB "Z30",--+ | |
7. LICZBA POWTÓRZEŃ,------------------------------+ |
8. BLOK STARTOWY PROGRAMU NP (N5),-------------------+
N5 program obrobki
N10 program obrobki
N15 program obrobki
N20 program obrobki
N30 PODAJNIK(1,0,10,-50,-10,"X30",50,5)
M30
CYKL "PODAJNIK.SPF":
Kod: Zaznacz cały
;%_N_PODAJNIK_SPF
;$PATH=/_N_CUS_DIR
N10 PROC PODAJNIK(INT _USRT,REAL RAPID_X,REAL RAPID_Z,REAL _PZ0,REAL _PZ1,STRING[8] ODJAZD,INT SZTUKI,INT N_POWROTU) DISPLOF SBLOF
;----------------------------------------------------
;CYKL AUTOMATYCZNEGO PODAJNIKA PRĘTA
;DATA: 01.06.2014
;AUTOR : ARTUR PASZEK / http://www.cnc.info.pl/djronin,u,32129.htm
;CYKL NAPISANY NA POTRZEBY UŻYTKOWNIKÓW FORUM www.cnc.info.pl
;----------------------------------------------------
; HISTORIA:
; 02.06.2014 Artur: Zamiana miejsc dwóch ostatnich argumentów, jeśli podamy ostatni argument (num bloku)
; program będzie wracał do tego numeru jeśli go opuścimy będzie wracał do "N5" (ShopTurn)
; 01.06.2014 Artur: Pierwsze wydanie.
DEF REAL POSUW[3], PAUZA[2]
DEF INT NUMER_R, S_N_POWROTU
;USTAWIENIA STALE:
;
N20 POSUW[0] = 1000 ;MM/MIN - POSUW CHWYTANIA
N30 POSUW[1] = 1000 ;MM/MIN - POSUW WYSUWANIA
N40 POSUW[2] = 1000 ;MM/MIN - POSUW ODCZEPIANIA
N50 PAUZA[0] = 0.8 ;CZAS OTWARCIA [SEKUNDA]
N60 PAUZA[1] = 1 ;CZAS ZAMKNIECIA [SEKUNDA]
N70 NUMER_R = 1 ;NUMER PARAMETRU R DO DANYCH LICZNIKA
N80 S_N_POWROTU = 5 ;DLA SHOPTURN = 5
;----------------------------------------------------
N90 GOTOF _LST
_PODS:
SBLON
N100 f_home ;NAJAZD NA PTK WYMIANY NARZEDZIA
N110 T=_USRT ;M6 ;WYBRANIE NARZĘDZIA W RAZIE POTRZEBY DODAĆ M6
N120 MSG("POZOSTALO "<<R[NUMER_R]<<" PRZEJSC PROGRAMU") ;
N130 G90 G0 G94 ;WYMIAR ABS, RAPID FEED, MM/MIN
N140 M9 M5 ;CHLODZIWO WYL, OBROTY STOP
N150 G0 X=RAPID_X Z=RAPID_Z ;POZYCJA BEZPIECZNA XZ
N160 G1 Z=_PZ0 F=POSUW[0] ;NAJAZD NA POZYCJE CHWYTANIA
N170 M67 ;<<DOPRSUJ KOD M DLA SWOJEJ MASZYNY ;OTWARCIE ZACISKU WRZECIONA, EWENTUALNIE M27, M10
N180 G4 F=PAUZA[0] ;PRZERWA CZASOWA OTWARCIA
N190 G1 Z=_PZ1 F=POSUW[1] ;WYSUNIECIE PRETA
N200 STOPRE ;ZATRZYMANIE PRZEBIEGU WYPRZEDZAJĄCEGO
N210 M68 ;<<DOPRSUJ KOD M DLA SWOJEJ MASZYNY ;ZAMKNIECIE ZACISKU WRZECIONA, EWENTUALNIE M28, M11
N220 G4 F=PAUZA[1] ;PRZERWA CZASOWA ZAMKNIĘCIA
N230 EXECSTRING("G91G1"<<ODJAZD<<"F=POSUW[2]") ;REALIZACJA ODCZEPIANIA
N240 G90 G00 ;
N250 f_home ;NAJAZD NA PTK WYMIANY NARZEDZIA
N260 MSG() ;
SBLOF
_PODE:
;SPRAWDZA CZY NASZ LICZNIK GLOBALNY (PAR. "R") NIE WYKRACZA POZA DOPUSZCZALNY ZAKRES
_LST:
N400 IF (R[NUMER_R] < 0) OR (R[NUMER_R] > SZTUKI) ;CZY NASZ LICZNIK "R" JEST UJEMNY, LUB WIĘKSZY OD PODANEJ LICZBY SZT.
N410 R[NUMER_R]=SZTUKI ;JESLI PRAWDA INICJUJE LICZNIK NA PODANĄ LICZBĘ DO OBRÓBKI
N420 ENDIF
;CZY PODALISMY X LUB Z
N600 IF (SUBSTR(ODJAZD,0,1) == "X") OR (SUBSTR(ODJAZD,0,1) == "Z") GOTOF _STROK
N610 _ERR1:MSG("POPRAW DANE ODJAZDU!!")
N620 G4F2
N630 MSG()
N640 G4F1
N650 GOTOB _ERR1
_STROK:
;SPRAWDZA CZY PODALIŚMY NUMER BLOKU POWROTU
N800 IF N_POWROTU GOTOF _NNT
N810 N_POWROTU = S_N_POWROTU
_NNT:
N900 IF R[NUMER_R] <> 0
N910 R[NUMER_R] = R[NUMER_R] - 1
N920 REPEAT _PODS _PODE P=1
N930 RET("N"<<N_POWROTU,0)
N940 ELSE
N950 F_HOME
N960 R[NUMER_R]=SZTUKI
N970 RET
N980 ENDIF
%
...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: 2
- Posty: 262
- Rejestracja: 22 kwie 2011, 01:19
- Lokalizacja: Jarocin
Witam testowałem przed chwilą program i usunąłem kilka błędów ale już działa prawidłowo 
z tym że akurat nie mogłem zrobić testów na tokarce dlatego wgrałem go na frezarkę z sterowaniem Sinumerik 810D a podprogram na wyciąganie pręta przerobiłem na wiercenie.
W głównym programie zrobiłem też wiercenie w G54X0Y0Z100 zaś w programie PODAJNIK.SPF to samo wiercenie wykonuje się w G54X100Y0Z100.
Dlatego jak ktoś pracuje na tokarce i interesuje go ten temat to prosił bym o sprawdzenie tego podprogramu chodzi tu o część kodu zaczynającego się od N170 a kończącego na N245.
Poniżej dwa filmiki z wywołaniem podprogramu w ShopMill i w G-Code (ISO).
Poprawiony kod cyklu z komentarzami dla użytkowników forum:
Wersja do wgrania na maszynę:

z tym że akurat nie mogłem zrobić testów na tokarce dlatego wgrałem go na frezarkę z sterowaniem Sinumerik 810D a podprogram na wyciąganie pręta przerobiłem na wiercenie.
W głównym programie zrobiłem też wiercenie w G54X0Y0Z100 zaś w programie PODAJNIK.SPF to samo wiercenie wykonuje się w G54X100Y0Z100.
Dlatego jak ktoś pracuje na tokarce i interesuje go ten temat to prosił bym o sprawdzenie tego podprogramu chodzi tu o część kodu zaczynającego się od N170 a kończącego na N245.
Poniżej dwa filmiki z wywołaniem podprogramu w ShopMill i w G-Code (ISO).
Poprawiony kod cyklu z komentarzami dla użytkowników forum:
Kod: Zaznacz cały
;%_N_PODAJNIK_SPF
;$PATH=/_N_CUS_DIR
N100 PROC PODAJNIK(INT _USRT,REAL RAPID_X,REAL RAPID_Z,REAL _PZ0,REAL _PZ1,STRING[8] ODJAZD,INT SZTUKI,INT N_POWROTU) DISPLOF SBLOF
;----------------------------------------------------
;Cykl automatycznego podajnika pręta
; Data: 01.06.2014
;Autor : Artur Paszek / http://www.cnc.info.pl/djronin,u,32129.htm
;Cykl napisany na potrzeby użytkowników forum www.cnc.info.pl
;----------------------------------------------------
; HISTORIA:
; 02.06.2014 Artur: Zamiana miejsc dwóch ostatnich argumentów, jeśli
; podamy ostatni argument (numer bloku) program
; będzie wracał do tego numeru jeśli go opuścimy
; powrót nastąpi do "N5" (ShopTurn)
; Poprawienie licznika powtórzeń (robił o 1 więcej)
; Dodanie licznika (systemowego) dla każdego przejścia
; 01.06.2014 Artur: Pierwsze wydanie.
N105 DEF REAL POSUW[3], PAUZA[2]
N110 DEF INT _RLN, S_N_RET
N115 DEF BOOL AC_SPART
;----------------------------------------------------
;USTAWIENIA STALE:
;
N120 POSUW[0] = 1000 ;mm/min - posuw chwytania
N125 POSUW[1] = 1000 ;mm/min - posuw wysuwania
N130 POSUW[2] = 1000 ;mm/min - posuw odczepiania
N135 PAUZA[0] = 0.8 ;czas otwarcia [sekunda]
N140 PAUZA[1] = 1 ;czas zamknięcia [sekunda]
N145 _RLN = 1 ;numer parametru r do danych licznika
N150 S_N_RET = 5 ;blok powrotu dla shopturn = 5
N155 AC_SPART = 1 ;0-1 licznik dla każdego przejścia
;----------------------------------------------------
N160 GOTOF _LST
_PODS:
N165 SBLON
N170 f_home ;Najazd na ptk wymiany narzędzia
N175 T=_USRT ;M6 ;Wybranie narzędzia w razie potrzeby dodać m6
N180 MSG("Pozostało "<<R[_RLN]<<" cykli programu") ;
N185 G90 G0 G94 G18 ;Wymiar abs, rapid feed, mm/min, g18
N190 M9 M5 ;Chłodziwo wył, obroty stop
N195 G0 X=RAPID_X Z=RAPID_Z ;Pozycja bezpieczna xz
N200 G1 Z=_PZ0 F=POSUW[0] ;Najazd na pozycje chwytania
N205 M67 ;<<dopasuj kod m dla swojej maszyny ;Otwarcie zacisku wrzeciona, ewentualnie m27, m10
N210 G4 F=PAUZA[0] ;Przerwa czasowa otwarcia
N215 G1 Z=_PZ1 F=POSUW[1] ;Wysuniecie pręta
N220 STOPRE ;Zatrzymanie przebiegu wyprzedzającego
N225 M68 ;<<dopasuj kod m dla swojej maszyny ;Zamkniecie zacisku wrzeciona, ewentualnie m28, m11
N230 G4 F=PAUZA[1] ;Przerwa czasowa zamknięcia
N235 EXECSTRING("G91G1"<<ODJAZD<<"F=POSUW[2]") ;Realizacja odczepiania
N240 G90 G00 ;
N245 f_home ;Najazd na ptk wymiany narzędzia
N250 SBLOF
_PODE:
;Sprawdza czy nasz licznik globalny (par. "r")
;nie wykracza poza dopuszczalny zakres
_LST:
N255 IF (R[_RLN] < 0) OR (R[_RLN] > SZTUKI) ;czy nasz licznik "r" jest ujemny, lub większy od podanej liczby szt.
N260 R[_RLN]=SZTUKI ;jeśli prawda inicjuje licznik na podaną liczbę do obróbki
N265 ENDIF
;czy podalismy x lub z
N270 IF(SUBSTR(ODJAZD,0,1)=="X")OR(SUBSTR(ODJAZD,0,1)=="Z") GOTOF _STROK
N610 _ERR1:MSG("POPRAW DANE ODJAZDU!!")
N275 G4F1.5
N280 MSG()
N285 G4F1.3
N290 GOTOB _ERR1
_STROK:
;sprawdza czy podaliśmy numer bloku powrotu
N295 IF N_POWROTU GOTOF _NNT
N300 N_POWROTU = S_N_RET
_NNT:
N305 IF (R[_RLN]-1) <> 0
N310 R[_RLN]=R[_RLN]-1
N315 IF AC_SPART
N320 $AC_ACTUAL_PARTS=$AC_ACTUAL_PARTS+1
N325 ENDIF
N330 REPEAT _PODS _PODE P=1
N335 RET("N"<<N_POWROTU,0)
N340 ELSE
N345 f_home
N350 R[_RLN]=SZTUKI
N355 RET
N360 ENDIF
Wersja do wgrania na maszynę:
Kod: Zaznacz cały
;%_N_PODAJNIK_SPF
;$PATH=/_N_CUS_DIR
N100 PROC PODAJNIK(INT _USRT,REAL RAPID_X,REAL RAPID_Z,REAL _PZ0,REAL _PZ1,STRING[8] ODJAZD,INT SZTUKI,INT N_POWROTU) DISPLOF SBLOF
;----------------------------------------------------
;Cykl automatycznego podajnika pręta
; Data: 01.06.2014
;Autor : Artur Paszek / http://www.cnc.info.pl/djronin,u,32129.htm
;Cykl napisany na potrzeby użytkowników forum www.cnc.info.pl
;----------------------------------------------------
; HISTORIA:
; 02.06.2014 Artur: Zamiana miejsc dwóch ostatnich argumentów, jeśli
; podamy ostatni argument (numer bloku) program
; będzie wracał do tego numeru jeśli go opuścimy
; powrót nastąpi do "N5" (ShopTurn)
; Poprawienie licznika powtórzeń (robił o 1 więcej)
; Dodanie licznika (systemowego) dla każdego przejścia
; 01.06.2014 Artur: Pierwsze wydanie.
N105 DEF REAL POSUW[3], PAUZA[2]
N110 DEF INT _RLN, S_N_RET
N115 DEF BOOL AC_SPART
;----------------------------------------------------
;USTAWIENIA STALE:
;
N120 POSUW[0] = 1000 ;mm/min - posuw chwytania
N125 POSUW[1] = 1000 ;mm/min - posuw wysuwania
N130 POSUW[2] = 1000 ;mm/min - posuw odczepiania
N135 PAUZA[0] = 0.8 ;czas otwarcia [sekunda]
N140 PAUZA[1] = 1 ;czas zamknięcia [sekunda]
N145 _RLN = 1 ;numer parametru r do danych licznika
N150 S_N_RET = 5 ;blok powrotu dla shopturn = 5
N155 AC_SPART = 1 ;0-1 licznik dla każdego przejścia
;----------------------------------------------------
N160 GOTOF _LST
_PODS:
N165 SBLON
N170 f_home
N175 T=_USRT ;M6
N180 MSG("Pozostało "<<R[_RLN]<<" cykli programu") ;
N185 G90 G0 G94 G18
N190 M9 M5
N195 G0 X=RAPID_X Z=RAPID_Z
N200 G1 Z=_PZ0 F=POSUW[0]
N205 M67
N210 G4 F=PAUZA[0]
N215 G1 Z=_PZ1 F=POSUW[1]
N220 STOPRE
N225 M68
N230 G4 F=PAUZA[1]
N235 EXECSTRING("G91G1"<<ODJAZD<<"F=POSUW[2]")
N240 G90 G00
N245 f_home
N250 SBLOF
_PODE:
;Sprawdza czy nasz licznik globalny (par. "r")
;nie wykracza poza dopuszczalny zakres
_LST:
N255 IF (R[_RLN] < 0) OR (R[_RLN] > SZTUKI)
N260 R[_RLN]=SZTUKI
N265 ENDIF
;czy podalismy x lub z
N270 IF(SUBSTR(ODJAZD,0,1)=="X")OR(SUBSTR(ODJAZD,0,1)=="Z") GOTOF _STROK
N610 _ERR1:MSG("POPRAW DANE ODJAZDU!!")
N275 G4F1.5
N280 MSG()
N285 G4F1.3
N290 GOTOB _ERR1
_STROK:
;sprawdza czy podaliśmy numer bloku powrotu
N295 IF N_POWROTU GOTOF _NNT
N300 N_POWROTU = S_N_RET
_NNT:
N305 IF (R[_RLN]-1) <> 0
N310 R[_RLN]=R[_RLN]-1
N315 IF AC_SPART
N320 $AC_ACTUAL_PARTS=$AC_ACTUAL_PARTS+1
N325 ENDIF
N330 REPEAT _PODS _PODE P=1
N335 RET("N"<<N_POWROTU,0)
N340 ELSE
N345 f_home
N350 R[_RLN]=SZTUKI
N355 RET
N360 ENDIF
...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"...