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

svejk

Oké, köszi az infót!

Most nekem ez a "nem vár" épp kapóra jön. :)

Ebből is látszik, hogy nem lehet mindenki kedvére írni a szoftvert. :(

kr97pwss2

Igen a hosszútávú tervek közt van.

e87jgfi6s

UCCNC program:Edit screen-File-"Save screenset" gomra rányomtam és a program indításkor a CONFIGURATION ablakkal indul a program. Hogyan tudom beállítani, hogy a RUN ablak legyen a kezdőképernyő?

k2rf792ud

üdv urak!
egy láma kérdés... csak mert nagyon kezdő vagyok... :D
a CAM része használható valamire a programnak??
csak mert beadtam neki egy dxf fájlt és csak a külső kontúrt látta. a belső részt nem... egy sima 3mm műanyaglemezbe kellene marni egy festősablont.
de nem igazán bírkózik meg vele. vagy tényleg ennyire szerencsétlen vagyok... [#zavart2]

dezsoe

Szia!

Az az oldal lesz aktív induláskor, amelyik látszik a screenset mentésekor. Nyomod a shift-et és átkattintasz a RUN képre, majd ott mentesz, akkor úgy indul.

e87jgfi6s

Köszönöm, még kérdésem lenne, hogy a CONFIG. ablakban található "debounce" értékek mire szolgálnak?

dezsoe

A bemeneteken van egy hardveres szűrő, erre lehet még egy kis szabályozható szoftveres szűrést is rátenni. A nem túl precízen érintkező kapcsolók prell-mentesítésére szolgál.

ium8w94xp

Csaba. Hiába nézegetem a multkori makród, ahol a tengelyeket forgatom E és H jelöléssel. Nem jövök rá mit kéne benne átírnom, hogy egy gombra működjön a dolog.  A makróba szeretném beleírni a tengelyeket fixen. Két félét. Egyiken x-a másikon vissza a-x. A gombokat már létre hoztam. De a makródhoz (is) hülye vagyok. Nagyon jó amúgy, csak nem akarom beírni mdi-be. A gomb jobban tetszik. Help ;)

svejk

Adott egy túlsúlyos, léptetőmotoros Z egység amit a motor árammentes nyomatéka éppen megtart.
De ha mozgás közben jön egy vészstop -ami ugye elveszi a step jeleket rögtön és kiesik a szinkronból-  akkor leszalad az egység.

Nagy mellénnyel kitaláltuk, - ideiglenesen amíg nem készül el a mechanikus fék,- hogy egy külső nyomógombbal/bemenettel meghívjuk az alábbi makrót. (persze a gomb lenyomása a főorsót leállítja hardveresen azonnal)


exec.Callbutton(130);
 
exec.Wait(2000);

exec.Callbutton(144);



Persze nem működik, egy éjszaka kellett mire rájöttem, hogy ezek az exec utasítások nem működnek ha fut a program, tehát nem csináltam semmit. :(

Miként kellene program futás közben makróból  meghívni a "Stop" parancsot?

dezsoe

Szia!

A nyomógombnak írj új makrót, ami meghívja a cserét, amit az MDI-be írnál. Ha tehát pl. az X és A tengelyt cserélnéd és a csere makró a 20000-es, akkor pl. a 20001-es makró (amit a nyomógomb hív) így néz ki:


exec.Code("M20000 E0 H3");


Mivel a visszaváltás ugyanezzel a sorral történik, nem kell két nyomógomb, csak egy, mert ugyanazt a két tengelyt cserélgeted oda-vissza.

Azért kell két lépésben csinálnod, mert a nyomógombnál nem lehet megadni, hogy milyen paraméterekkel hívja a makrót, csak simán meghívja, így egy plusz lépcsőt kell beiktatni, hogy a paramétereket is megkapja.

dezsoe

Szia!

Az exec végrehajtódik, csak a makró nem indul el ciklus futás közben. Macroloop-ból megoldható, csak törpölnöm kell rajta. :)

svejk

Aha!
Hagyd a csudába majd megoldódik másként, úgy is kell a mechanikus megoldás.

Inkább a magánkérdésemet erőltesd! :) [#kuss]

ium8w94xp


ium8w94xp

Most fedeztem fel egy érdekességet. Ha futtatom a Csaba által írt makrót és cserélem X tengelyt A-ra, akkor a home sequence résznél az 1-es axis kinullázódik(ott Z van nekem). Nem tudom ez miért van.

dezsoe

Mitagadás, volt benne egy hiba, ki is javítottam gyorsan. :)

Tengely csere makró UCCNC 1.2100 előtti verziókhoz:


// ================================================================================================
// Mxxxxx E<axis1> H<axis2>: Full swap axis1 with axis2
// ================================================================================================

AxisData Axis1 = new AxisData(AS3);
AxisData Axis2 = new AxisData(AS3);

if ((Evar == null) || (Hvar == null))
{
  exec.AddStatusmessage("Parameters: E<axis_no> H<axis_no>");
  return;
}

int Eint = Convert.ToInt32(Evar);
int Hint = Convert.ToInt32(Hvar);

if ((Eint < 0) || (Eint > 5) || (Hint < 0) || (Hint > 5))
{
  exec.AddStatusmessage("  where axis_no is 0..5 as XYZABC");
  exec.AddStatusmessage("Parameters: E<axis_no> H<axis_no>");
  return;
}

Axis1.Read(Eint);
Axis2.Read(Hint);

if (Axis1.HasSlave() || Axis2.HasSlave())
{
  exec.AddStatusmessage("Cannot swap axes with slave!");
  return;
}

Axis1.Write(Hint);
Axis2.Write(Eint);

exec.Callbutton(btnApplySettings);

exec.AddStatusmessage("Axes " + "XYZABC".Substring(Eint, 1) + " and " + "XYZABC".Substring(Hint, 1) + " swapped");

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

#Events

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

const int btnApplySettings = 168;

// =============== class AxisData

public class AxisData
{
  UCCNC.AS3interfaceClass myAS3;

  int Base0 = 0;
  int Base1 = 0;
  int Base2 = 0;
  int Base7 = 0;
  int Base8 = 0;
  int Base10 = 0;

  // Base0
  int Steppinnumber = 0;
  int Dirpinnumber = 0;
  int Limitminuspinnumber = 0;
  int Limitpluspinnumber = 0;
  int Homepinnumber = 0;
  double Homingspeedup = 0.0;
  double Homingvalue = 0.0;
  double Stepsperunit = 0.0;
  double Velocity = 0.0;
  double Acceleration = 0.0;
  double Softlimitnegative = 0.0;
  double Softlimitpositive = 0.0;
  double Compaccel = 0.0;
  double Backlashdistance = 0.0;
  double Homingspeeddown = 0.0;
  // Base1
  int Stepportnumber = 0;
  int Dirportnumber = 0;
  int Limitminusportnumber = 0;
  int Limitplusportnumber = 0;
  int Homeportnumber = 0;
  // Base2
  int Enapinnumber = 0;
  int Enaportnumber = 0;
  // Base7
  bool Axisenabled = false;
  bool Steppinnegate = false;
  bool Dirpinnegate = false;
  bool Limitminuspinnegate = false;
  bool Limitpluspinnegate = false;
  bool Homepinnegate = false;
  bool Homedirectionpositive = false;
  bool Homeautozero = false;
  bool Backlashenable = false;
  // Base8
  bool Enapinnegate = false;
  // Base10
  string Slaveaxis = "";

  public AxisData(UCCNC.AS3interfaceClass workAS3)
  {
    myAS3 = workAS3;
  }

  private void SetBases(int axis)
  {
    Base0 = axis * 15 + 1;
    Base1 = axis * 5 + 241;
    Base2 = axis * 2 + 463;
    Base7 = axis * 9 + 1;
    Base8 = axis + 141;
    Base10 = axis + 1;
  }

  public void Read(int axis)
  {
    SetBases(axis);
    // Base0
    Steppinnumber = myAS3.Getfieldint(Base0);
    Dirpinnumber = myAS3.Getfieldint(Base0 + 1);
    Limitminuspinnumber = myAS3.Getfieldint(Base0 + 2);
    Limitpluspinnumber = myAS3.Getfieldint(Base0 + 3);
    Homepinnumber = myAS3.Getfieldint(Base0 + 4);
    Homingspeedup = myAS3.Getfielddouble(Base0 + 5);
    Homingvalue = myAS3.Getfielddouble(Base0 + 6);
    Stepsperunit = myAS3.Getfielddouble(Base0 + 7);
    Velocity = myAS3.Getfielddouble(Base0 + 8);
    Acceleration = myAS3.Getfielddouble(Base0 + 9);
    Softlimitnegative = myAS3.Getfielddouble(Base0 + 10);
    Softlimitpositive = myAS3.Getfielddouble(Base0 + 11);
    Compaccel = myAS3.Getfielddouble(Base0 + 12);
    Backlashdistance = myAS3.Getfielddouble(Base0 + 13);
    Homingspeeddown = myAS3.Getfielddouble(Base0 + 14);
    // Base1
    Stepportnumber = myAS3.Getfieldint(Base1);
    Dirportnumber = myAS3.Getfieldint(Base1 + 1);
    Limitminusportnumber = myAS3.Getfieldint(Base1 + 2);
    Limitplusportnumber = myAS3.Getfieldint(Base1 + 3);
    Homeportnumber = myAS3.Getfieldint(Base1 + 4);
    // Base2
    Enapinnumber = myAS3.Getfieldint(Base2);
    Enaportnumber = myAS3.Getfieldint(Base2 + 1);
    // Base7
    Axisenabled = myAS3.Getcheckboxstate(Base7);
    Steppinnegate = myAS3.Getcheckboxstate(Base7 + 1);
    Dirpinnegate = myAS3.Getcheckboxstate(Base7 + 2);
    Limitminuspinnegate = myAS3.Getcheckboxstate(Base7 + 3);
    Limitpluspinnegate = myAS3.Getcheckboxstate(Base7 + 4);
    Homepinnegate = myAS3.Getcheckboxstate(Base7 + 5);
    Homedirectionpositive = myAS3.Getcheckboxstate(Base7 + 6);
    Homeautozero = myAS3.Getcheckboxstate(Base7 + 7);
    Backlashenable = myAS3.Getcheckboxstate(Base7 + 8);
    // Base8
    Enapinnegate = myAS3.Getcheckboxstate(Base8);
    // Base10
    Slaveaxis = axis < 3 ? myAS3.Getcomboboxselection(Base10) : "None";
  }

  public void Write(int axis)
  {
    SetBases(axis);
    // Base0
    myAS3.Setfield(Steppinnumber, Base0);
    myAS3.Setfield(Dirpinnumber, Base0 + 1);
    myAS3.Setfield(Limitminuspinnumber, Base0 + 2);
    myAS3.Setfield(Limitpluspinnumber, Base0 + 3);
    myAS3.Setfield(Homepinnumber, Base0 + 4);
    myAS3.Setfield(Homingspeedup, Base0 + 5);
    myAS3.Setfield(Homingvalue, Base0 + 6);
    myAS3.Setfield(Stepsperunit, Base0 + 7);
    myAS3.Setfield(Velocity, Base0 + 8);
    myAS3.Setfield(Acceleration, Base0 + 9);
    myAS3.Setfield(Softlimitnegative, Base0 + 10);
    myAS3.Setfield(Softlimitpositive, Base0 + 11);
    myAS3.Setfield(Compaccel, Base0 + 12);
    myAS3.Setfield(Backlashdistance, Base0 + 13);
    myAS3.Setfield(Homingspeeddown, Base0 + 14);
    // Base1
    myAS3.Setfield(Stepportnumber, Base1);
    myAS3.Setfield(Dirportnumber, Base1 + 1);
    myAS3.Setfield(Limitminusportnumber, Base1 + 2);
    myAS3.Setfield(Limitplusportnumber, Base1 + 3);
    myAS3.Setfield(Homeportnumber, Base1 + 4);
    // Base2
    myAS3.Setfield(Enapinnumber, Base2);
    myAS3.Setfield(Enaportnumber, Base2 + 1);
    // Base7
    myAS3.Setcheckboxstate(Axisenabled, Base7);
    myAS3.Setcheckboxstate(Steppinnegate, Base7 + 1);
    myAS3.Setcheckboxstate(Dirpinnegate, Base7 + 2);
    myAS3.Setcheckboxstate(Limitminuspinnegate, Base7 + 3);
    myAS3.Setcheckboxstate(Limitpluspinnegate, Base7 + 4);
    myAS3.Setcheckboxstate(Homepinnegate, Base7 + 5);
    myAS3.Setcheckboxstate(Homedirectionpositive, Base7 + 6);
    myAS3.Setcheckboxstate(Homeautozero, Base7 + 7);
    myAS3.Setcheckboxstate(Backlashenable, Base7 + 8);
    // Base8
    myAS3.Setcheckboxstate(Enapinnegate, Base8);
    // Base10
    if (axis < 3)
      myAS3.Updatecomboboxselection(0, Base10);                                 // Slaveaxis = "";
  }

  public bool HasSlave()
  {
    return !(Slaveaxis == "None");
  }
}


Tengely csere makró UCCNC 1.2100 utáni verziókhoz:


// ================================================================================================
// Mxxxxx E<axis1> H<axis2>: Full swap axis1 with axis2 (UCCNC 1.2100+)
// ================================================================================================

AxisData Axis1 = new AxisData(AS3);
AxisData Axis2 = new AxisData(AS3);

if ((Evar == null) || (Hvar == null))
{
  exec.AddStatusmessage("Parameters: E<axis_no> H<axis_no>");
  return;
}

int Eint = Convert.ToInt32(Evar);
int Hint = Convert.ToInt32(Hvar);

if ((Eint < 0) || (Eint > 5) || (Hint < 0) || (Hint > 5))
{
  exec.AddStatusmessage("  where axis_no is 0..5 as XYZABC");
  exec.AddStatusmessage("Parameters: E<axis_no> H<axis_no>");
  return;
}

Axis1.Read(Eint);
Axis2.Read(Hint);

if (Axis1.HasSlave() || Axis2.HasSlave())
{
  exec.AddStatusmessage("Cannot swap axes with slave!");
  return;
}

Axis1.Write(Hint);
Axis2.Write(Eint);

exec.Callbutton(btnApplySettings);

exec.AddStatusmessage("Axes " + "XYZABC".Substring(Eint, 1) + " and " + "XYZABC".Substring(Hint, 1) + " swapped");

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

#Events

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

const int btnApplySettings = 168;

// =============== class AxisData

public class AxisData
{
  UCCNC.AS3interfaceClass myAS3;

  int Base0 = 0;
  int Base1 = 0;
  int Base2 = 0;
  int Base3 = 0;
  int Base4 = 0;
  int Base5 = 0;
  int Base6 = 0;
  int Base7 = 0;
  int Base8 = 0;
  int Base9 = 0;
  int Base10 = 0;

  // Base0
  int Steppinnumber = 0;
  int Dirpinnumber = 0;
  int Limitminuspinnumber = 0;
  int Limitpluspinnumber = 0;
  int Homepinnumber = 0;
  double Homingspeedup = 0.0;
  double Homingvalue = 0.0;
  double Stepsperunit = 0.0;
  double Velocity = 0.0;
  double Acceleration = 0.0;
  double Softlimitnegative = 0.0;
  double Softlimitpositive = 0.0;
  double Compaccel = 0.0;
  double Backlashdistance = 0.0;
  double Homingspeeddown = 0.0;
  // Base1
  int Stepportnumber = 0;
  int Dirportnumber = 0;
  int Limitminusportnumber = 0;
  int Limitplusportnumber = 0;
  int Homeportnumber = 0;
  // Base2
  int Enapinnumber = 0;
  int Enaportnumber = 0;
  // Base3..6
  int Enabledelay = 0;
  int Currhilowpinnumber = 0;
  int Currhilowportnumber = 0;
  double Homebackoff = 0.0;
  // Base7
  bool Axisenabled = false;
  bool Steppinnegate = false;
  bool Dirpinnegate = false;
  bool Limitminuspinnegate = false;
  bool Limitpluspinnegate = false;
  bool Homepinnegate = false;
  bool Homedirectionpositive = false;
  bool Homeautozero = false;
  bool Backlashenable = false;
  // Base8
  bool Enapinnegate = false;
  // Base9
  bool Currhilowpinnegate = false;
  // Base10
  string Slaveaxis = "";

  public AxisData(UCCNC.AS3interfaceClass workAS3)
  {
    myAS3 = workAS3;
  }

  private void SetBases(int axis)
  {
    Base0 = axis * 15 + 1;
    Base1 = axis * 5 + 241;
    Base2 = axis * 2 + 463;
    Base3 = axis + 2600;
    Base4 = axis + 2606;
    Base5 = axis + 2612;
    Base6 = axis + 2621;
    Base7 = axis * 9 + 1;
    Base8 = axis + 141;
    Base9 = axis + 347;
    Base10 = axis + 1;
  }

  public void Read(int axis)
  {
    SetBases(axis);
    // Base0
    Steppinnumber = myAS3.Getfieldint(Base0);
    Dirpinnumber = myAS3.Getfieldint(Base0 + 1);
    Limitminuspinnumber = myAS3.Getfieldint(Base0 + 2);
    Limitpluspinnumber = myAS3.Getfieldint(Base0 + 3);
    Homepinnumber = myAS3.Getfieldint(Base0 + 4);
    Homingspeedup = myAS3.Getfielddouble(Base0 + 5);
    Homingvalue = myAS3.Getfielddouble(Base0 + 6);
    Stepsperunit = myAS3.Getfielddouble(Base0 + 7);
    Velocity = myAS3.Getfielddouble(Base0 + 8);
    Acceleration = myAS3.Getfielddouble(Base0 + 9);
    Softlimitnegative = myAS3.Getfielddouble(Base0 + 10);
    Softlimitpositive = myAS3.Getfielddouble(Base0 + 11);
    Compaccel = myAS3.Getfielddouble(Base0 + 12);
    Backlashdistance = myAS3.Getfielddouble(Base0 + 13);
    Homingspeeddown = myAS3.Getfielddouble(Base0 + 14);
    // Base1
    Stepportnumber = myAS3.Getfieldint(Base1);
    Dirportnumber = myAS3.Getfieldint(Base1 + 1);
    Limitminusportnumber = myAS3.Getfieldint(Base1 + 2);
    Limitplusportnumber = myAS3.Getfieldint(Base1 + 3);
    Homeportnumber = myAS3.Getfieldint(Base1 + 4);
    // Base2
    Enapinnumber = myAS3.Getfieldint(Base2);
    Enaportnumber = myAS3.Getfieldint(Base2 + 1);
    // Base3..6
    Enabledelay = myAS3.Getfieldint(Base3);
    Currhilowpinnumber = myAS3.Getfieldint(Base4);
    Currhilowportnumber = myAS3.Getfieldint(Base5);
    Homebackoff = myAS3.Getfielddouble(Base6);
    // Base7
    Axisenabled = myAS3.Getcheckboxstate(Base7);
    Steppinnegate = myAS3.Getcheckboxstate(Base7 + 1);
    Dirpinnegate = myAS3.Getcheckboxstate(Base7 + 2);
    Limitminuspinnegate = myAS3.Getcheckboxstate(Base7 + 3);
    Limitpluspinnegate = myAS3.Getcheckboxstate(Base7 + 4);
    Homepinnegate = myAS3.Getcheckboxstate(Base7 + 5);
    Homedirectionpositive = myAS3.Getcheckboxstate(Base7 + 6);
    Homeautozero = myAS3.Getcheckboxstate(Base7 + 7);
    Backlashenable = myAS3.Getcheckboxstate(Base7 + 8);
    // Base8
    Enapinnegate = myAS3.Getcheckboxstate(Base8);
    // Base9
    Currhilowpinnegate = myAS3.Getcheckboxstate(Base9);
    // Base10
    Slaveaxis = axis < 3 ? myAS3.Getcomboboxselection(Base10) : "None";
  }

  public void Write(int axis)
  {
    SetBases(axis);
    // Base0
    myAS3.Setfield(Steppinnumber, Base0);
    myAS3.Setfield(Dirpinnumber, Base0 + 1);
    myAS3.Setfield(Limitminuspinnumber, Base0 + 2);
    myAS3.Setfield(Limitpluspinnumber, Base0 + 3);
    myAS3.Setfield(Homepinnumber, Base0 + 4);
    myAS3.Setfield(Homingspeedup, Base0 + 5);
    myAS3.Setfield(Homingvalue, Base0 + 6);
    myAS3.Setfield(Stepsperunit, Base0 + 7);
    myAS3.Setfield(Velocity, Base0 + 8);
    myAS3.Setfield(Acceleration, Base0 + 9);
    myAS3.Setfield(Softlimitnegative, Base0 + 10);
    myAS3.Setfield(Softlimitpositive, Base0 + 11);
    myAS3.Setfield(Compaccel, Base0 + 12);
    myAS3.Setfield(Backlashdistance, Base0 + 13);
    myAS3.Setfield(Homingspeeddown, Base0 + 14);
    // Base1
    myAS3.Setfield(Stepportnumber, Base1);
    myAS3.Setfield(Dirportnumber, Base1 + 1);
    myAS3.Setfield(Limitminusportnumber, Base1 + 2);
    myAS3.Setfield(Limitplusportnumber, Base1 + 3);
    myAS3.Setfield(Homeportnumber, Base1 + 4);
    // Base2
    myAS3.Setfield(Enapinnumber, Base2);
    myAS3.Setfield(Enaportnumber, Base2 + 1);
    // Base3..6
    myAS3.Setfield(Enabledelay, Base3);
    myAS3.Setfield(Currhilowpinnumber, Base4);
    myAS3.Setfield(Currhilowportnumber, Base5);
    myAS3.Setfield(Homebackoff, Base6);
    // Base7
    myAS3.Setcheckboxstate(Axisenabled, Base7);
    myAS3.Setcheckboxstate(Steppinnegate, Base7 + 1);
    myAS3.Setcheckboxstate(Dirpinnegate, Base7 + 2);
    myAS3.Setcheckboxstate(Limitminuspinnegate, Base7 + 3);
    myAS3.Setcheckboxstate(Limitpluspinnegate, Base7 + 4);
    myAS3.Setcheckboxstate(Homepinnegate, Base7 + 5);
    myAS3.Setcheckboxstate(Homedirectionpositive, Base7 + 6);
    myAS3.Setcheckboxstate(Homeautozero, Base7 + 7);
    myAS3.Setcheckboxstate(Backlashenable, Base7 + 8);
    // Base8
    myAS3.Setcheckboxstate(Enapinnegate, Base8);
    // Base9
    myAS3.Setcheckboxstate(Currhilowpinnegate, Base9);
    // Base10
    if (axis < 3)
      myAS3.Updatecomboboxselection(0, Base10);                                 // Slaveaxis = "";
  }

  public bool HasSlave()
  {
    return !(Slaveaxis == "None");
  }
}


Leírás itt: [#t218p4728#]