Jak uzyc funkcji "SKOK' z Q paramatrow

Dyskusje na temat systemu Heidenhaina

Autor tematu
majo5555
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 2
Posty: 92
Rejestracja: 26 paź 2015, 18:01
Lokalizacja: Kielce

Jak uzyc funkcji "SKOK' z Q paramatrow

#1

Post napisał: majo5555 » 05 paź 2016, 13:20

Witam!!!

HH620

Pisze program i stoje w martwym punkcie.Problem polega na tym, ze mam w nim od groma LBL (finalnie okolo 400)a chce pod jednym Q opisac ich numery i skakac do nich.Kolejnosc musi byc zgodna z wpisem!!!Przykladowo:
Q1=1+5+23+65+70
Teraz jak opisac to maszynie aby skoczyla do LBL 1, pozniej LBL5 itd ???. Jest w ogole taka mozliwosc???Moze da sie to zrobic w inny sposob???

Prosze o pomoc.
Pozdrawiam!!!!



Tagi:


Pneumokok
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 1
Posty: 948
Rejestracja: 28 gru 2009, 15:56
Lokalizacja: Miasto nieudaczników

#2

Post napisał: Pneumokok » 05 paź 2016, 17:47

Dżem dobry,
jest to możliwe manipulując Qparametrami typu string

Kod jest poniżej
lninijki zaczunające się od znaku ' są to komentarze aby Kolega zrozumiał co sie dzieje w danej linijce

funkcje DECLARE STRING, SUBSTR znajdziemy klikając na steorwniku przycisk SPEC FCT, pozniej softkeye: funkcje programowe - string funkcje

reszte funkcji znajdziemy klikając przycisk Q na sterowniku, pozniej softeye FORMULA i przewijając pasek z softkeyami strzałkami w prawo i lewo

POCZĄTEK KODU:

'deklaracja stringu czyli numerów podpogramów któe chcesz wywoływać po kolei

DECLARE STRING QS1 = "1+5+7+4+10+133+67"

'deklaracja stringu w którym znajduje się znak "+" (plus) bo on oddziela numery LBL'ów

DECLARE STRING QS2 = "+"

BEGIN:

'TNC przeszukuje string QS1 w poszukiwaniu tekstu ze stringu QS2 (czyli plusa) i wypluwa na jakiej pozycji w tekście znajduje się nasz plus

Q50 = INSTR ( SRC_QS1 SEA_QS2 BEG0)

'przycinanie oryginalnego stringa, tak aby został TYLKO numer LBL

QS3 = SUBSTR ( SRC_QS1 BEG0 LENQ50)

'zamiana stringa na liczbę

Q51 = TONUMB (SRC_QS3)

'przycinanie oryginalnego stringa tak aby pozbyć się numeru LBL, który już był wykorzystany
QS1 = SUBSTR ( SRC_QS1 BEGQ50+1)

'wywołanie numeru LBL, który znajduje się w parametrze Q51

CALL LBLQ51

i tu powinien pojawić się powrót do początku programu, tylko nie jestem pewien jak to zrobić

GOTO BEGIN
Jeżeli pomogłem kliknij pomógł :)


capt.d.
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 412
Rejestracja: 25 lut 2016, 19:23
Lokalizacja: Tarnowskie Góry

#3

Post napisał: capt.d. » 05 paź 2016, 19:52

Aloha

A już myślałem, że tylko ja jestem na tyle je***ty by używać takich "udziwnień" jak QS :)
Pneumokok pisze:i tu powinien pojawić się powrót do początku programu, tylko nie jestem pewien jak to zrobić

GOTO BEGIN
W jakim celu? Resetowanie wartości QS można wpisać do LBL RESET i wywoływać go po wybraniu nowego narzędzia. Skok bezwarunkowy można wykonać za pomocą FN9: IF +0 EQU +0 GOTO LBL "GDZIES_TAM". Tylko należy pamiętać, że to jest skok, nie wywołanie.

EDIT:
Żeby było ładnie, schludnie i wygodnie zrobiłbym to tak:

Kod: Zaznacz cały

LBL "DO-IT"
 deklaracja łańcucha z nr labeli
 LBL "DO-IT-REP
 iteracja po łańcuchu i wyciąganie nr labela	
 CALL LBL Q24
 CALL LBL "DO-IT-REP" REP LEN(łańcuch)-1
LBL 0 
i wywoływał "DO-IT" po każdym narzędziu.

Pozdrawiam
Ostatnio zmieniony 06 paź 2016, 14:49 przez capt.d., łącznie zmieniany 3 razy.


Autor tematu
majo5555
Znawca tematu (min. 80)
Znawca tematu (min. 80)
Posty w temacie: 2
Posty: 92
Rejestracja: 26 paź 2015, 18:01
Lokalizacja: Kielce

#4

Post napisał: majo5555 » 06 paź 2016, 08:26

Dziekuje za podpowiedzi!!!Na UBF 2200 z HH415F jeszcze tych formul nie bylo :-) (maszyna kupina nowa kupe lat temu do pomiaru zastawek serca Religi ;-) ).Od niedawna na 620 robie i caly czas cos nowego ;-).Plusy leca i dziekuje bardzo.Przetestuje w chwili wolnego czasu i efekt koncowy wrzuce na forum.
Pozdrawiam!!!!!

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Heidenhain”