HobbyCNC fórum
  v0.9 alpha

Fórum betekintő Fórum címe: http://forum.hobbycnc.hu



UCCNC vezérlő program

xxxxxxxx


Időrend:
Oldal 2 / 87 Ugrás ide:
|◄ Első  ◄ Előző  1 2  3   4   5   6     Következő ►  Utolsó ►|

Fórum főoldal  |  A lap aljára

exup | 309    2017-08-30 22:37:05 [4276]

Nyilván lehetne, de hát nem az

Előzmény: PSoft, 2017-08-30 22:30:56 [4275]


PSoft | 9376    2017-08-30 22:30:56 [4275]

A Mach plugin is ugyanígy csinálja. Ilyen alapon akár, az is lehetne a..." legjobb ilyen progi".

Előzmény: exup, 2017-08-30 22:03:24 [4274]


exup | 309    2017-08-30 22:03:24 [4274]

Látom neked nincs uccnc-d. A képhez nem csinál gkódot, saját pluginként csak a képet kell importálni...égeti magától. Ettől is a legjobb ilyen progi.

Előzmény: frob, 2017-08-30 20:50:27 [4272]


Amatőr | 2024    2017-08-30 20:52:09 [4273]

Igen, én is így használom mert más megoldást nem tudok. Azért jó volna ha egy méret változtatás után nem kéne a koordinátákkal vacakolni.

Előzmény: exup, 2017-08-30 19:54:40 [4269]


frob | 901    2017-08-30 20:50:27 [4272]

már hogy ne lenne, a g kódhoz hozzáfűzheted a kivágandó terület g kódját, talán leginkább azzal a hasonlattal tudnék élni, hogy az aspire ben ha olyan megmunkálásokat végzel amelyek ugyan azon szerszámmal vannak akkor megmondhatod neki hogy egy fájlba tegye.. nem tudom mivel generálod a kódot, de gondolom a kép is végül egy G-kódként végzi, akkor a programból külön rajzolsz egy keretet és max a teljesítményt átírod benne.. vagy valamit nagyon félre értettem, de akkor bocs

Előzmény: exup, 2017-08-30 20:27:46 [4271]

exup | 309    2017-08-30 20:27:46 [4271]

A kép gravírhoz nincs mit fűzzön. Az egyik kép, másik g kód.

Előzmény: frob, 2017-08-30 20:11:29 [4270]


frob | 901    2017-08-30 20:11:29 [4270]

Esetleg eleve összefűzve a kettő...


exup | 309    2017-08-30 19:54:40 [4269]

Ha úgy is megállna és kérdezne, akkor ezzel az erővel behívhatsz utána vágáshoz gkódot. Én is ezt teszem.

Előzmény: Amatőr, 2017-08-30 19:49:52 [4268]


Amatőr | 2024    2017-08-30 19:49:52 [4268]

Csak egy kérdés az UCCNC Laser-pluginnel kapcsolatban: én szinte csak ezt használom, kép gravírozáshoz vettem meg. Mennyire volna bonyolult dolog megoldani hogy amikor kész a kép akkor vágja körbe a lézer? Mondjuk mikor végzett megállna megkérdezni az előtolást aztán full teljesítménnyel a már kiszámolt méretek alapján rajzolna egy téglalapot. Azt már csak nagyon óvatosan említem meg hogy az ovális vágás igazi csemege lenne.


dezsoe | 489    2017-08-21 22:08:25 [4267]

Csak egy gondolat, világmegváltás nélkül. Ha nekem fix bemérőm lenne (akár szerszám cserélő nélkül is), akkor biztos, hogy a méréseket gépi koordinátában végezném, mert onnantól mindegy, hogy melyik munka koordináta rendszert használod éppen. Pláne, hogy egy szerszámcserélős gép elég komolynak tűnik ahhoz, hogy több munkadarab is be legyen rögzítve: innen már csak G54 és társai kellenek, hogy ráállj a következőre. Ha elég pontos a homing és a befogás, akkor akár meg is jegyezheti a mérések eredményét, hogy csak a szerszámtár feltöltésekor kelljen mérni.

Előzmény: svejk, 2017-08-21 19:57:48 [4266]


svejk | 24442    2017-08-21 19:57:48 [4266]

Olvasgattam, kérdezősködtem, de nekem valahogy nem tetszenek az iparban elterjedt szerszámbemérési metódusok. (volt amelyiket meg sem értettem ) Egy hobby gépnél nem gond a ciklusidő, ezért én inkább azt az utat választanám, hogy minden egyes szerszámcsere után menjen el és mérje be a szerszámot, egy célszerűen a szerszámtár mellett levő fix bemérőponton, írja be a szerszámkorrekciós tárba az értéket, majd ezzel a korrekcióval dolgozzon. (vagy akár nem is kell táblázatba írni, hiszen mindig mérnék) Így ki lenne küszöbölve a szerszám visszafogási pontatlansága is. (nem kúpos befogók vannak, hanem csak a szerszám hengeres szárát fogja meg a patron) No de mihez legyen a viszonyítás? Az iparban sokszor a főorsó homloka és az asztal közti távolság az "etalon". Én eddig talán még mindig csak olyan munkadarabot martam, ahol a Z0 a munkadarab felső síkja, így nekem az lenne a célszerű és érthető, hogy felvenném mondjuk a T1-es szerszámmal a munkadarab síkját, majd a többi szerszámot ehhez a T1-hez korrekciózná a többi szerszám Z mozgását Ha valakinek van pár perce, próbálja már szemellenzős gondolkodásomat helyes útra terelni!

Előzmény: svejk, 2017-08-20 22:50:13 [4265]


svejk | 24442    2017-08-20 22:50:13 [4265]

Készített-e már valaki fix helyzetű szerszámbemérőhöz olyan makrót, ami ténylegesen ki is tölti a TOOLS fülön a Z hosszkorrekciós táblázatot? A szerszámcserélő M6 minta makro már tartalmazza a G43 H(aktuális szerszám) parancsot, tehát már valaki foglakozott ezzel a résszel is.


svejk | 24442    2017-08-20 21:22:23 [4264]

Okszi, kafa minden, végül is elég volt a megfelelő zárójelezés, nem kellett a .ToString(). Megcsináltam mindent, a kis Z mozgástartomány miatt a szerszámokat is kerülgetni kellett és a bekapcsoláskor is tudja melyik szerszám van bent. Így most nem is kellett beleírni semmit az M99998 és M99999-be. Egy kis ártatlannak tűnő makrot kellett csak pluszba írni. Egyelőre G01-el mozgok, majd ha a gyakorlatban is megy akkor felgyorsítom. Köszönöm a segítségeket ! Jöhet a szerszámbemérés! (no az még szép falat lesz, mert azt sem tudom, hogy mi a helyes metódus, hogy is van az ipari gépeken)

Előzmény: dezsoe, 2017-08-20 19:27:41 [4262]


svejk | 24442    2017-08-20 19:33:33 [4263]

Köszi, nem bírtam volna kitalálni soha így ismeretlenül!

Előzmény: dezsoe, 2017-08-20 19:27:41 [4262]


dezsoe | 489    2017-08-20 19:27:41 [4262]

Elvileg a C# alakítgatja a típusokat, de jobb, ha te mondod neki, hogy hogyan csinálja. exec.Code("G00 G53 Z" + (Ztoolrelease + 10.0).ToString());

Előzmény: svejk, 2017-08-20 17:44:29 [4260]

svejk | 24442    2017-08-20 17:51:29 [4261]

Egyelőre marad a Home gomb... A HomeAll gombhoz rendeltem a M20060-as makrót majd a makróban hívom meg a 113-es HomeAll buttonnumbert. Így indulás után amint rákattintok rögtön be is írja az utoljára elmentett szerszámot, és felveszik a tengelyek a referenciát, mely egyébként is kell a szerszámváltás engedélyezéséhez.

Előzmény: svejk, 2017-08-20 15:24:32 [4259]


svejk | 24442    2017-08-20 17:44:29 [4260]

Hogy a pi..a kell szintaktikailag helyesen megírni az alábbi sort, hogy a Z szán "Ztoolrelease", plusz 10 értékre menjen? exec.Code("G00 G53 Z"+ Ztoolrelease);


svejk | 24442    2017-08-20 15:24:32 [4259]

Oké, a kiolvasási és átírási művelet maga ennyi: int LastSelectedTool = Convert.ToInt32(exec.Readkey("SvejkAdatai", "LastSelectedTool", "0"); exec.Setcurrenttool(LastSelectedTool); Ezt a két sort most egy hotkeyre és egy M20060-a makroba írva az UCCNC indulása után a billentyűt lenyomva szépen beírja az utoljára beváltott szerszám számát és innentől jól is számolja a dolgokat. De most meg azt kell kitalálni hogy mikor és hogyan fusson le egyszer ez a makro. A HomeAll gomb mégse jó, mert lehet valaki egyesével veszi fel a referenciákat.

Előzmény: svejk, 2017-08-20 14:09:24 [4258]


svejk | 24442    2017-08-20 14:09:24 [4258]

No még egyszer elindultam az elejéről és odáig jutottam, hogy ha az: int Currenttool = exec.Getcurrenttool(); sort kicserélem az általad ajánlott sorokra akkor sajnos engedi a szerszámráváltást... No de ez most nem is érdekes, mert én továbbra is kötöm az ebet a karóhoz, miszerint csak a TOOL mező értékét figyeli szerszámcserekor. Ha lefuttatom pl. az exec.Setcurrenttool(5); parancsot, akkor be is írja az 5-ös szerszámot és ezentúl úgy is számol, hogy az van bent. Tehát ha a szerszámcsere végén a *.pro fájlba elmentett szerszám számát az UCCNC első elindításakor visszaírnánk az exec.Setcurrentool paranccsal -pl a Home gomb megnyomásakor- akkor nem tévedne el sosem. (a Home gombot úgy is meg kell nyomni) Csak ugye azt nem tudom, hogy kell ezt a műveletet végrehajtani.

Előzmény: dezsoe, 2017-08-18 09:56:10 [4239]


svejk | 24442    2017-08-19 20:14:36 [4257]

eredeti M5 = eredeti M6

Előzmény: svejk, 2017-08-19 20:03:14 [4256]


svejk | 24442    2017-08-19 20:03:14 [4256]

Egyébként megcsináltam amit ajánlottál a #4239-ben és működik de valamit elronthattam, mert ha kétszer egymás után kiadom mondjuk az M6T6-ot akkor bizony rávált még egyszer a 6-osra. Az eredeti M5 makronál nem engedte ezt. Gondolom ez a sor felelős érte: if(Newtool == Currenttool) // Same tool was selected, so do nothing, stop here... return; Benne van minkét makroban de mégis...


svejk | 24442    2017-08-19 19:58:42 [4255]

No nézzük ezt a másik, szerszámbeolvasási problémát az induláskor. Lehet elbeszélünk egymás mellett. Ha az M6 makro végén ott van a: exec.Writekey("SvejkAdatai", "LastSelectedTool", exec.Getcurrenttool().ToString()); Akkor minden szerszámcsere alkalmával kiírja a file-ba, tehát az UCCN induláskor biztosan az a szerszám van a főorsóban. "..az M99998-ból nem hajtja végre a Setcurrenttool-t, mivel a reset még aktív.." No ez tényleg probléma.... Talán kellene egy másik makro ami a reset inaktiválásakor lefutna és az előzőleg fájlba elmentett szerszámértékét ekkor már be tudná írni a szerszám eredeti mezőjébe? Engem valahogy zavar, hogy bekapcsoláskor nem az épp a főorsóban levő szerszám számát mutatja az a mező.

Előzmény: dezsoe, 2017-08-18 09:56:10 [4239]


svejk | 24442    2017-08-19 19:27:21 [4254]

No hát ez megint egyszerűbb mint képzeltem, köszi! (igen, most már biztos megcsináljuk az említett hegesztő gépet)

Előzmény: dezsoe, 2017-08-19 18:31:36 [4253]


dezsoe | 489    2017-08-19 18:31:36 [4253]

Ja, hogy ez egy konkrét célgép lenne, aminek átszabod a képernyőjét. Értem. A mezők g-kódba átvitelét két módszerrel is elvégezheted. (Illetve a módszer ugyanaz, csak két indulási módszer jutott eszembe. Az egyik: a g-kód elején hívsz egy makrót. A másik: a start gombot bütykölöd meg, hogy előbb az említett makró fusson és csak utána nyomódjon meg a start gomb.) Naszóvalakkor: ha az adatokat a képernyő mezőkből változókba akarod pakolni, akkor ennyi a dolgod (az emlegetett makróban, minden mezővel): exec.ivars[<#nnn száma>] = AS3.Getfielddouble(<képernyő mező száma>; És kész.

Előzmény: svejk, 2017-08-19 18:14:56 [4252]


svejk | 24442    2017-08-19 18:14:56 [4252]

Dehogynem, segítenek a tudatlan felhasználóknak. Új alap képernyő majdnem biztos hogy kell, az talán menni fog. újabb verziókra nem kell cserélgetni a mostani felállás azon részei amiket használok stabilnak tűnnek. Úgy 10-15 változó lesz a munkadarab kódjában. Csak egy példa kellene hogy is nézne ki, ha a képernyő adott mező értéke lenne egy váltózó a G-kódban.

Előzmény: dezsoe, 2017-08-19 17:51:38 [4251]


dezsoe | 489    2017-08-19 17:51:38 [4251]

Az UCCNC fejlesztőinek semmi dolga azzal, amit írtál. Vagy nekiállsz képernyőt szerkeszteni (én biztos nem tenném), vagy egy okosan megírt makróval beolvasod a szükséges adatokat. Kb. mennyi paraméterről van szó? (A Mach varázslói speciális állatfajták, de működésüket tekintve inkább a makrókhoz hasonlítanám őket, hiszen a lényeget makró kódok végzik, csak kicsit keresztezték a makrókat a képernyőkkel is.)

Előzmény: svejk, 2017-08-19 17:23:44 [4249]


dezsoe | 489    2017-08-19 17:46:24 [4250]

A ToolX[]-ToolY[] tömbök a szerszámok tárolási koordinátáit rögzítik. Ennek a tömbnek akkorának kell lenni, hogy az összes - jelen esetben 13 - szerszám beleférjen.

Előzmény: svejk, 2017-08-19 17:03:31 [4248]


svejk | 24442    2017-08-19 17:23:44 [4249]

Közben ugrálnak a gondolataim, újabb ötletem támadt. Ez a bizonyos gép mint írtam tanításos módszerrel lesz használva, de egyre valószínűbb hogy elég lenne a parametrikus programozás is. Mivel az UCCNC progi és a fejlesztői nagyon ügyesek és rugalmasak, -dicséret bezárva - a következőt találtam ki: Az megoldható lenne, hogy készítenék egy új fület ahol táblázatszerűen kitölthetőek lennének a parametrikus programozás változói, majd a parametrikus kód futtatásakor ebben a táblázatba levő adatokat olvasná be a program. Nagy előnye, hogy átlátható lenne, illetve a felhasználó csak a változókhoz férne hozzá, maga a teljes G kódba nem tudna véletlenül sem belepiszkálni. (gondolom a Mach3 varázslói is így működnek valahogy)


svejk | 24442    2017-08-19 17:03:31 [4248]

Okszi a T0 része működik kafán, sőt át is írtam 12 szerszámhelyesre. (a "double[] ToolX = new double[13]; double[] ToolY = new double[13];" sorok mit is csinálnak? mert vol ár riadalom meg vagy hat sornyi hibaüzenett amíg nem írtam át 13-ra )

Előzmény: dezsoe, 2017-08-18 09:56:10 [4239]


frob | 901    2017-08-19 13:15:05 [4247]

Nekem van 3 helyen már mint biztonsági mentés, de az ismerősök közül egynek sincs ... tehát általános az hogy nincs... persze a jelen lévők mindig kivételek Mach 3 hoz ragaszkodás kacifántossá teszi a dolgot, így már értem hogy miért lett így elkövetve a dolog...

Előzmény: dezsoe, 2017-08-19 12:55:01 [4245]

Tibcsi | 155    2017-08-19 13:10:59 [4246]

Ok, köszönöm a válaszokat.

Előzmény: dezsoe, 2017-08-19 12:49:38 [4244]


dezsoe | 489    2017-08-19 12:55:01 [4245]

Nem így van. A hardvert önmagában tudod használni akár a Mach-hal is. Ha azzal használod, akkor csak az eszközt kell megvenned, a Mach plugin ingyen letölthető. Ha UCCNC-vel is akarod használni, akkor az bizony nincs ingyen. Mivel a licenszt a gyáriszám alapján kapod, ha elszáll a vinyód, akkor kérsz másikat, biztos fogsz kapni. Na, de miért nincs az összes többi fontos file-lal együtt biztonsági mentésed?

Előzmény: frob, 2017-08-19 12:48:53 [4243]


dezsoe | 489    2017-08-19 12:49:38 [4244]

Nem tudod. A kulcs az eszközhöz kapcsolódik, azt a kulcs birtokában akárhány gépen tudod használni, de minden eszköznek saját licensz kell.

Előzmény: Tibcsi, 2017-08-19 12:10:16 [4241]


frob | 901    2017-08-19 12:48:53 [4243]

Egyébként mi értelme van a kulcsnak? Az én szememben csak kitolás a vevővel... Hogy miért? Mert ügye a program csak saját hardvereivel megy, tehát ha érzékelné hogy valós a hardver, akkor onnantól minden kerek... De ha pl megrogyik a winyóm akkor vehetek még egy kulcsot, vagy ez hogy van? Meg ez sztem többlet vacakolás gyártónak is.. Tulajdonképen az hardver egyben a hardver kulcs is lehetne simán..

Előzmény: exup, 2017-08-19 12:33:47 [4242]


exup | 309    2017-08-19 12:33:47 [4242]

Nem hiszem, hogy tudod.

Előzmény: Tibcsi, 2017-08-19 12:10:16 [4241]


Tibcsi | 155    2017-08-19 12:10:16 [4241]

Szeretnék vásárolni, egy UC400ETH mozgásvezérlőt, és az lenne a kérdésem, hogy tudom-e használni a meglévő kulccsal, vagy kell egy teljesen új. Jelenleg UC100-om van.


svejk | 24442    2017-08-19 10:37:48 [4240]

Köszi! No még ezt is át kell olvasnom párszor, hogy felfogjam, illetve a gyakorlatban is át kell majd ültetni akkor tudok még majd kérdezni.

Előzmény: dezsoe, 2017-08-18 09:56:10 [4239]


dezsoe | 489    2017-08-18 09:56:10 [4239]

Visszafelé válaszolva: a T0 az a nagykönyv szerint az, amit írsz, tehát üres befogó. A minta M6 nem kezeli az üres befogót: if(Newtool <1 || Newtool >10) // Tool number is out of range, so we need to stop here... return; Aszongya, hogy ha T<1, akkor nem foglalkozik az egésszel. Tehát úgy kell módosítanod, hogy az előzőekben másolt sorban (Newtool <0 || Newtool >10) -re módosítod a feltételt, majd a // Move to new tool position on XY plane sor elé berakod, hogy if (Newtool != 0) { és a file végére pedig } else { exec.Setcurrenttool(Newtool); //Set the current tool -> the new tool MessageBox.Show("Tool change done."; } Ezzel azt éred el, hogy ha 0-ra vált, akkor nem megy el az új pozícióba és nem vesz fel semmit, csak beállítja a 0-s szerszámot és kiírja, hogy kész. A másik problémára pedig annyi, hogy a példa csak felolvassa a mentett adatot, de nem csinál vele semmit. A mező átírása szép, de nem jó. A képernyőn ugyan azt fogod látni, amit beleírtál, de a szerszámcserélő mást fog gondolni, mert a rendszer belül tudja, hogy nem ez az aktuális szerszám. Hogy ne legyen olyan egyszerű, az M99998-ból nem hajtja végre a Setcurrenttool-t, mivel a reset még aktív. Ezt úgy tudod megoldani, hogy vagy használsz egy változót (#nnn) vagy kiraksz egy mezőt a képre és azon keresztül viszed át a felolvasott értéket. Az utóbbi nem fog ütközni semmilyen változókat használó programmal. Akkor a felolvasás (M99998-ban): double LastSelectedTool = Convert.ToDouble(exec.Readkey("SvejkAdatai", "LastSelectedTool", "0.0"); AS3.Additemtolistbeginning("Legutobbi szerszam: " + LastSelectedTool, 2); AS3.Addfield("", "Arial", "left", 12, 0, 0, 1000, 120, "showfieldnb", 0, 96, 21000, 1); // egy eldugott mezo AS3.Setfield(LastSelectedTool, 21000); A felolvasást int-ről double-re változtattam, mert itt mindegy, a mező pedig úgyis double, majd elhelyeztem egy 21000 azonosítójú mezőt (nem szerkeszthetőt) a képernyőn kívül a (0,1000) pozícióba, tehát nem lesz útban, mert nem látszik. Beleírtam a felolvasott szerszámot, így az első M6-nál tudunk vele dolgozni. Az M6 elején a int Currenttool = exec.Getcurrenttool(); sor helyett ez kell: int Currenttool = 0; int Savedtool = AS3.Getfieldint(21000); if (Savedtool == -1) Currenttool = exec.Getcurrenttool(); else { Currenttool = Savedtool; AS3.Setfield(-1.0, 21000); } Így az első M6 futtatáskor az elmentett szerszámot tekinti aktuálisnak, nem azt, amit a képernyőn jelez. Miután felhasználta, jelzi, hogy már volt egy csere, így innentől már a ténylegessel foglalkozik.

Előzmény: svejk, 2017-08-18 08:26:38 [4238]


svejk | 24442    2017-08-18 08:26:38 [4238]

Egy kicsit visszakanyarodhatnánk a szerszámcseréhez? Az eredeti default M6-os makroval kísérletezek. Ahogy ajánlottad az M6 makro végére beírtam a: exec.Writekey("SvejkAdatai", "LastSelectedTool", exec.Getcurrenttool().ToString()); sort, így akár "áramszünetes" kikapcsoláskor is emlékezni fog az utolsó szerszámra. Az M99998 makroba pedig a a másik ajánlott: int LastSelectedTool = Convert.ToInt32(exec.Readkey("SvejkAdatai", "LastSelectedTool", "0"); AS3.Additemtolistbeginning("Legutobbi szerszam: " + LastSelectedTool, 2); sorokat. Működik kafán egy szépséghibával, hogy ugyan az üzenet ablakba kiírja, hogy melyik volt az utolsó szerszám, de a Tool:x értékét nem írja át helyből. Tehát kellene még egy sor az M99998 makroba ami beírja az előzőleg elmentett és kiolvasott szerszám számát induláskor a 897-es mezőbe. Az M6-os makróból puskázva talán: exec.Setcurrenttool....de hogy tovább? Egy másik szerszámváltós kérdés, a T0 szerszám pontosan mit is jelent? Ha kiadom az M6T0-át akkor nem kellene kiraknia az épp aktuális szerszámot a tárba és üresen hagyni az orsót? Sajnos nekem nincs ipari tapasztalatom sem ilyen ügyekben.

Előzmény: dezsoe, 2017-07-20 07:50:55 [4108]


dezsoe | 489    2017-08-16 07:11:26 [4237]

Szerencsére az UCCNC nem épül Mach alapokra, csak - mivel ugyanaz a feladata - igen sok párhuzamot lehet felfedezni. A Mach-ban Visual Basic a makró nyelvezete, UCCNC-ben pedig C#, tehát már a nyelv miatt sem lehet átvinni. A mezők, a LEDek, a gombok, a belső funkciók mind máshogy vannak, úgyhogy még az is kevés, ha csak simán átfordítod a makrót egyik nyelvről a másikra. Az egyetlen megoldás, ha alaposan átnézed, felfogod, hogy mit csinál egy adott makró, majd a másik rendszerben megírod. Mondjuk, ehhez nem árt mindkét rendszert kellően ismerni.

Előzmény: Pál, 2017-08-16 00:49:44 [4235]


citis | 4    2017-08-16 06:23:01 [4236]

Nem tudom meg kell próbálni. Én nem vagyok programozó, talán dezsoe többet tud róla mondani.

Előzmény: Pál, 2017-08-16 00:49:44 [4235]


Pál | 7178    2017-08-16 00:49:44 [4235]

Mivel az UCNC Mach alapokra épül ez a szerszámváltó skript működhet mach alatt is ?

Előzmény: citis, 2017-08-15 23:04:09 [4233]


dezsoe | 489    2017-08-16 00:07:33 [4234]

Szia! Látod, megy ez, csak kísérletezni kell vele!

Előzmény: citis, 2017-08-15 23:04:09 [4233]


citis | 4    2017-08-15 23:04:09 [4233]

Szia dezsoe. Működik a program ahogy leírtad, csak lejjebb kellett beilleszteni, közvetlen a cserélendő szerszám felvétele elé. A helyzet az, hogy próbáltam már így meghatározni, csak nem a port és a pin számát írtam be hanem valamire átneveztem őket úgy mint például a szerszámcsere levegőszelepe: int Chuckopenport = 1; int Chuckopenpin = 16; csak valamiért az a szöveg nem volt jó. Viszont most átírtam a tisztítószelepet erre: int Cleanport = 1; int Cleanpin = 17; és így tökéletesen működik,legalább is szimulációban. Egyébként még változtattam a makrón két dolgot, egyik amit svejk kollégának írtál, hogy folyamatosan fusson a program szerszámcsere után, a másik hogy amikor felvette az új szerszámot akkor visszaállt oda, ahol az előző szerszám befejezte a munkát, majd utána állt rá a saját kezdőpontjára. Ezzel nincs is gond kis munkaterületű gépnél, de egy nagynál szerintem sok felesleges utat megy a gép. Ezért megjegyzésbe tettem azt a sort is amivel visszamenne az előző szerszám végpontjához, így csere után közvetlen megy a saját kezdőpontjához. Ehhez a megoldáshoz viszont nálam átkellet szerkeszteni a G kódban a szerszámcserék utáni első sor Z koordinátáit a makróban beállított biztonsági Z koordinátára, nehogy beleütközzön a szerszámtárba. Egyébként ez az új kód: //Example linear toolchanger code //Tool positions definition int Chuckopenport = 1; int Chuckopenpin = 16; int Cleanport = 1; int Cleanpin = 17; double[] ToolX = new double[11]; double[] ToolY = new double[11]; ToolX[0] = 0; // Tool0 X position ToolY[0] = 0; // Tool0 Y position ToolX[1] = 40; // Tool1 X position ToolY[1] = -10; // Tool1 Y position ToolX[2] = 100; // Tool2 X position ToolY[2] = -10; // Tool2 Y position ToolX[3] = 150; // Tool3 X position ToolY[3] = -10; // Tool3 Y position ToolX[4] = 200; // Tool4 X position ToolY[4] = -10; // Tool4 Y position ToolX[5] = 250; // Tool5 X position ToolY[5] = -10; // Tool5 Y position ToolX[6] = 300; // Tool6 X position ToolY[6] = -10; // Tool6 Y position ToolX[7] = 350; // Tool7 X position ToolY[7] = -10; // Tool7 Y position ToolX[8] = 400; // Tool8 X position ToolY[8] = -10; // Tool8 Y position ToolX[9] = 450; // Tool9 X position ToolY[9] = -10; // Tool9 Y position ToolX[10] = 0; // Tool10 X position ToolY[10] = -10; // Tool10 Y position double SafeZ = 100; double Ztoolrelease = 40; double Ztoolpickup = 39; int Newtool = exec.Getnewtool(); int Currenttool = exec.Getcurrenttool(); if(Newtool == -1) // If new tool number is -1 means a missing T code, so we need to stop here... return; if(Newtool <1 || Newtool >10) // Tool number is out of range, so we need to stop here... return; if(Newtool == Currenttool) // Same tool was selected, so do nothing, stop here... return; if(!exec.GetLED(56)||!exec.GetLED(57)||!exec.GetLED(58)) // If machine was not homed then it is unsafe to move in machine coordinates, stop here... { // MessageBox.Show("The machine was not yet homed, do homeing before executing a tool change!"; exec.Stop(); return; } while(exec.IsMoving()){} // Get current XY machine coordinates to return to this position at the end of the macro double Xoriginalpos = exec.GetXmachpos(); double Yoriginalpos = exec.GetYmachpos(); // Stop spindle if running and Move Z up exec.Stopspin(); exec.Code("G00 G53 Z"+ SafeZ); // Move Z up while(exec.IsMoving()){} if(Currenttool!=0) // No need to drop down tool if current tool number is zero { // Move to old tool position on XY plane exec.Code("G00 G53 X" + ToolX[Currenttool] + " Y" + ToolY[Currenttool]); while(exec.IsMoving()){} // Drop current tool exec.Code("G00 G53 Z"+ Ztoolrelease); // Move Z axis down to tool holder position while(exec.IsMoving()){} exec.Setoutpin(Chuckopenport, Chuckopenpin); // Open the chuck with pneumatic valve exec.Wait(1000); // Wait one 1000msec exec.Code("G00 G53 Z"+ SafeZ); // Move Z up while(exec.IsMoving()){} } // Move to new tool position on XY plane exec.Code("G00 G53 X" + ToolX[Newtool] + " Y" + ToolY[Newtool]); while(exec.IsMoving()){} // Pick new tool exec.Code("G00 G53 Z"+ Ztoolpickup); // Move Z axis down to tool holder position while(exec.IsMoving()){} exec.Setoutpin(Cleanport, Cleanpin); exec.Wait(4000); exec.Clroutpin(Cleanport, Cleanpin); exec.Clroutpin(Chuckopenport, Chuckopenpin); // Close the chuck with pneumatic valve exec.Wait(1000); // Wait one 1000msec exec.Code("G00 G53 Z"+ SafeZ); // Move Z up while(exec.IsMoving()){} // Move back to start point //exec.Code("G00 G53 X" + Xoriginalpos + " Y" + Yoriginalpos); while(exec.IsMoving()){} // Measure new tool will go here.... exec.Code("G43 H"+Newtool); // Load new tool offset exec.Wait(200); while(exec.IsMoving()){} if(!exec.Ismacrostopped()) // If tool change was not interrupted with a stop only then validate new tool number { exec.Setcurrenttool(Newtool); //Set the current tool -> the new tool //MessageBox.Show("Tool change done."; } else { exec.StopWithDeccel(); MessageBox.Show("Tool change was interrupted by user!"; }

Előzmény: dezsoe, 2017-08-15 16:49:26 [4231]


exup | 309    2017-08-15 21:45:46 [4232]

Látod? Csak úgy köpi a megoldást

Előzmény: citis, 2017-08-15 16:07:59 [4230]

dezsoe | 489    2017-08-15 16:49:26 [4231]

Semmi extra nem kell hozzá, csak ennyi: exec.Setoutpin(portszám, lábszám); exec.Wait(várakozás_ms_ban); exec.Clroutpin(portszám, lábszám); Az első bekapcsolja az adott kimenetet, a második vár, amennyit kell, a harmadik kikapcsolja. Ha a szeleped 0-ra aktív, akkor az első és harmadik sort megcseréled. Ha jól értettem, hogy akkor kell fújni, amikor a régi szerszám már nincs bent, az új pedig még nincs, akkor szerintem ide kell a három sor: if(Currenttool!=0) // No need to drop down tool if current tool number is zero { // Move to old tool position on XY plane exec.Code("G00 G53 X" + ToolX[Currenttool] + " Y" + ToolY[Currenttool]); while(exec.IsMoving()){} // Drop current tool exec.Code("G00 G53 Z"+ Ztoolrelease); // Move Z axis down to tool holder position while(exec.IsMoving()){} exec.Setoutpin(Chuckopenport, Chuckopenpin); // Open the chuck with pneumatic valve exec.Wait(1000); // Wait one 1000msec exec.Code("G00 G53 Z"+ SafeZ); // Move Z up while(exec.IsMoving()){} // --- ide kell, szerintem --- }

Előzmény: citis, 2017-08-15 16:07:59 [4230]


citis | 4    2017-08-15 16:07:59 [4230]

Az M6 makróval kapcsolatban volna egy kérdésem. Megoldható-e hogy szerszámcserénél mielőtt felveszi a következő szerszámot egy tisztító fúvatást csináljon? Azért volna lényeges, mert szeretnék egy szerszámcserélős adaptert amit a kínai 65mm-es marókra rá lehet szerelni. Ezen az adapteren kettő pneumatikus csatlakozó van, egyik a tisztításhoz, másik a cseréhez. Ahogy látom a makróban a szerszámcseréhez megvan a pneumatikai programrész, de hogy lehetne egy ilyen pneumatikus tisztítási parancsot beiktatni mielőtt felveszi a az új szerszámot? Gondolom kellene még egy kimeneti pint beállítani valamelyik porton ami vezérelné a tisztítószelepet de sajnos nem vagyok programozó így nem tudom mit kellene beírni a makróba. Előre is köszi.


dezsoe | 489    2017-08-14 21:09:15 [4229]

Az SP3-ból ítélve XP van a gépen. (Anyám borogass... Nem akarok vitát indítani, csak megjegyzem, mint privát véleményt, hogy a múzeumban van a helye, nem produktív gépen.) Majd próbáld ki azzal a .Net Framework-kel, amit le lehet hozzá tölteni, mert azzal működnie kéne. (Az SP3 egyébként nem tartalmaz .Net Framework-ot, azt egy másik lépésben raktad fel.) Kétségtelen tény, hogy mindent elkövettem az UCCNC-vel, hogy előcsaljam a hibajelenséget, de XP-t azért nem telepítettem. Lehet, hogy kéne egy XP-s teszt gépet is csinálnom?

Előzmény: Zozi, 2017-08-14 20:59:14 [4228]


Zozi | 328    2017-08-14 20:59:14 [4228]

Sajnos a géptől most messze vagyok, ha odajutok lemásolom. Újratelepítésen is gondolkoztam, de majd csak akkor ha elkészült a mostani munkadarab (egy kis cnc maró alapja) Lehetséges, hogy a dotnet miatt jön elő ilyen hiba? Az sp3 ban alapól magasabb verzióval volt, és telepítésnél is simán felment, nem az van mellette amit a telepítő mellett lehetne letölteni.

Előzmény: dezsoe, 2017-08-14 11:38:15 [4226]


exup | 309    2017-08-14 11:59:30 [4227]

A bit vadász beindul

Előzmény: dezsoe, 2017-08-14 11:38:15 [4226]


Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 2 / 87 Ugrás ide:
|◄ Első  ◄ Előző  1 2  3   4   5   6     Következő ►  Utolsó ►|