Hírek:

Fontos tudnivalók a migrációval kapcsolatban, Kérlek nézd meg a Régi fórumról új fórumra való költözés

Main Menu

UCCNC vezérlő program

Indította gaben, 2024 április 09, 16:54

Előző téma - Következő téma

2dbfy8y

Ha jól értem mit szeretnél, pl
#31=-200
g0 x0 y0 s1000 m3
g43 h1 z3 g1 f3000
g83 r3 z-5 f20 q3
g91 x#31
x#31
x#31
g80 g90
g0 z200
m30

De jó lenne ha pl uccnc is ismerné a K ismétlés számát
Ha pl a g91 x#31 K4  et adnál meg akkor 4szer ismételné meg a x#31 értéket. Ipari gépen így megy.

PSoft

Semmi ördöngösség!
Ha lehúzod a matricát, faxán látni...hova mennek a drótok![#nevetes1]


svejk

[#eljen]

No, mire kezdtem volna belemerülni ebbe a paraméteres dologba el is akadtam megint.

Létezhet, hogy nem ismer IF, Goto , egyéb ilyen alaputasításokat?

dezsoe

Persze, hogy létezhet. Amennyire emlékszem, csak a LinuxCNC-ben találkoztam ilyenekkel. Az eredeti g-kód még változókat sem kezel. Ha valami ilyesmit kell csinálnod, akkor makrózni kell.

szf

Nem emlékszel?
Elküldted magadnak emailben!
Kedves Pistám.......
[#vigyor0]

svejk

No de mikor, milyen címszóval, melyik címemre? [#circling]

svejk

A francba...

Látszólag egyszerű raszterfúrést szerettem volna könnyen paraméterezhetővé tenni.
- az első oszlop X koordinátája
- az oszlopok távolsága
- az oszlopok száma
- az első sor Y koordinátája
és itt kezdődik a bonyodalom a többi sor Y koordinátája nem sorozatot képvisel, hanem egyenként kell megadni, ráadásul a sorok száma is változik.
No itt elvéreztem, nem tudom hogy kellene "észrevenni", hogy a következő Y koordináta paraméter nincs kitöltve vagy 0 értékű és készen van a fúrási művelet.

dezsoe

Két makróval megoldható. Tételezzük fel, hogy az Y koordináták a #100-tól kezdődően vannak letárolva, az utolsó után 0 van, ahogy írtad. Az első makró átnyálazza a változókat 100-tól és megszámolja, hogy hányszor kell futni. Ezt visszaadja egy változóban (#2), amit a g-kódban a szubrutin (alprogram) hívás L paraméterének fogod megadni. Beállítod a #1-et 100-ra. A szubrutin elején meghívod a másik makrót, ami #3-ba visszaadja a #1 által hivatkozott változó értékét, majd növeli #1-et eggyel. Valahogy így:

...
M20000 (Az első makród)
#1=100
M98 P1 L#2
...
M30

O1
M20001 (A második makró)
G0 Y#3
...
M99

svejk

Ezt eddig értem, csak azt nem tudom, hogy fognak a makrok kinézni.
Hiába tudom a logikai feltételeket ledeklarálni, ha nem ismerem a makrok utasításait és a szintaktikát.
A múltkor is egy nyamvadt két soros makrot is egy napig tartott megírni, de azt is csak a segítségetekkel. :)

No meg ugye ekkor már nem csak egy G-kód az egész, hanem elhagyhatatlan része a makro, amit ugye máshol tárol a gép mint a G-kódot.

svejk

No és persze a fúrás sorrendje sem mindegy, az üresjáratok miatt.
X irányba kell haladni kígyóvonalban, mert az oszlopok száma 1-15-ig terjedhet 450 mm összélességben míg a sorok száma 2-20-ig de 3000 mm összmagasságban.

dezsoe

OK. Az oszlopok távolságát akkor tedd a #4-be, ezzel fogsz relatív mozgást végezni.

Ezután az első makró:

int i = 0;
int p = 100;
while (exec.ivars[p+i] != 0) ++i;
exec.ivars[2] = i;

A második makró:

exec.ivars[3] = exec.ivars[Convert.ToInt32(exec.ivars[1])];
exec.ivars[1] = exec.ivars[1] + 1.0;
exec.ivars[4] = exec.ivars[4] * -1.0;

Majd arra figyelj, hogy a második makró rögtön megváltoztatja a #4 előjelét, tehát ellentétes előjellel kell a kezdőértékét megadnod.

dezsoe

Az első makró rövidebben:

int i = 0;
while (exec.ivars[100 + i] != 0) ++i;
exec.ivars[2] = i;

A p-re semmi szükség nem volt. :)

svejk

No ezt már csak holnap délután kezdem megemészteni....

Permanens KÖSZÖNÖM! [#worship]

dezsoe

Nincs mit, én is alvó módba kapcsolok... :)

svejk

Egy számomra először érdekesnek tűnő jelenség, hogy a paraméteres G-kódnál ha zárójelezek egy sort a paramétermegadásnál, vagy csak egyszerűen nem adok értéket valamelyiknek akkor a kód újratöltése után is megtalálja az értéket és tovább számol vele.

Csak akkor felejti el, ha újraindítom az UCCNC-t.

Tehát valami tárban ott marad. azt nem tudom, hogy ez hiba-e.