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

De most tényleg... nem ad plusz szolgáltatást a 2 végállás + 1 Home kapcsoló az egy szem árvához képest?
Vagy csak -sajnos nem először :(- én vagyok béna, értetlen?

A Override LED-el meg majd meghívatok egy makrot, hogy vegye le a JOG %-ot alacsonyra.

svejk

Az iparban egyébként valóban így van, hogy ha limitre fut valami akkor ott is van egy override kapcsoló vagy nyomógomb, esteleg egy bitet kell átállítani.
Az is igaz, hogy ott is általában csak egyszerűen sorba van kötve a két végállás kapcsoló.
De a nagy gépeknél nagyon ritkán fordul elő ilyen eset.
(Bár épp nemrég volt egy szíjszakadás egy eszterga X szánjánál)

De ugye hobbyban kikapcsolt állapotban sokszor eltologathatóak a szánok akarva vagy akaratlanul így itt ez gyakoribb hiba.

ium8w94xp

Viccnek szántam..amit korábban használtam az külön figyelte. Ez most nem. Megszoktam, nincs is külön pin-re téve. Engem mondjuk már nem zavar.

szf

és ha beteszel egy gombot ami mozgat egy relét ez majd
imitálja , hogy a végállás OK. illetve csak azt az irányt engedélyezi ahogyan le tudsz jönni a kapcsolóról.

dezsoe

No. Több megszakítással, de csak befejeztem. Mxxxxx E<egyiktengely> H<másiktengely> hívással a két tengely minden adatát átcseréli. A tengelyek 0..5-ig az XYZABC-nek felelnek meg. Ha rányomsz a Save settings-re, akkor el is mented a megcserélt tengelyeket, úgyhogy csak akkor nyomd, ha tényleg kell. Mondjuk, vissza tudod cserélni, tehát nagy baj nincs, csak legfeljebb legközelebb csodálkozol, hogy miért az a tengely megy és hova... :)


// ================================================================================================
// 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 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;
  // 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;
    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);
    // 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
    myAS3.Updatecomboboxselection(0, Base10);                                   // Slaveaxis = "";
  }

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

ium8w94xp

Király vagy...köszi. Délután meglesem.[#worship]

dezsoe

Csak késő volt már az este: benne maradt pár dolog. Akkor helyesen:

// ================================================================================================
// 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
    myAS3.Updatecomboboxselection(0, Base10);                                   // Slaveaxis = "";
  }

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

ium8w94xp


svejk

No, oké túltettem magam a dolgon jó ez így ahogy van, majd megszokom/megoldom.
Csak néha úgy kétségbe tudok esni... :(

Egy a lényeg, ne vesszen el a szoftverfejlesztők lendülete. :)

ium8w94xp

Jajj, de babán működik elsőre.
Na mindjárt tolok élesbe egy égetést pl :)
Köszönöm a segítséget.[#worship]

ium8w94xp

Pont ilyen makrót akartam én is írni...csak hát én hülye vagyok hozzá :)

dezsoe

Muszáj neki működni, nem szoktam tesztelés nélküli cuccot felrakni. :) Pláne ilyet, amivel sokat lehet ártani... Azért, vígasztaljon a tudat, hogy nem elsőre működött, volt néhány vakvágány... :)

xkbv3nx0d

Lenne egy kérdésem...
nem tudom használ-e valaki kínai Huanyang VFD-t marómotorhoz.
Ehhez ugye létezik 2-3 plugin Mach3 alá amivel szoftveresen vezérelhető mod-buson keresztül.
Ezt lehetne adaptálni valahogy uCNC-hez is?
Szükségem lenne egy ethernetes vezérlőre de ez még visszatart...

ium8w94xp

Hát elsőre lövésem se volt hova kell a 0 és 3. Hiába olvasgattam a makrót. Aztán megfejtettem. Nagyon jól vált. Majd szerintem gombod teszek fel. X-A és A-X felirattal. Ne kelljen beírni se. Köszönöm újfent ;)

ium8w94xp

Úgy tudom van uccnc-hez is pluginja.