Programowanie parametryczne

Dyskusje na temat systemu Heidenhaina

Bert10
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 2
Posty: 19
Rejestracja: 02 paź 2006, 22:05
Lokalizacja: Białystok

#41

Post napisał: Bert10 » 22 wrz 2007, 08:03

Dokładnie nie było LBL 0 i dochodziło do niekontrolowanego zapętlenia i zapełnienia pamięci.



Tagi:

Awatar użytkownika

easy2002
Moderator
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1998
Rejestracja: 27 lis 2004, 19:40
Lokalizacja: Gniew
Kontakt:

#42

Post napisał: easy2002 » 22 wrz 2007, 08:14

Witam
Panowie
Oto program już więcej LBL 0 nie da się wstawić a kilka jest naprawde zbędnych

FN 0: Q30 = +0 ; WSPOLRZEDNA OSI X
FN 0: Q31 = +0 ; WSPOLRZEDNA OSI Y
FN 0: Q32 = +300 ; WSPOLRZEDNA OSI Z
FN 0: Q33 = +150 ; SREDNICA OBRABIANA
FN 0: Q34 = +100 ; SREDNICA WEJ-WYJ
FN 0: Q35 = +11 ; NADDATEK W OSI Z
FN 0: Q36 = +50 ; NADDATEK NA SREDNICY
FN 0: Q37 = +1 ; NADDATEK NA OSTATNIE PRZEJSCIE W OSI Z
FN 0: Q38 = +2 ; NADDATEK NA OSTATNIE PRZEJSCIE NA SREDNICY
FN 0: Q39 = +10 ; ILOSC PRZEJSC W OSI Z
FN 0: Q40 = +7 ; ILOSC PRZEJSC NA SREDNICY
FN 0: Q55 = +0 ;
FN 0: Q56 = +180 ; KAT WEJSCIA
FN 0: Q57 = +20 ; KAT WYJSCIA
FN 0: Q58 = +5000 ; POSUW FREZOWANIA
FN 0: Q59 = +2 ; RODZAJ FREZOWANIA
FN 9: IF +Q59 EQU +0 GOTO LBL 50 ; NA JEDNO PRZEJSCIE
FN 9: IF +Q59 EQU +1 GOTO LBL 51 ; FREZOWANIE SREDNIC
FN 9: IF +Q59 EQU +2 GOTO LBL 52 ; FREZOWANIE W OSI Z
LBL 2 ; BEZPIECZNA WYSOKOSC I PRZESUNIECIE PUNKTU
Q32 = Q32 + 100
L Z+Q32 F MAX
Q32 = Q32 - 100
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX+Q30
CYCL DEF 7.2 IY+Q31
LBL 0
LBL 52 ; FREZOWANIE W OSI Z
CALL LBL 2 ;
Q55 = Q33 + Q34
FN 4: Q55 = +Q55 DIV +4
FN 4: Q33 = +Q33 DIV +2
Q50 = Q33 - Q55
Q52 = Q32 + Q35 ; Q52 CALKOWITA DLUGOSC
Q62 = Q35 - Q37 ; Q62 DLUGOSC BEZ OSTATNIEGO PRZEJSCIA
Q63 = Q62 / Q39 ; Q63 WIELKOSC WIORA
Q64 = Q52 - Q63 ; Q64 AKTUALNY ZET
Q65 = Q32 + Q37 ; Q65 NADDATEK NA OSTATNIE PRZEJSCIE
CALL LBL 4
LBL 0
LBL 5 ;
Q64 = Q64 - Q63 ; Q64 AKTUALNY ZET
CALL LBL 4
LBL 0
LBL 6 ;
Q64 = Q32 ; OSTATNIE PRZEJSCIE
CALL LBL 4
LBL 0
LBL 4
L X+0 Y+0 R0 F MAX
L Z+Q64 F1000 M13
CC X+Q50 Y+0
LP PR+Q55 PA+Q56 RL F1000
C X+Q33 Y+0 DR+ FQ58
CC X+0 Y+0
C X+Q33 Y+0 DR+
CC X+Q50 Y+0
CP PA+Q57 DR+
L X+0 Y+0 R0 F2000
FN 11: IF +Q35 GT +0 GOTO LBL 20
FN 12: IF +Q35 LT +0 GOTO LBL 21
LBL 20 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 11: IF +Q64 GT +Q65 GOTO LBL 5
FN 12: IF +Q64 LT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0
LBL 21 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 12: IF +Q64 LT +Q65 GOTO LBL 5
FN 11: IF +Q64 GT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0
LBL 7 ; BEZPIECZNA WYSOKOSC I POWROT DO PUNKTU
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX-Q30
CYCL DEF 7.2 IY-Q31
CYCL DEF 7.3 IZ+Q32
Q32 = Q32 + 100
L Z+Q32 F MAX
Q32 = Q32 - 100
LBL 0

Kto ma jakiś pomysł na to bo ja mam już dość
... z poważaniem ....pozdrawiam --- Doceń to że, poświęciłem Ci trochę czasu !!! wciśnij "pomógł" to nic nie kosztuje ;-) ---
Moja pierwsza i druga maszynka a trzecia w fazie testu http://www.cnc.info.pl/viewtopic.php?t=2281


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#43

Post napisał: Leoo » 22 wrz 2007, 15:51

Nie znam się kompletnie na takim programowaniu. Podejrzewam, że LBL 0 jest równoznaczne z powrotem z podprogramu, zwykle oznaczane jako RET. Skoro tak, to brakuje LBL 0 między poniższymi liniami, co skutkuje generowaniem błędu "kompilacji".
easy2002 pisze:FN 12: IF +Q35 LT +0 GOTO LBL 21
LBL 20 ;
LBL 20 jest częścią LBL 4 - chyba że taki był zamiar.
Dla aktualnie ustawionego parametru Q59=+2 mamy skok warunkowy do LBL52, jednej z trzech gałęzi algorytmu głównego. Nie wiem czy to ma jakieś znaczenie w tym wypadku ale raczej należy umieszczać podprogramy (tu LBL 2) geograficznie za algorytmem głównym, jak to ma miejsce w przypadku LBL 4, LBL5, LBL20 itd. Analizując dalszą część LBL 52, mamy kilka operacji arytmetycznych i wywołanie podprogramu LBL 4, który z kolei może wywołać LBL 20 lub LBL21 i mamy problem. Rozkaz GOTO zwykle oznacza skok bezwarunkowy, w związku z czym nie mamy powrotu z LBL4, mimo że wywoływany był jako podprogram. Mamy więc badzo duże rozwidlenie algorytmu i tak naprawdę nie wiadomo gdzie jest jego koniec. Większość kompilatorów języków wyższego rzędu wymaga, po deklaracji warunku IF, użycia słowa-klucza END IF informującego kompilator o zakończeniu procesu warunkowego. Podobnie wymagane jest słowo END na końcu listingu.

Awatar użytkownika

V-tek
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 192
Rejestracja: 06 maja 2007, 14:59
Lokalizacja: Świdnica

#44

Post napisał: V-tek » 22 wrz 2007, 22:06

Doładnie, w LBL4 pojawił sie label 20 i to jest za duże pakietowanie.

[ Dodano: 2007-09-22, 22:06 ]
Dokładnie :grin:

Awatar użytkownika

easy2002
Moderator
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1998
Rejestracja: 27 lis 2004, 19:40
Lokalizacja: Gniew
Kontakt:

#45

Post napisał: easy2002 » 23 wrz 2007, 18:12

Witam
Dziękuję kolegom za podpowiedzi
Tylko tak jak pisałem wcześniej powstawiałem wszędzie gdzie tylko to możliwe LBL 0
przypadkowo wykasowałem to LBL 0 w tym programie co go umieściłem tu na forum
teraz poprawiłem zmieniłem troszkę układ
teraz idzie 7 razy cyklicznie poczym jest za duże pakietowanie
poprzednio szedł sześć razy cyklicznie
ciekawe co???

TOOL CALL 15 Z S100
FN 0: Q30 =+0 ; WSPOLRZEDNA OSI X
FN 0: Q31 =+0 ; WSPOLRZEDNA OSI Y
FN 0: Q32 =+0 ; WSPOLRZEDNA OSI Z
FN 0: Q33 =+150 ; SREDNICA OBRABIANA
FN 0: Q34 =+100 ; SREDNICA WEJ-WYJ
FN 0: Q35 =+11 ; NADDATEK W OSI Z
FN 0: Q36 =+50 ; NADDATEK NA SREDNICY
FN 0: Q37 =+1 ; NADDATEK NA OSTATNIE PRZEJSCIE W OSI Z
FN 0: Q38 =+2 ; NADDATEK NA OSTATNIE PRZEJSCIE NA SREDNICY
FN 0: Q39 =+10 ; ILOSC PRZEJSC W OSI Z
FN 0: Q40 =+7 ; ILOSC PRZEJSC NA SREDNICY
FN 0: Q55 =+0 ;
FN 0: Q56 =+180 ; KAT WEJSCIA
FN 0: Q57 =+20 ; KAT WYJSCIA
FN 0: Q58 =+5000 ; POSUW FREZOWANIA
FN 0: Q59 =+2 ; RODZAJ FREZOWANIA
FN 9: IF +Q59 EQU +0 GOTO LBL 50 ; NA JEDNO PRZEJSCIE
FN 9: IF +Q59 EQU +1 GOTO LBL 51 ; FREZOWANIE SREDNIC
FN 9: IF +Q59 EQU +2 GOTO LBL 52 ; FREZOWANIE W OSI Z
LBL 2 ; BEZPIECZNA WYSOKOSC I PRZESUNIECIE PUNKTU
Q32 = Q32 + 100
L Z+Q32 FMAX
Q32 = Q32 - 100
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX+Q30
CYCL DEF 7.2 IY+Q31
LBL 0
LBL 52 ; FREZOWANIE W OSI Z
CALL LBL 2 ;
Q55 = Q33 + Q34
FN 4: Q55 =+Q55 DIV +4
FN 4: Q33 =+Q33 DIV +2
Q50 = Q33 - Q55
Q52 = Q32 + Q35 ; Q52 CALKOWITA DLUGOSC
Q62 = Q35 - Q37 ; Q62 DLUGOSC BEZ OSTATNIEGO PRZEJSCIA
Q63 = Q62 / Q39 ; Q63 WIELKOSC WIORA
Q64 = Q52 - Q63 ; Q64 AKTUALNY ZET
Q65 = Q32 + Q37 ; Q65 NADDATEK NA OSTATNIE PRZEJSCIE
CALL LBL 4
LBL 0
LBL 23
FN 11: IF +Q35 GT +0 GOTO LBL 20
FN 12: IF +Q35 LT +0 GOTO LBL 21
LBL 0
LBL 5 ;
Q64 = Q64 - Q63 ; Q64 AKTUALNY ZET
CALL LBL 4
CALL LBL 23
LBL 0
LBL 6 ;
Q64 = Q32 ; OSTATNIE PRZEJSCIE
CALL LBL 4
CALL LBL 23
LBL 0
LBL 4
L X+0 Y+0 R0 FMAX
L Z+Q64 F1000 M13
CC X+Q50 Y+0
LP PR+Q55 PA+Q56 RL F1000
C X+Q33 Y+0 DR+ FQ58
CC X+0 Y+0
C X+Q33 Y+0 DR+
CC X+Q50 Y+0
CP PA+Q57 DR+
L X+0 Y+0 R0 F2000
LBL 0
LBL 20 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 11: IF +Q64 GT +Q65 GOTO LBL 5
FN 12: IF +Q64 LT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0
LBL 21 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 12: IF +Q64 LT +Q65 GOTO LBL 5
FN 11: IF +Q64 GT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0
LBL 7 ; BEZPIECZNA WYSOKOSC I POWROT DO PUNKTU
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX-Q30
CYCL DEF 7.2 IY-Q31
CYCL DEF 7.3 IZ+Q32
Q32 = Q32 + 100
L Z+Q32 FMAX
Q32 = Q32 - 100
LBL 0

Jeśli chodzi o funkcje IF GOTO to moim zdanie (bo trudno znaleźć porządny opis od tych funkcji) jeśli w programie napotka taką funkcję to ją wykonuje i niema potrzeby wpisywania po IF GOTO funkcji LBL 0
... z poważaniem ....pozdrawiam --- Doceń to że, poświęciłem Ci trochę czasu !!! wciśnij "pomógł" to nic nie kosztuje ;-) ---
Moja pierwsza i druga maszynka a trzecia w fazie testu http://www.cnc.info.pl/viewtopic.php?t=2281


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#46

Post napisał: Leoo » 23 wrz 2007, 21:57

Pozwoliłem sobie zmienić kolejność podprogramów, zgodnie z poprzednim postem. Puste wiersze umieściełem w celu zwiększenia czytelności. Z analizy wynika jednokrotne przejście programu. Czy LBL 0, kończący moduł LBL 52 jest końcem programu? Jeśli tak, to brakuje wywołań do innych podprogramów, poza LBL 2 i LBL4 a algorytm wykonany będzie tylko raz.

TOOL CALL 15 Z S100
FN 0: Q30 =+0 ; WSPOLRZEDNA OSI X
FN 0: Q31 =+0 ; WSPOLRZEDNA OSI Y
FN 0: Q32 =+0 ; WSPOLRZEDNA OSI Z
FN 0: Q33 =+150 ; SREDNICA OBRABIANA
FN 0: Q34 =+100 ; SREDNICA WEJ-WYJ
FN 0: Q35 =+11 ; NADDATEK W OSI Z
FN 0: Q36 =+50 ; NADDATEK NA SREDNICY
FN 0: Q37 =+1 ; NADDATEK NA OSTATNIE PRZEJSCIE W OSI Z
FN 0: Q38 =+2 ; NADDATEK NA OSTATNIE PRZEJSCIE NA SREDNICY
FN 0: Q39 =+10 ; ILOSC PRZEJSC W OSI Z
FN 0: Q40 =+7 ; ILOSC PRZEJSC NA SREDNICY
FN 0: Q55 =+0 ;
FN 0: Q56 =+180 ; KAT WEJSCIA
FN 0: Q57 =+20 ; KAT WYJSCIA
FN 0: Q58 =+5000 ; POSUW FREZOWANIA
FN 0: Q59 =+2 ; RODZAJ FREZOWANIA
FN 9: IF +Q59 EQU +0 GOTO LBL 50 ; NA JEDNO PRZEJSCIE
FN 9: IF +Q59 EQU +1 GOTO LBL 51 ; FREZOWANIE SREDNIC
FN 9: IF +Q59 EQU +2 GOTO LBL 52 ; FREZOWANIE W OSI Z

LBL 52 ; FREZOWANIE W OSI Z
CALL LBL 2 ;
Q55 = Q33 + Q34
FN 4: Q55 =+Q55 DIV +4
FN 4: Q33 =+Q33 DIV +2
Q50 = Q33 - Q55
Q52 = Q32 + Q35 ; Q52 CALKOWITA DLUGOSC
Q62 = Q35 - Q37 ; Q62 DLUGOSC BEZ OSTATNIEGO PRZEJSCIA
Q63 = Q62 / Q39 ; Q63 WIELKOSC WIORA
Q64 = Q52 - Q63 ; Q64 AKTUALNY ZET
Q65 = Q32 + Q37 ; Q65 NADDATEK NA OSTATNIE PRZEJSCIE
CALL LBL 4
LBL 0 ;*********** Czy to jest koniec programu?

LBL 2 ; BEZPIECZNA WYSOKOSC I PRZESUNIECIE PUNKTU
Q32 = Q32 + 100
L Z+Q32 FMAX
Q32 = Q32 - 100
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX+Q30
CYCL DEF 7.2 IY+Q31
LBL 0

LBL 23
FN 11: IF +Q35 GT +0 GOTO LBL 20
FN 12: IF +Q35 LT +0 GOTO LBL 21
LBL 0

LBL 5 ;
Q64 = Q64 - Q63 ; Q64 AKTUALNY ZET
CALL LBL 4
CALL LBL 23
LBL 0

LBL 6 ;
Q64 = Q32 ; OSTATNIE PRZEJSCIE
CALL LBL 4
CALL LBL 23
LBL 0

LBL 4
L X+0 Y+0 R0 FMAX
L Z+Q64 F1000 M13
CC X+Q50 Y+0
LP PR+Q55 PA+Q56 RL F1000
C X+Q33 Y+0 DR+ FQ58
CC X+0 Y+0
C X+Q33 Y+0 DR+
CC X+Q50 Y+0
CP PA+Q57 DR+
L X+0 Y+0 R0 F2000
LBL 0

LBL 20 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 11: IF +Q64 GT +Q65 GOTO LBL 5
FN 12: IF +Q64 LT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0

LBL 21 ;
FN 9: IF +Q64 EQU +Q32 GOTO LBL 7
FN 12: IF +Q64 LT +Q65 GOTO LBL 5
FN 11: IF +Q64 GT +Q65 GOTO LBL 6
FN 9: IF +Q64 EQU +Q65 GOTO LBL 6
LBL 0

LBL 7 ; BEZPIECZNA WYSOKOSC I POWROT DO PUNKTU
CYCL DEF 7.0 PUNKT BAZOWY
CYCL DEF 7.1 IX-Q30
CYCL DEF 7.2 IY-Q31
CYCL DEF 7.3 IZ+Q32
Q32 = Q32 + 100
L Z+Q32 FMAX
Q32 = Q32 - 100
LBL 0

Awatar użytkownika

easy2002
Moderator
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1998
Rejestracja: 27 lis 2004, 19:40
Lokalizacja: Gniew
Kontakt:

#47

Post napisał: easy2002 » 23 wrz 2007, 22:37

Witam
Dziękuję koledze za zainteresowanie
Ale kolega sam zapewne wiem tak jak w języku C jeśli są zachowane ścisłe reguły to kolejność poszczególnych podprogramów niema zupełnie znaczenia
Leoo pisze:Czy LBL 0, kończący moduł LBL 52
Tak to jest koniec LBL 52 ale nie samego programu bo mam jeszcze dwa LBL 50 i 51 jak wynika z programu (nie umieściłem całego na forum bo wogóle bym zamieszał )
Jeśli chodzi o LBL 4 to on będzie powtarzany do momentu uzyskania w Q64 wartości z Q65
Po czym ostatnie przejście na Q64 = Q32
Myślę że jest jakieś konkretne wyjaśnienie tego błędu
... z poważaniem ....pozdrawiam --- Doceń to że, poświęciłem Ci trochę czasu !!! wciśnij "pomógł" to nic nie kosztuje ;-) ---
Moja pierwsza i druga maszynka a trzecia w fazie testu http://www.cnc.info.pl/viewtopic.php?t=2281


qwedsa123
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 5
Posty: 23
Rejestracja: 14 kwie 2007, 21:23
Lokalizacja: gw wlkp

#48

Post napisał: qwedsa123 » 23 wrz 2007, 23:49

rollaz pisze:Pracuje w 3D bardzo czesto
witam.
mamm pytanie ,kiedys pracowalem w 3d,amkietam by punkty zerowe byly zachowane w tym samymm miejscu po zmianie ukladow wsp. trzeba bylo napisac odpowiedni ciag cykli 17 i 7 wywolujacych i kasujacych uklad wspol.oraz punktow zerowych,nie zapisaalem sobie tej odpowiedniej kolejnosci.mozesz mi powiedziec jak u ciebie to dziala.
dzieki za pomoc:)


rollaz
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 19
Posty: 442
Rejestracja: 26 lis 2006, 09:47
Lokalizacja: Kuznia Raciborska

#49

Post napisał: rollaz » 24 wrz 2007, 07:35

kolego easy2002 umiesc caly program prosze
Fachman

Awatar użytkownika

easy2002
Moderator
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 19
Posty: 1998
Rejestracja: 27 lis 2004, 19:40
Lokalizacja: Gniew
Kontakt:

#50

Post napisał: easy2002 » 24 wrz 2007, 19:00

Witam
ale ja testuję na tej części
i tu są problemy
... z poważaniem ....pozdrawiam --- Doceń to że, poświęciłem Ci trochę czasu !!! wciśnij "pomógł" to nic nie kosztuje ;-) ---
Moja pierwsza i druga maszynka a trzecia w fazie testu http://www.cnc.info.pl/viewtopic.php?t=2281

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Heidenhain”