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

2dbfy8y

Vagyis lehet hülyén írtam le, világítás helyett az adott led villogjon, arra gondoltam.

dezsoe


Miki2

Szervusztok!
Szeretném megkérdezni a következőt:
Van-e lehetőség arra, hogy a "Z" tengely helyett valamelyik másik legyen a főorsóhoz szinkronizált tengely.

Köszönöm a választ.

dezsoe

Szia!

Nem próbáltam ki, csak a doksi alapján a G33-nak nem muszáj Z-t is megadni, adhatsz csak X-et és azt fogja szinkronizálni. Ha van kéznél enkóderes géped, akkor próbáld ki, ha nincs, akkor szólj, összerakok egy tesztet.

dezsoe

Itt a villogós verzió:

// Hiba -> reset
// Futás -> cycle start vagy szerszámcsere vagy MDI vagy bemérés fut a probe képernyőn
// Pihen -> nem Hiba és nem Futás

int State = 2;

if (exec.GetLED(25))
  State = 0;                                                                    // Hiba
else if (exec.GetLED(54) || exec.GetLED(28) || exec.GetLED(216) || AS3.Getbuttonstate(821))
  State = 1;                                                                    // Futás

if (State != LastState)
{
  // Állapotváltozáskor azonnal jelezzük
  Counter = 1;
  Light = false;
  LastState = State;
}

if (--Counter == 0)
{
  Light = !Light;
  Counter = SetTimer;
}

if (Light != LastLight)
{
  if (Light)
    switch (State)
    {
      case 0:
        exec.Setoutpin(Port0, Pin0);
        exec.Clroutpin(Port1, Pin1);
        exec.Clroutpin(Port2, Pin2);
        break;
      case 1:
        exec.Clroutpin(Port0, Pin0);
        exec.Setoutpin(Port1, Pin1);
        exec.Clroutpin(Port2, Pin2);
        break;
      case 2:
        exec.Clroutpin(Port0, Pin0);
        exec.Clroutpin(Port1, Pin1);
        exec.Setoutpin(Port2, Pin2);
        break;
    }
  else
  {
    exec.Clroutpin(Port0, Pin0);
    exec.Clroutpin(Port1, Pin1);
    exec.Clroutpin(Port2, Pin2);
  }
  LastLight = Light;
}

#Events

const int SetTimer = 10;                                                        // SetTimer/20 s

static int LastState = -1;
static int Counter = 1;
static bool Light = false;
static bool LastLight = false;

const int Port0 = 1;                                                            // Hiba kimenet
const int Pin0 = 1;

const int Port1 = 1;                                                            // Futás kimenet
const int Pin1 = 8;

const int Port2 = 1;                                                            // Pihen kimenet
const int Pin2 = 9;

Miki2

Szervusz Dezső!
Én igazából a "A" forgó tengelyt szeretném szinkronizálni.
Mellette működnie kellene az "X" és a "Z" tengelyeknek is.
Tehát a gép maradna 3 tengelyes. Kettő lineáris és egy forgó tengely.

Miki2

Még egy apróság: A G33 sor az "A" tengelyre kell vonatkozzon.

dezsoe

Akkor viszont nem megy: csak az X és Z lehet jelenleg. Nem kevés dolgot kellene hozzá módosítani.

dezsoe

Ezt most nem értem. Az A forgásához kéne szinkronizálni az X-et és Z-t?

Miki2

Bocsánat, hogy elaprózom. Ilyen programsorra gondolok:

#1=[1/6]
G33 K#1 Z-50

Ez a jelentése:
Az "A" tengely 1/6 fordulatot tesz meg a főorsó 1 fordulata alatt.
A bordás rész marása 50 mm hosszan történik.
Az X tengely a fogásmélység beállításához szükséges.

dezsoe

Így már értem, de jelenleg az A nem szinkronizálható.

2dbfy8y

Köszönöm.
Kipróbálom!

Miki2

Végül is az lenne a cél, hogy ha csak a "Z" tengely lehet szinkronban, akkor ez a szinkron fenntartható legyen, amíg az
előtolást végző "X" tengely el nem éri a kívánt értéket.
Az már csak számolás és beállítás kérdése, hogy a megfelelő osztás adódjék. Persze egyszerűbb lenne  a "Z" tengelyt forgó tengelyként kezelni.
Az előbbi példával élve:

#1=[1/6]
S500 M3
G0 Y1
G1 Y-5
G33 K#1     (Itt elindulna a "Z" tengely, és menne míg a              
             főorsót le nem állítom)
G1 X-50 F100
G0 Y10
M5

Az Y tengely maradna a fogásmélység beállítására.
Végül is mindegy, minek nevezzük a tengelyt.
A lényeg az lenne, ha a főorsó beindul, a "Z" tengely is kezdjen a beállított szinkron értékkel menni. Függetlenül attól, hogy bármely másik tengelyt mozgásba hozná.
A többi tengely mozgatását program szerint végezné a gép.

dezsoe

Szerintem tudsz lefejtő marást csinálni, csak kicsit össze kell keverni a tengelyeket. A G33 az X-et és a Z-t együtt mozgatja szinkronban, a nagyobb elmozdulásra szinkronizálva. Ha tehát a munkadarabot forgató tengelyt Z-nek hívjuk és fokban adjuk meg a mozgását, akkor a Z-t fogja a főorsóhoz szinkronizálni K arányban, mert (csak hasra) ha a Z-nek kell 30-at fordulni, az 30*360, ami jóval több, mint a X-re jutó (szintén hasra) 5 mm. Ezzel meg tudod oldani, hogy a főorsóval szinkronban amíg a Z 30-at fordul, addig az X szépen közelít 5 mm-t. A Z 30*360, az X pedig 5 lesz, a K-t kell kiszámolni.

szf

Ezt hozzá lehet illeszteni az UCCNC-hez ? Vagy van valami hasonló megoldás?