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

dezsoe

Készítettem egy makrót "smart homing" néven. A beépített home-olástól annyiban különbözik, hogy miután egy tengely felvette a home pozíciót, egy megadott koordinátára elmegy. A másik lényeges különbség a SoftLimit kezelésében van. Ha a home kapcsoló a SoftLimit határain kívül esik és a SoftLimit be van kapcsolva, akkor az UCCNC a home pozíció felvétele után megakad a SoftLimit koordinátánál (nem engedi bemenni a tengelyt a határok közé). Ezért a megadott koordináta felvételekor a SoftLimitet ideiglenesen kikapcsolom.

A profil file-ba fel kell venni egy [SmartHome] szekciót, ahol a paraméterek lesznek. G28Move<tengely>=true/false értékkel lehet egy adott tengelyre engedélyezni vagy tiltani a home utáni elmozdulást, G28Goto<tengely>=<gépi koord.> sorral pedig beállíthatjuk, hogy hova menjen. Például (nálam az X és Y home -5mm-en, a Z 50mm-en van):


[SmartHome]
G28MoveX=true
G28GotoX=0.0
G28MoveY=true
G28GotoY=0.0
G28MoveZ=true
G28GotoZ=45.0


A makrót meg lehet hívni paraméter nélkül vagy Q paraméterrel. Ha a Q meg van adva, akkor 0-5-ig az X, Y, Z, A, B, C tengelyt fogja home-olni. Ha nincs paramétere, akkor egy képernyő mezőből veszi, hogy mit csináljon.

A képernyőn kívüli területre tettem egy mezőt (hogy ne látszódjon) és látható helyre egy csúszkát, ami ennek a mezőnek az értékét állítja 0 és 6 között. 0-5-ig egyesével home-olja a tengelyeket, ahogy már fentebb leírtam, ha 6 az értéke, akkor a Configuration/General settings/Homing sequence beállításban megadott tengelyeket az ott megadott sorrendben home-olja. A makróban a SmartHomeAxisFld konstans értéke a beviteli mező sorszáma. Az első képen a nyomógomb (ez hívja a makrót) és mellette a csúszka látható, a másodikon az eredmény a státusz ablakban.

A makró:


// ================================================================================================
// SmartHome v1.2
// ================================================================================================

string Axes = "XYZABC";
int Axis = 0;

if (Qvar == null)
{
  Axis = Convert.ToInt32(AS3.Getfielddouble(SmartHomeAxisFld));
  if (Axis == 6)
  {
    for (int i = 0; i <= 5; i++)
    {
      Axis = Axes.IndexOf(AS3.Getcomboboxselection(4 + i));
      if (Axis != -1)
        exec.Setaxishomestate(Axis, false);
    }
    for (int i = 0; i <= 5; i++)
    {
      Axis = Axes.IndexOf(AS3.Getcomboboxselection(4 + i));
      if (Axis != -1)
        if (!HomeAxis(Axis))
          return;
    }
  }
  else
  {
    exec.Setaxishomestate(Axis, false);
    HomeAxis(Axis);
  }
  return;
}

int Qint = Convert.ToInt32(Qvar);

if ((Qint < 0) || (Qint > 5))
{
  AS3.Additemtolistbeginning("* M20928: Invalid Q", 2);
  return;
}

HomeAxis(Qint);

// ================================================================================================

#Events

const int SmartHomeAxisFld = 20602;

bool HomeAxis(int AxisNo)
{
  string WorkAxis = "XYZABC".Substring(AxisNo, 1);
  bool G28Move = Convert.ToBoolean(exec.Readkey("SmartHome", "G28Move" + WorkAxis, "false"));
  double G28Goto = Convert.ToDouble(exec.Readkey("SmartHome", "G28Goto" + WorkAxis, "0.0"));
  double CurrentPos = 0.0;
  bool SoftLimit = exec.GetLED(67);

  if (G28Move)
    AS3.Additemtolistbeginning("Homing " + WorkAxis + " with move to " + G28Goto, 2);
  else
    AS3.Additemtolistbeginning("Homing " + WorkAxis, 2);

  while (exec.IsMoving()){}
  if(exec.Ismacrostopped())
    return false;

  switch (AxisNo)
  {
    case 0:
      CurrentPos = exec.GetXpos();
      break;
    case 1:
      CurrentPos = exec.GetYpos();
      break;
    case 2:
      CurrentPos = exec.GetZpos();
      break;
    case 3:
      CurrentPos = exec.GetApos();
      break;
    case 4:
      CurrentPos = exec.GetBpos();
      break;
    case 5:
      CurrentPos = exec.GetCpos();
      break;
  }

  exec.Code("G28.1 " + WorkAxis + CurrentPos);
  while (exec.IsMoving()){}
  if(exec.Ismacrostopped())
    return false;

  if (G28Move)
  {
    if (SoftLimit)
    {
      exec.Callbutton(519);
      while (exec.IsMoving()){}
    }

    exec.Code("G0 G53 " + WorkAxis + G28Goto);
    while (exec.IsMoving()){}
    if(exec.Ismacrostopped())
    {
      if (SoftLimit)
      {
        exec.Callbutton(518);
        while (exec.IsMoving()){}
      }
      return false;
    }

    if (SoftLimit)
    {
      exec.Callbutton(518);
      while (exec.IsMoving()){}
    }
  }

  return true;
}

// ================================================================================================



    

pv6cdvuc7

Sziasztok! Tudna valaki segíteni, hogy az uccnc program lézer pluginjének leírása hol lelhető fel magyarul?

dezsoe

Szia! Még nem találkoztam vele. Mondjuk, más nyelvűvel sem. :(

gaben


pv6cdvuc7


gaben

Szia,

nincs mit, bár ezt inkább Csabának kellene átböngésznie, hogy mennyire hasznos nekünk.

üdv, Gábor [#wave]

dezsoe

Szia!

Letöltöttem, de igazából nem láttam benne hasznos információt. Majd megkérdezem a Balázsokat, hogy egyáltalán létezik-e leírás hozzá, és ha nem, akkor gyűjtök információt és megírom, legyen meg ez is. (Csak egy kis türelmet kérek, mert az osztódás még nem megy, de igyekszem... :))

dezsoe

Sziasztok!

Megjelent az UCCNC 1.2044-es tesztverziója.

Innen tölthető le.

Javítások és változások:

- Az UC300ETH és UC400ETH hibásan számolta a gyorsulást a B tengelyen, ami furcsa mozgást eredményezett, javítva
- Az UC300ETH és UC400ETH lépést vesztett az enkóder megszakítás prioritási hibája miatt, ha a főorsó enkóder engedélyezve volt, javítva

gaben

Szia Csaba,

nem azért mondtam, hogy ezzel munkát adjak Neked. :)
Csupán érdekelt volna a véleményed a .pdf-el kapcsolatban.

Ha lesz róla valami jó kis összefoglaló, azt sokan megköszönnénk ill. én le is fűzném a többi hasznos iromány mellé.

üdv, Gábor [#wave]

dezsoe

Szia, Gábor!

Elég sok kérdés szokott itt elhangzani, úgyhogy éppen ideje lenne, hogy legyen egy jó leírás róla. :)

gaben

Szia Csaba,

egy jó kis magyar nyelvű UCCNC összefoglalót, még anyagilag is hajlandó lennék támogatni. [#wave]

dezsoe

Mit értesz UCCNC összefoglaló alatt? A program leírása ott van a program mappájában. Igazából csak a beépített plugin-ok leírása hiányzik. Talán még a makró/plugin fejlesztéshez lehetne írni doksit. Angol nyelven már megtette egy szorgos felhasználó, ha közelít a teljességhez, akkor majd lefordítjuk, ha megengedi. :)

gaben

Tudom, az meg is van.
Az ilyen apró szösszenetekre, beállítások mikéntjére gondoltam.

ium8w94xp

Sziasztok.

Van egy kis problémám és nem tudom, hogy az uccnc vagy a cambam progi generálja. Gitár test formát marnék teszt célzattal.Az első kör 1 mm-es vágásánál mielött befejezné a teljes testet kimegy a rajzolatból. Az uccnc mutatja a formát, de azon túl megy. Nem is értem miért. Mutatja hol kéne mozogjon és azt is épp hol mozog, de akkor miért nem ott mozog, ahol kéne? Kinek küldjem a Gkódot? Csaba?

dezsoe

Szia!
Küldd el, az aktuális profillal együtt, de csak délelőtt fogom tudni megnézni, majd akkor írok, hogy mit találtam.