HEIDENHAIN iTNC 530

diskuze tykajici se ridicich systemu a software komercnich CNC stroju
Odpovědět
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

14. 6. 2018, 12:15

Zdar hošani!

může mi prosím někdo objasnit funkci LBL 0 ? Řádek 16 po vyhodnocení skočí na řádek 23 a program následně po provedení řádku 25 (LBL 0) pokračuje vesele na řádek 26 nikoliv zpět na řádek 17, jak bych očekával a program končí. Proč tomu tak je?
Použití LBL až za M30 je nutné (pokud neni splněna podmínka, pak nechci LBL provádět). Díky borci! :idea:

Kód: Vybrat vše

0  BEGIN PGM AAA MM 
1  BLK FORM 0.1 Z  X+35.9999  Y-61  Z+20
2  BLK FORM 0.2  X+2486  Y+1329  Z+35
3  ;
4  PLANE RESET STAY
5  CYCL DEF 7.0 NULOVY BOD
6  CYCL DEF 7.1  X+7.5
7  CYCL DEF 7.2  Y+17.5
8  CYCL DEF 7.3  Z+0
9  L  Z+0 R0 FMAX M91
10 L  B+0  C+0 FMAX
11 ;
12 Q50 = 0
13 Q51 = 10
14 ;
15 Q60 = Q50 ;MAX
16 FN 11: IF +Q51 GT +Q60 GOTO LBL "MAX2"
17 FN 16: F-PRINT TNC:\MERENI_Z_FORMAT.A / SCREEN:
18 FN 14: ERROR= 1010
19 L  Z+0 R0 FMAX M91
20 L  B+0  C+0 FMAX
21 M30
22 ;MAX
23 LBL "MAX2"
24 Q60 = Q51
25 LBL 0
26 L IX+100 FMAX
27 END PGM AAA MM 
testone
Sponzor fora
Příspěvky: 7174
Registrován: 3. 12. 2010, 5:56
Bydliště: Slaný

14. 6. 2018, 2:07

zkus místo M30 na ř. 21 příkaz M2
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

14. 6. 2018, 2:45

testone píše:zkus místo M30 na ř. 21 příkaz M2
Nezabralo. Je možné, že GOTO prostě neumožňuje návrat? CALL LBL 10 a LBL 0 mi funguje správně.
Uživatelský avatar
jcerki
Příspěvky: 109
Registrován: 24. 10. 2008, 12:47
Bydliště: Bratislava , Slovakia , jcerki@gmail.com
Kontaktovat uživatele:

14. 6. 2018, 6:10

Ak chces aby ti LBL "skakal" v PGM , M30 (M2)musi byt az za danym LBL ... ty si vlastne preskocil M30 (M2), posunul si sa v X-e o 100mm a ukoncil si PGM bez M30 (M2) ...Pusti si to po bloku a uvidis ako to "skace" ...
V opacnom pripade musis PGM vytvorit tak , aby to pri splneni resp. nesplneni podmienky "skakalo" spravne ...
V tvojom PGM bude podmienka vzdy splnena ...

Pozn. M30 a M2 su identicke funkcie...
Uživatelský avatar
jcerki
Příspěvky: 109
Registrován: 24. 10. 2008, 12:47
Bydliště: Bratislava , Slovakia , jcerki@gmail.com
Kontaktovat uživatele:

14. 6. 2018, 6:43

Tolerance prekrocena
Tolerance prekrocena
Pozor, pri takto definovanom ERROR-e ti stroj zastavi na danej vete (118) ... PGM sa nedokonci ...
Naposledy upravil(a) jcerki dne 14. 6. 2018, 7:04, celkem upraveno 2 x.
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

14. 6. 2018, 6:56

Diky moc za reakce. Po bloku jsem to zkousel - podminku to vyhodnoti podle ocekavani, ale LBL 0 se nevrati na radek 17 jak jsem ocekaval. Pouziti LBL za M30 si myslim ze je ok, pokud existuje predpoklad, ze LBL provest nechci, jen pokud bude splnena podminka. Musim to zkratka uchopit nejak jinak a vymyslet jine skoky :D Ano, na obrazku to vypad tak jak potrebuju :)
Uživatelský avatar
jcerki
Příspěvky: 109
Registrován: 24. 10. 2008, 12:47
Bydliště: Bratislava , Slovakia , jcerki@gmail.com
Kontaktovat uživatele:

14. 6. 2018, 7:05

Dostal si moj mail ?
Uživatelský avatar
jcerki
Příspěvky: 109
Registrován: 24. 10. 2008, 12:47
Bydliště: Bratislava , Slovakia , jcerki@gmail.com
Kontaktovat uživatele:

14. 6. 2018, 9:55

Este som to trochu vylepsil :-)
Tolerance prekrocena.png
doncarlos
Příspěvky: 760
Registrován: 9. 1. 2008, 9:49

15. 6. 2018, 4:53

Koukám, že žádná rada nejde na podstatu věci, umístění před nebo za M30 s tím niiak nesouvisí,
LBL 0 je prostě návratová instrukce pro ukončení podprogramu vyvolaného příkazem - pouze a jedině - CALL LBL,
interně v Heidnu při použití CALL LBL dojde k uložení adresy aktuálního řádku na tzv stack - zásobník, pak skok na podprogram,
ten se provádí až narazí na LBL 0, tehdy si přečte ze stacku návratovou adresu a přenese chod programu na tuto + 1,
pokud program jen tak narazí na LBL 0, tak na stacku nic není a program normálně pokračuje. Tento mechanismus
řeší i vnoření podprogramů, kdy se z podprogramu volá další podprogram. Celá interní realizace stacku je složitější,
ale pro vysvětlení to určitě stačí
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

15. 6. 2018, 9:06

Díky, takhle jsem to chtěl slyšet :) Nakonec jsem to dal nějak dohromady - určitě to jde elegantnějším způsobem. :idea:
Přílohy
PHOTO-2018-06-15-07-36-45.jpg
doncarlos
Příspěvky: 760
Registrován: 9. 1. 2008, 9:49

15. 6. 2018, 12:37

Díky, takhle jsem to chtěl slyšet :) Nakonec jsem to dal nějak dohromady - určitě to jde elegantnějším způsobem.
No z výpisu vidím, že vše marno, nepochopil jsi vůbec nic.
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

15. 6. 2018, 12:57

To si nemyslím, chápu to správně. Jen je zkrátka problém v tom, že IF a LBL jsem použil poprvé v životě - nemám přesnou představu o struktuře těchto cyklů v PGM, to je vše.

Edit: uznavam - pouziti LBL 0 je blbost, ale zaroven je to fuk.
Uživatelský avatar
OompaLoompa
Příspěvky: 459
Registrován: 28. 6. 2017, 1:45
Bydliště: Západný Slovakistan

15. 6. 2018, 3:44

LBL 0 ti len označuje koniec tzv. "sub-rutiny"
ak chceš, aby ti to po "LBL 0" skákalo späť, musíš použiť CALL :!: namiesto GOTO

a myslím že podľa štandardu by mali byť všetky sub-rutiny/bloky v programe zadefinované až po M30, čiže minimálne z tohto pohľadu to jedno asi nie je..
 
itbart
Příspěvky: 9
Registrován: 11. 6. 2018, 1:12

15. 6. 2018, 6:09

Souhlasim. Ale, IF CALL LBL zapsat nelze.
Uživatelský avatar
OompaLoompa
Příspěvky: 459
Registrován: 28. 6. 2017, 1:45
Bydliště: Západný Slovakistan

15. 6. 2018, 8:54

itbart píše:Souhlasim. Ale, IF CALL LBL zapsat nelze.
No veď OK, a čo tak namiesto toho tú podmienku znegovať, a použiť IF → GOTO na preskočenie CALL LBL? :)

Teda namiesto:

Kód: Vybrat vše

15 Q60 = Q50 ;MAX
16 FN 11: IF +Q51 GT +Q60 GOTO LBL "MAX2"
17 FN 16: F-PRINT TNC:\MERENI_Z_FORMAT.A / SCREEN:
to poňať dáko takto:

Kód: Vybrat vše

15 Q60 = Q50 ;MAX
16 FN 11: IF +Q51 LT +Q60 GOTO LBL "NOMAX"
17 FN 12: IF +Q51 EQU +Q60 GOTO LBL "NOMAX"
18 CALL LBL "MAX2"
19 LBL "NOMAX"
20 FN 16: F-PRINT TNC:\MERENI_Z_FORMAT.A / SCREEN:
Tie čísielka riadkov, FN, atď. si už uprav podla potreby..
 
Odpovědět

Zpět na „Ridici systemy“