Nie za bardzo wiem jak to ugryźć i jak to wygląda...
@tomcat65 Ok czyli podprogram można stosować jak pętle while. Część obliczeniową programu musimy przenieść do programu głównego aby wyliczyć ilość przejść a następnie zapisać L#XXX. Jak i gdzie mam mieć zapisane programy aby zostały prawidłowo wczytane? Czy nazwa pliku txt. ma znaczenie?
@qqaz Czy byłbyś w stanie mi pomóc zrobić pierwszy program w oparciu o makra lub pokazał jakiś prosty program abym zobaczył jak to działa?
Mój przykładowy cykl: Fazowanie ze zmienną powierzchnią
(Zaimplementowałem tutaj dla fun'u generator liczb losowych bazujący na godzinie podanej w sekundach #3012 dla Fanuca)
Kod: Zaznacz cały
O0720(FAZOWANIE ZE ZMIENNA POWIERCHNIA)(MADE BY PAWEL BLASZCZYK. ALL RIGHTS RESERVED)
G54
#100=30 (SREDNICA MINIMALNA FAZOWNIKA)
#101=30 (KAT FAZOWNIKA)
#102=5 (WYSOKOSC PLYTKI FAZOWNIKA)
#104=50 (SREDNICA FAZOWANIA)
#105=-100 (POCZATEK W OSI z)
#106=0,5 (GLEBOKOSC FAZY W OSI z)
#107=0 (DOJAZD I OBROBKA 0-WEWNETRZNA 1-ZEWNETRZNA)
#108=100 (POSOW)
#109=1000 (OBROTY)
#110=5 (NUMER NARZEDZIA)
#111=5 (ODLEGLOSC BEZPIECZNA)
#199=10 (ILOSC LICZB MOZLIWYCH DO WYLOSOWANIA)
(OBLICZENIA LICZBA LOSOWA)
#198=#3012MOD#199 (WYLOSOWANA LICZBA)
(OBLICZENIA PROGRAMOWE)
#126=#[1300+#110] (KOMPENSACJA PROMIENIA NARZEDZIA)
#122=0 (ZMIENNA DLA DOJAZDU I OBROTU)
#116=0,1 (DOKLADNOSC PODANA W WARTOSCI KATOWEJ)
#114=0 (CHWILOWY KAT PODCZAS CYKLU/KAT POCZATKOWY)
#103=[TAN[#101]*#102] (SZEROKOSC PLYTKI FAZOWANIKA)
#102=#102-[0,1*#102] (ZMNIEJSZENIE WYSOKOSCI PLYTKI ZE WZGLEDU NA NIEDOKLADNOSCI POMIAROWE)
#103=#103-[0,1*#103] (ZMNIEJSZENIE SZEROKOSCI PLYTKI ZE WZGLEDU NA NIEDOKLADNOSCI POMIAROWE)
#102=[#102/#199] (MINIMALNE PRZESUNIECIE WYSOKOSCI)
#103=[#103/#199] (MINIMALNE PRZESUNIECIE SZEROKOSCI)
#102=[#102*#198] (PRZESUNIECIE LOSOWE WYSOKOSCI)
#103=[#103*#198] (PRZESUNIECIE LOSOWE SZEROKOSCI)
#126=[#126+#103] (KOMPENSACJA PROMIENIA NARZEDZIA SKORYGOWANA O PRZESUNIECIE LOSOWE)
#106=[#106+#102] (GLEBOKOSC FAZY SKORYGOWANA O PRZESUNIECIE LOSOWE)
(ALARMY I ZALOZENIA LOGICZNE)
IF[#100LE0]THEN#3000=1(ZLA SREDNICA MINIMALNA #100)
IF[#101LE0]OR[#101GE90]THEN#3000=1(ZLY KAT FAZOWNIKA #101)
IF[#102LE0]THEN#3000=1(ZLA WYSOKOSC PLYTKI FAZOWNIKA #102)
IF[#104LE0]THEN#3000=1(ZLA SREDNICA FAZOWANIA #104)
IF[#106LE0]OR[#106GE#102]THEN#3000=1(ZLA GLEBOKOSC FAZY #106)
IF[#107LT0]OR[#107GT1]THEN#3000=1(ZLY RODZAJ DOJAZDU I OBROBKI #107)
IF[#108LE0]THEN#3000=1(ZLY POSOW #108)
IF[#109LE0]THEN#3000=1(ZLE OBROTY #109)
IF[#110LE0]OR[#110GT60]THEN#3000=1(ZLY NUMER NARZEDZIA #110)
IF[#111LE0]THEN#3000=1(ZLA ODLEGLOSC BEZPIECZNA #111)
IF[#199LE0]THEN#3000=1(ZLA ILOSC LICZB DO WYLOSOWANIA #199)
IF[#107EQ0]THEN#122=-1
IF[#107EQ1]THEN#122=1
(WLASCIWY PROGRAM)
G0G54G90T#110M06
G43#110X0Y0Z200
G0X[[[#104/2]+[#126*#122]*COS[#114]]Y[[[#104/2]+[#126*#122]*SIN[#114]]Z[#105+#111]
M01
M10
G01Z[#105-#106]M03F#108S#109
WHILE[#114LT360]DO1
G01X[[[#104/2]+[#126*#122]*COS[#114]]Y[[[#104/2]+[#126*#122]*SIN[#114]]
#114=[#114+#116]
END1
G01Z[#105+#111+10]
G00Z200
G00X0Y0
M05
M11
M01
M99
Byłem operatorem (prawie) "jednego cyklu" mam cykl który jest bardzo rozbudowany, można warunkować masę rzeczy opcji frezowania w interpolacji stożkowej i bardzo bym chciał go przepisać na Mach3