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

istvan3

Idézetet írta: svejk Dátum 2025 december 18, 16:37Ezt már próbáltam, a képernyő gombnál hatásos is de ha ha G-kódban van az M3 akkor nem működik a feltétel.

De azért köszönöm, hogy foglalkoztál a kérdéssel!






Kíváncsiságból bevetettem a chatGPT. Adott egy talán használható ötletet:


Macro felügyelet, ami nem tiltja az indítást, de ha nincs bemenet leállítja a főorsót.


local input_led = 1000
local spindle_led = 11 -- spindle running LED

if GetLED(spindle_led) == 1 and GetLED(input_led) == 0 then
    MessageBox("HIBA",
              "Főorsó fut, de a biztonsági bemenet megszűnt!",
              0)
    Stop()
    SpinStop()
end


B opciónak egy egyedi makrót ajánl, amire az M3/M4 sorokat a G kódban ki kell cserélni, így ott már program futása közben is jó lesz a makró.

Szedlay Pál

Idézetet írta: svejk Dátum 2025 december 17, 19:28Hogy lehetne azt frappánsan megoldani, hogy akár a Spindle CW/CCW gombra, akár az M3/M4 kódra csak akkor induljon el a főorsó ha egy adott bemenet aktív.

Egyéb mozgásoknak viszont menniük kell.

 

Megoldás: az M3/M4 makrót felülírod, és a makró csak akkor hívja meg a beépített spindle-indítást, ha a kiválasztott bemenet aktív. Így minden mozgás mehet tovább, csak a főorsó indulása lesz "kapuzva".

1) Válaszd ki, melyik fizikai bemenet legyen az "engedély"

Legyen mondjuk Port = P, Pin = N (pl. port4 pin15).

Ennek a port/pin logikai állapotát UCCNC-ben LED-kóddal kényelmes olvasni: a GetLED() az adott port/pin aktuális szintjét adja.
A port/pin → LED kód számolása (az ismert kiosztás alapján):

ha port = 1: LED = pin

ha port = 2..5: LED = 68 + (port-2)*17 + pin

2) Írd meg az M3.txt makrót (CW) – csak engedély esetén indul

...\UCCNC\Profiles\<profilneved>\macro\M3.txt:

// ====== ÁLLÍTSd BE ======
int port = 4;   // <- ide a port
int pin  = 15;  // <- ide a pin

int enableLed = (port == 1) ? pin : (68 + (port - 2) * 17 + pin);

// ====== KAPUZÁS ======
if (!AS3.GetLED(enableLed))
{
    exec.AddStatusmessage("SPINDLE TILTVA: engedely bemenet inaktiv.");
    return;
}

// ====== BIZTOS CW INDÍTÁS (beépített gombkód) ======
bool cwOn  = AS3.Getbuttonstate(114); // M3 toggle
bool ccwOn = AS3.Getbuttonstate(115); // M4 toggle

if (ccwOn) exec.Callbutton(115); // CCW off
if (!cwOn) exec.Callbutton(114); // CW on

3) Írd meg az M4.txt makrót (CCW) – csak engedély esetén indul

...\UCCNC\Profiles\<profilneved>\macro\M4.txt:

// ====== ÁLLÍTSd BE ======
int port = 4;   // <- ide a port
int pin  = 15;  // <- ide a pin

int enableLed = (port == 1) ? pin : (68 + (port - 2) * 17 + pin);

// ====== KAPUZÁS ======
if (!AS3.GetLED(enableLed))
{
    exec.AddStatusmessage("SPINDLE TILTVA: engedely bemenet inaktiv.");
    return;
}

// ====== BIZTOS CCW INDÍTÁS ======
bool cwOn  = AS3.Getbuttonstate(114); // M3 toggle
bool ccwOn = AS3.Getbuttonstate(115); // M4 toggle

if (cwOn) exec.Callbutton(114);     // CW off
if (!ccwOn) exec.Callbutton(115);   // CCW on


Ellenőrzés fejben:

Ha az engedély bemenet hamis → a makró azonnal return, tehát a főorsó nem indul.

Ha igaz → a makró a beépített 114/115 gombkódokon keresztül indít, tehát ugyanazt csinálja, mint a gyári Spindle CW/CCW.

4) Hogy a Spindle CW/CCW gomb is ezt kövesse

Két opció van; a biztos módszer:

UCCNC Screen editor: a Spindle CW gomb kódját állítsd pl. 20001-re, a Spindle CCW gombét 20002-re.

Hozd létre:

M20001.txt → ugyanaz a logika, mint az M3, a végén exec.Callbutton(114);

M20002.txt → ugyanaz a logika, mint az M4, a végén exec.Callbutton(115);

Így a gombnyomás makrót futtat, tehát ugyanúgy kapuzott lesz, mint az M3/M4 G-kódból.

svejk

Idézetet írta: Robsy1 Dátum 2025 december 18, 17:54Megoldásként én ebben az esetben nem alkalmaznék SW megoldást, hanem egy 50Ft-os optocsatolón keresztül vezetném az M3 start kimenetét a főorsóra. A biztonsági jellel pedig értelemszerűen az optokapu dióda részét működtetjük.
Ezzel egy logikai ÉS kapcsolatot hoztunk létre.



Esetemben biztonságtechnikailag nem jó megoldás, mert így ha szoftver kiadja a főorsó jelet és később jön meg a külső jel akkor is elindul de az itt nem megengedett.


svejk

Idézetet írta: Szedlay Pál Dátum 2025 december 18, 21:14Megoldás: az M3/M4 makrót felülírod, és a makró csak akkor hívja meg a beépített spindle-indítást, ha a kiválasztott bemenet aktív. Így minden mozgás mehet tovább, csak a főorsó indulása lesz "kapuzva"......



Lásd:
#9584 hozzászólás

svejk

Idézetet írta: istvan3 Dátum 2025 december 18, 20:18Kíváncsiságból bevetettem a chatGPT. Adott egy talán használható ötletet:


Macro felügyelet, ami nem tiltja az indítást, de ha nincs bemenet leállítja a főorsót.


local input_led = 1000
local spindle_led = 11 -- spindle running LED

if GetLED(spindle_led) == 1 and GetLED(input_led) == 0 then
    MessageBox("HIBA",
              "Főorsó fut, de a biztonsági bemenet megszűnt!",
              0)
    Stop()
    SpinStop()
end


B opciónak egy egyedi makrót ajánl, amire az M3/M4 sorokat a G kódban ki kell cserélni, így ott már program futása közben is jó lesz a makró.


A B opciót már használtam párszor más esetekben célgépeknél, de ugye ez nem egy frappáns megoldás

svejk

Idézetet írta: istvan3 Dátum 2025 december 18, 20:18Kíváncsiságból bevetettem a chatGPT. Adott egy talán használható ötletet:


Macro felügyelet, ami nem tiltja az indítást, de ha nincs bemenet leállítja a főorsót.


local input_led = 1000
local spindle_led = 11 -- spindle running LED

if GetLED(spindle_led) == 1 and GetLED(input_led) == 0 then
    MessageBox("HIBA",
              "Főorsó fut, de a biztonsági bemenet megszűnt!",
              0)
    Stop()
    SpinStop()
end


B opciónak egy egyedi makrót ajánl, amire az M3/M4 sorokat a G kódban ki kell cserélni, így ott már program futása közben is jó lesz a makró.


Egy makróval lehetne tiltani a gombokat és egy másikkal hogy addig ne lehessen ciklust indítani de akkor még mindig ott van az MDI mód.

svejk

Idézetet írta: Szedlay Pál Dátum 2025 december 18, 21:14Megoldás: az M3/M4 makrót felülírod, és a makró csak akkor hívja meg a beépített spindle-indítást, ha a kiválasztott bemenet aktív. Így minden mozgás mehet tovább, csak a főorsó indulása lesz "kapuzva".

1) Válaszd ki, melyik fizikai bemenet legyen az "engedély"

Legyen mondjuk Port = P, Pin = N (pl. port4 pin15).

Ennek a port/pin logikai állapotát UCCNC-ben LED-kóddal kényelmes olvasni: a GetLED() az adott port/pin aktuális szintjét adja.
A port/pin → LED kód számolása (az ismert kiosztás alapján):

ha port = 1: LED = pin

ha port = 2..5: LED = 68 + (port-2)*17 + pin

2) Írd meg az M3.txt makrót (CW) – csak engedély esetén indul

...\UCCNC\Profiles\<profilneved>\macro\M3.txt:

// ====== ÁLLÍTSd BE ======
int port = 4;   // <- ide a port
int pin  = 15;  // <- ide a pin

int enableLed = (port == 1) ? pin : (68 + (port - 2) * 17 + pin);

// ====== KAPUZÁS ======
if (!AS3.GetLED(enableLed))
{
    exec.AddStatusmessage("SPINDLE TILTVA: engedely bemenet inaktiv.");
    return;
}

// ====== BIZTOS CW INDÍTÁS (beépített gombkód) ======
bool cwOn  = AS3.Getbuttonstate(114); // M3 toggle
bool ccwOn = AS3.Getbuttonstate(115); // M4 toggle

if (ccwOn) exec.Callbutton(115); // CCW off
if (!cwOn) exec.Callbutton(114); // CW on

3) Írd meg az M4.txt makrót (CCW) – csak engedély esetén indul

...\UCCNC\Profiles\<profilneved>\macro\M4.txt:

// ====== ÁLLÍTSd BE ======
int port = 4;   // <- ide a port
int pin  = 15;  // <- ide a pin

int enableLed = (port == 1) ? pin : (68 + (port - 2) * 17 + pin);

// ====== KAPUZÁS ======
if (!AS3.GetLED(enableLed))
{
    exec.AddStatusmessage("SPINDLE TILTVA: engedely bemenet inaktiv.");
    return;
}

// ====== BIZTOS CCW INDÍTÁS ======
bool cwOn  = AS3.Getbuttonstate(114); // M3 toggle
bool ccwOn = AS3.Getbuttonstate(115); // M4 toggle

if (cwOn) exec.Callbutton(114);     // CW off
if (!ccwOn) exec.Callbutton(115);   // CCW on


Ellenőrzés fejben:

Ha az engedély bemenet hamis → a makró azonnal return, tehát a főorsó nem indul.

Ha igaz → a makró a beépített 114/115 gombkódokon keresztül indít, tehát ugyanazt csinálja, mint a gyári Spindle CW/CCW.

4) Hogy a Spindle CW/CCW gomb is ezt kövesse

Két opció van; a biztos módszer:

UCCNC Screen editor: a Spindle CW gomb kódját állítsd pl. 20001-re, a Spindle CCW gombét 20002-re.

Hozd létre:

M20001.txt → ugyanaz a logika, mint az M3, a végén exec.Callbutton(114);

M20002.txt → ugyanaz a logika, mint az M4, a végén exec.Callbutton(115);

Így a gombnyomás makrót futtat, tehát ugyanúgy kapuzott lesz, mint az M3/M4 G-kódból.



Hopsz, felületes voltam, ez mégis működik, köszönöm!

svejk

Idézetet írta: svejk Dátum 2025 december 18, 23:08Egy makróval lehetne tiltani a gombokat és egy másikkal hogy addig ne lehessen ciklust indítani de akkor még mindig ott van az MDI mód.

 [#falbav] Az MDI végül is azt csinálja mintha a G-kódból futtatnám az M3-at tehát ez nem probléma.

Jó lesz ez, persze ahogy beszélünk róla elgondolkodtam, lehet kicsit túl is tolom ezt a dolgot...


Vetesi75

Idézetet írta: svejk Dátum 2025 december 19, 00:08[#falbav] Az MDI végül is azt csinálja mintha a G-kódból futtatnám az M3-at tehát ez nem probléma.

Jó lesz ez, persze ahogy beszélünk róla elgondolkodtam, lehet kicsit túl is tolom ezt a dolgot...


Üdv!
Kíváncsiságból kérdezném, hogy a feltétel a szárszám váltáshoz kapcsolódik vagy gépi mdb. megfogáshoz vagy is-is?

svejk

Idézetet írta: Vetesi75 Dátum 2025 december 19, 10:09Üdv!
Kíváncsiságból kérdezném, hogy a feltétel a szárszám váltáshoz kapcsolódik vagy gépi mdb. megfogáshoz vagy is-is?

Szerszámváltó...

De lehet a relés logika lesz:




Vetesi75

Idézetet írta: svejk Dátum 2025 december 19, 11:03Szerszámváltó...

De lehet a relés logika lesz:





Gondolom akkor van engedély, mikor a cserélő alaphelyzetbe kerül és a szerszám be van húzva az orsóba.
Minek kell az öntartás az engedélyhez?
Szerintem érdemes lenne visszafelé logikával is reteszelni, hogyha nincs engedély, de jön vagy van egy M3, akkor csapja le a biztonságirelét.

svejk

Idézetet írta: Vetesi75 Dátum 2025 december 19, 14:05Gondolom akkor van engedély, mikor a cserélő alaphelyzetbe kerül és a szerszám be van húzva az orsóba.
Minek kell az öntartás az engedélyhez?
Szerintem érdemes lenne visszafelé logikával is reteszelni, hogyha nincs engedély, de jön vagy van egy M3, akkor csapja le a biztonságirelét.

Úgy van...
Nem az öntartás a lényeg, hanem hogy csak bejövő M3 nélkül tudjon behúzni az engedély relé.

Feleslegesen ne bántsuk a vészköröket, ha előfordul az eset azt kiíratom a képernyőre a további teendőkkel.


Vetesi75

Idézetet írta: svejk Dátum 2025 december 19, 14:50Úgy van...
Nem az öntartás a lényeg, hanem hogy csak bejövő M3 nélkül tudjon behúzni az engedély relé.

Feleslegesen ne bántsuk a vészköröket, ha előfordul az eset azt kiíratom a képernyőre a további teendőkkel.


Én arra gondoltam, ha engedély nélkül jönne a forgás parancs vagy forgás közben menne el az engedély, akkor ne csak a forgást vegye el, hanem a szánmozgást, programvégrehajtást is szüntesse be. Előbbi egy tiltott kezelés (nyitott behúzással megforgatni), utóbbi egy rendellenes üzemállapot (valamiért elmegy a behúzás vagy elmozdul alaphelyzetről a cserélőkar, stb. forgás közben).

svejk

Idézetet írta: Vetesi75 Dátum 2025 december 19, 16:23Én arra gondoltam, ha engedély nélkül jönne a forgás parancs vagy forgás közben menne el az engedély, akkor ne csak a forgást vegye el, hanem a szánmozgást, programvégrehajtást is szüntesse be. Előbbi egy tiltott kezelés (nyitott behúzással megforgatni), utóbbi egy rendellenes üzemállapot (valamiért elmegy a behúzás vagy elmozdul alaphelyzetről a cserélőkar, stb. forgás közben).

Értem a felvetéseket.
Majd ezek még kiforrják magukat.

Egyelőre megoldásokat keresek.