Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

UCCNC vezérlő program

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

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

svejk

Továbbra is csak ámulok-bámulok!

Persze tudtam hogy tud ilyet mert már több barátom mesélte, de hogy még nekem is tud segíteni konkrétumokkal!
Ráadásul el is magyarázza mit miért...


Holnap ki is próbálom.
Majd még lehet lenne egy apróság amit meg lehetne kérdezni, de ne szaladjunk előre.





svejk

Idézetet írta: svejk Dátum 2025 augusztus 13, 22:37Továbbra is csak ámulok-bámulok!

Persze tudtam hogy tud ilyet mert már több barátom mesélte, de hogy még nekem is tud segíteni konkrétumokkal!
Ráadásul el is magyarázza mit miért...


Vajon gépészeti témákban is ennyire nagytudású az AI?
Kérdeztetek már ilyen jellegűeket?

TBS-TEAM

Ez fontos:

Még bele kell rakni, hogy a szerszámcsere előtt olvassuk ki és tároljuk a gép pozícióját, hogy az orsót oda küldhessük, vissza ahol a szerszámcsere meghívásakor volt.

double x = exec.GetXpos();                // GetOEMDRO(83)
double y = exec.GetYpos();                // GetOEMDRO(84)
double z = exec.GetZpos();                // GetOEMDRO(85)
double a = exec.GetApos();                // GetOEMDRO(86)
double b = exec.GetBpos();                // GetOEMDRO(87)
double c = exec.GetCpos();                // GetOEMDRO(88)
József

svejk

Idézetet írta: TBS-TEAM Dátum 2025 augusztus 14, 06:53Ez fontos:

Még bele kell rakni, hogy a szerszámcsere előtt olvassuk ki és tároljuk a gép pozícióját, hogy az orsót oda küldhessük, vissza ahol a szerszámcsere meghívásakor volt.

/quote]

Szerintem ez nem kötelező feltétel mert nem is biztos hogy ott fogja az új szerszámmal folytatni ahol az előzővel abbahagyta.

Nálam ráadásul nem is lesz X, Y mozgás.


svejk

Így, hogy már tudom melyik sor volt a ludas az anomáliára is fény derült, hogy miért futott le néha hiba nélkül a TBS-TEAM szerinti makro.

Kínomban ugye már össze vissza próbálgattam és néha az eredeti M6-ot is lefuttattam.
Ilyenkor rendesen beváltott és ez után működött a TBS-TEAM szerinti makro.

Az UCCCNC újraindítása után viszont mindig nullás szerszámmal jelenkezik be, így kaptam a hibaüzeneteket.


svejk


No, estére kelve elfáradhatott az AI is mert ez az utolsó verzióra dob egy csomó hibát az UCCNC fordítója :)

UCCNC macro compiler error log file
--------------------------------------
Last error dated: 8/14/2025 7:59:08 AM
In macro: M61
--------------------------------------
CS1513 | in line: 57 | error text: Itt ,,}" karakternek kellene szerepelnie.
CS1513 | in line: 122 | error text: Itt ,,}" karakternek kellene szerepelnie.
CS1519 | in line: 127 | error text: Érvénytelen ,,(" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS1519 | in line: 129 | error text: Érvénytelen ,,+" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS1520 | in line: 129 | error text: A metódusnak rendelkeznie kell visszatérési típussal.
CS1001 | in line: 129 | error text: Itt azonosítónak kellene szerepelnie.
CS1002 | in line: 129 | error text: Itt pontosvesszőnek ( ; ) kellene szerepelnie.
CS1520 | in line: 130 | error text: A metódusnak rendelkeznie kell visszatérési típussal.
CS1001 | in line: 130 | error text: Itt azonosítónak kellene szerepelnie.
CS1002 | in line: 130 | error text: Itt pontosvesszőnek ( ; ) kellene szerepelnie.
CS1519 | in line: 133 | error text: Érvénytelen ,,(" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS0116 | in line: 140 | error text: Egy névtér nem tartalmazhat közvetlenül tagokat, például mezőket vagy metódusokat.
CS1518 | in line: 197 | error text: Itt osztálynak, delegáltnak, felsorolásnak, illesztőfelületnek vagy struktúrának kellene szerepelnie.
CS1022 | in line: 215 | error text: Itt típus- vagy névtér-definíciónak, illetve fájlvége jelnek kellene szerepelnie.
--------------------------------------



TBS-TEAM

Idézetet írta: svejk Dátum 2025 augusztus 14, 07:15
Idézetet írta: TBS-TEAM Dátum 2025 augusztus 14, 06:53Szerintem ez nem kötelező feltétel mert nem is biztos hogy ott fogja az új szerszámmal folytatni ahol az előzővel abbahagyta.

Nálam ráadásul nem is lesz X, Y mozgás.



Akkor nem lenne egyszerübb egy PLC-vel megoldani, ha csak szerszám váltás kell meg Z mozgás.
Kimaradna a számitógép és a sok lom hozzá.
József

svejk

Idézetet írta: TBS-TEAM Dátum 2025 augusztus 14, 08:42Akkor nem lenne egyszerübb egy PLC-vel megoldani, ha csak szerszám váltás kell meg Z mozgás.
Kimaradna a számitógép és a sok lom hozzá.

Idézetet írta: TBS-TEAM Dátum 2025 augusztus 14, 08:42Akkor nem lenne egyszerübb egy PLC-vel megoldani, ha csak szerszám váltás kell meg Z mozgás.
Kimaradna a számitógép és a sok lom hozzá.

De akkor min futna az UCCNC? :)

Félreértetted csak a szerszámcseréhez nem kell X, Y mozgás.

TBS-TEAM

Idézetet írta: svejk Dátum 2025 augusztus 14, 09:50De akkor min futna az UCCNC? :)

Félreértetted csak a szerszámcseréhez nem kell X, Y mozgás.

Értem akkor csak CNC gép hez kell.  :rohog
József

Szedlay Pál

Idézetet írta: svejk Dátum 2025 augusztus 14, 08:03No, estére kelve elfáradhatott az AI is mert ez az utolsó verzióra dob egy csomó hibát az UCCNC fordítója :)

UCCNC macro compiler error log file
--------------------------------------
Last error dated: 8/14/2025 7:59:08 AM
In macro: M61
--------------------------------------
CS1513 | in line: 57 | error text: Itt ,,}" karakternek kellene szerepelnie.
CS1513 | in line: 122 | error text: Itt ,,}" karakternek kellene szerepelnie.
CS1519 | in line: 127 | error text: Érvénytelen ,,(" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS1519 | in line: 129 | error text: Érvénytelen ,,+" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS1520 | in line: 129 | error text: A metódusnak rendelkeznie kell visszatérési típussal.
CS1001 | in line: 129 | error text: Itt azonosítónak kellene szerepelnie.
CS1002 | in line: 129 | error text: Itt pontosvesszőnek ( ; ) kellene szerepelnie.
CS1520 | in line: 130 | error text: A metódusnak rendelkeznie kell visszatérési típussal.
CS1001 | in line: 130 | error text: Itt azonosítónak kellene szerepelnie.
CS1002 | in line: 130 | error text: Itt pontosvesszőnek ( ; ) kellene szerepelnie.
CS1519 | in line: 133 | error text: Érvénytelen ,,(" lexikális elem az osztály, struktúra vagy illesztőfelület tagjának deklarációjában.
CS0116 | in line: 140 | error text: Egy névtér nem tartalmazhat közvetlenül tagokat, például mezőket vagy metódusokat.
CS1518 | in line: 197 | error text: Itt osztálynak, delegáltnak, felsorolásnak, illesztőfelületnek vagy struktúrának kellene szerepelnie.
CS1022 | in line: 215 | error text: Itt típus- vagy névtér-definíciónak, illetve fájlvége jelnek kellene szerepelnie.
--------------------------------------





#Events KÖTELEZŐ, ha segédfüggvényeket/"globális" változókat akarsz
A makrószöveg egy metóduson belül fut. Új függvényt vagy "globális" változót csak a fájl VÉGÉN, a #Events sor UTÁN lehet definiálni. Enélkül pontosvessző-/kapcsoszárójel-hibákat kapsz – pont olyat, mint most.

Bemenetek olvasása: nincs "GetInPinState". LED-en keresztül kell
A makró API nem ad közvetlen "read raw input pin" hívást. A dokumentáció szerint LED-ek belső booleán változók, és a LED állapota olvasható makróból (AS3.GetLED(LEDszám)). Tehát a bejövő biteket olyan funkció(k)ra/LED-ekre kell KIOSZTANI, amely(ek) LED kóddal rendelkeznek, és ez(eke)t kell olvasni.

Példák olvasható LED-ekre (csak illusztráció): limit/otthon/THC/probe/estop LED-ek (44–46, 56–61, 63–65, 37, 36 stb.). Ezek létező funkció-LED-ek, nem nyers port/pin.

Kimeneti pinekhez vannak "OutputPTxPNy" LED-ek (1..17, 69..136, stb.), de ezek kimenetek állapotát jelzik, nem bemenetet. Bemenetre ilyen általános LED lista nincs.

→ Következmény: a 4 bites abszolút tárkódot úgy tudjuk olvasni, ha
(A) a négy bemenetedet Input Trigger(ek)re kötöd és azokat User LED-ekhez rendeled (a Screensetben), majd a makró ezeket a User LED kódokat olvassa; vagy
(B) a négy jel valamely létező, LED-del rendelkező funkcióra van kötve (nem ajánlott), és azok LED-jeit olvassuk.

Makró-API, amit stabilan használhatunk az esernyőtáras cseréhez

Mozgás, várakozás: exec.Code("G.."), exec.Wait(ms), exec.IsMoving()

Pozíciók: GetX/Y/Z/A/B/Cpos() és Get...machpos()

Szerszám: Getnewtool(), Getcurrenttool(), Setcurrenttool()

Kimenetek: Setoutpin(port,pin), Clroutpin(port,pin)

LED olvasás: AS3.GetLED(led#) (a LED-lista dokumentált és olvasható)

Demó mód LED: 218 – erre érdemes ránézni, ha Demo módban próbálsz.

Miért dobta a "Current TOOL # is out of range 1–8" hibát, és miért hullott szét később?

A kódodban elágazások 0/-1/határ esetekre több, egymásnak ellentmondó ág is van. Emellett a makróban szintaxis-hibák (hiányzó }) is előidézhetik, hogy a fordító félreérti a blokkhatárokat, és olyan helyen "függvénydefiníciót" lát, ahol nem lehet – pont a mostani hibasorok: "Itt '}' karakternek kellene szerepelnie.", "A metódusnak rendelkeznie kell visszatérési típussal." stb. Ezek tipikusan #Events nélküli segédfüggvény vagy elcsúszott kapcsos következményei.

Mit tudok garantáltan megcsinálni, hibamentesen (és mit kérsz Te hozzá)?

Teljes, leforduló M6 makró C#-ban #Events-szel, pontos zárójelezéssel.

Támogatás 12 állásos tárhoz (B-tengely pozíciótáblával).

T0 → szerszám letét logika (ha T0, akkor kinyit, lerak, Setcurrenttool(0)).

4 bites kód olvasása LED-ekről (bit0..bit3 → bináris → 1..12 térkép; ha nem a várt kód, azonnali hibaüzi, nincs korrekció).

Biztonsági feltételek: homed LED-ek (56–61), orsó tényleges állása (Actspindlespeed = Field 870) ellenőrzés stb.

Ami TŐLED kell a makróba (kitölthető konstansokként fogom megjelölni):

A 4 bit LED kódjai: pl. BIT_LED[0..3] = {led#,...} – ezek lesznek azok a User LED-ek, amikre az Input Triggerjeidet rákötöd. (Ezt a screensetben állítod be; a makró csak olvas.)

A szelep/kimenet port/pin számai (ClampOpen, ClampClose, porelszívó, stb.) – ezeket a Setoutpin/Clroutpin használja.

A gépkoordinátás pozíciók: SafeZ, Ztoolrelease, Ztoolpickup, Y-pozíciók stb.

A B-tengely szerszám-szög táblázat 12 állásra.

Ha megfelel, a következő körben odaadom a javított, leforduló M6 makrót ezekkel:

T0 kezelése (lerakás).

12 szerszám támogatás.

4 bites LED-olvasás (Te csak a LED kódokat írod be).

#Events blokk a segédfüggvényeknek → nincs több CS1513/CS1519/CS1520.







1 Használt függvények - mind szerepel a PDF-ben
Makróban    PDF igazolás
exec.Getnewtool() / exec.Getcurrenttool()    listázva mint makró-függvény
exec.IsMoving()    dokumentálva
exec.Wait()    dokumentálva
exec.Code()    dokumentálva
exec.Stop() / exec.StopWithDeccel()    dokumentálva
exec.Setoutpin() / exec.Clroutpin()    dokumentálva
AS3.GetLED() / AS3.Getfield()    dokumentálva
exec.Ismacrostopped()    dokumentálva

Nincs olyan hívás (pl. AS3.Setfield, AS3.Getanaloginput stb.), ami hiányozna.

2 Potenciális buktatók – de nem szintaxishibák
Téma    Miért nem hiba?
Tömb-indexelés – ToolB 1-től 12-ig    A tömb mérete MaxToolNum+1, így nem lépsz túl.
AS3.Getfield(870) stringet ad vissza    Convert.ToDouble() korrektül konvertálja.
Ismacrostopped() hívása zárójellel    A PDF példában ugyan zárójel nélkül is szerepel, de a függvény-forma (void → bool) engedi a ()-t; fordítási hibát nem okoz.
Top-level kód (for-ciklusok, változók)    A PDF mintapéldája is globális kódot használ, tehát a fordító elfogadja.
3 Összegzés – futni fog-e?

Fordítás: a C# fordító nem talál szintaxis- vagy típushibát.

Futtatás: az algoritmus pontosan a régi logikát követi; a korábbi elütés miatti compile-error megszűnt, így hibamentesen elindul – feltéve, hogy a gépi koordináták, LED-ID-k és I/O-pin-kiosztások tényleg stimmelnek.

Mit érdemes még tesztelni?

LED-kód olvasás (BIT_LED0-3) – helyes LED-számok a screensetben.

SafeZ, ToolDown, YToolChangePos és társai ne menjenek limit- vagy soft-limit alá.

Porelszívó kimenet (DustCollectorPort/Pin) létezzen, különben a hívás nem csinál semmit, de hibaüzenetet sem ad.

Ha ezek is rendben vannak, a makró kompromisszum nélkül ugyanazt csinálja, csak most már fordítási hiba nélkül.



svejk

Köszi, most már lefut hiba nélkül.