840d otwarcie / zamkniecie uchwytu automatycznego

Dyskusje na temat systemu Sinumerik

Autor tematu
MxM
Specjalista poziom 1 (min. 100)
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

#1

Post napisał: MxM » 05 sty 2014, 15:47

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.



Tagi:


typhon
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 187
Rejestracja: 03 paź 2007, 17:58
Lokalizacja: podlaskie

#2

Post napisał: typhon » 05 sty 2014, 22:32

otwarcie uchwytu M27 a zamkniecie M26 spróbuj

Awatar użytkownika

rafalxfiles
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 1
Posty: 665
Rejestracja: 28 sie 2006, 17:55
Lokalizacja: dolnyśląsk
Kontakt:

#3

Post napisał: rafalxfiles » 06 sty 2014, 17:10

tylko zanim zaczniesz otwierać musisz dać M5 zatrzymanie obrotów.. i możliwe jest, że jak się pręt skończy to maszyna powinna sobie wywołać jakiś tam inny program na koniec pręta..


Autor tematu
MxM
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 228
Rejestracja: 21 mar 2008, 11:41
Lokalizacja: Łódź
Kontakt:

#4

Post napisał: MxM » 07 sty 2014, 18:42

Zadne z powyzszych.

M67 M68 zadzialalo.

Thx za pomoc.


Godlech912
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 1
Posty: 28
Rejestracja: 07 sty 2010, 20:17
Lokalizacja: Brodnica

#5

Post napisał: Godlech912 » 20 maja 2014, 22:29

Po odcieciu detalu programujesz M1 i jeśli w nastawach podasz wymaganą ilość sztuk do zrobienia np. 50 to po odcięciu 50 sztuki się zatrzymuje i wyświetli komunikat, że wykonało już tyle sztuk. Wtedy podajesz na nowo np 50 i klikasz auto i jedzie dalej.


XSauronX
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 6
Rejestracja: 21 kwie 2012, 22:02
Lokalizacja: Polska

#6

Post napisał: XSauronX » 27 maja 2014, 01:18

A jeśli korzystasz z shop turna to ostatni blok END, w nim można wpisać liczbe wymaganych detali po ktorej maszyna zatrzyma sie calkowicie.

Awatar użytkownika

djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

#7

Post napisał: djronin » 01 cze 2014, 17:21

MxM pisze:Zastanawiam sie jak powinien byc napisany poprawnie program z ich uzyciem, moze jest niezbedna jakas komenda poprzedajaca? Lub jakis inny sposob?
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).

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),-------------------+
Wywołanie:

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"...

Awatar użytkownika

djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

#8

Post napisał: djronin » 02 cze 2014, 22:08

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:

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"...

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Siemens Sinumerik CNC”