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

svejk

Még eddig sosem volt szükségem a "Park" gombokra, de most jól jönne.
Azt látom, hogy az M200-203 makrókban vannak leírva a funkcióik és gépi koordinátában van értelmezve, de a Park pozícióból hogy tudok visszamenni a tengelyekkel abba a pozícióba ahol a parkolás megkezdése előtt álltam?

svejk

Leírom azt is miért kellene ez nekem, hátha kapok jobb ötletet.
A cél egy sok-sok ezer furatból álló raszteres fúrás.
Maga a G-kód nem túl bonyi, három alprogram, G81-ek, inkrementális mozgások no és persze mindez paraméteresen, mert sokféle raszterméret kell
A helyzetet bonyolítja, hogy menet közben többször kell szerszámot élezni, vagy törés esetén cserélni.

A programot megtűzdelve pár M0-val bármikor meg tudok állni a program közben és tudom onnan folytatni ahol abbahagytam.
(szerencsére az M0 után tudok a DRO-ba is írni és abszolut módban mozogni is)
Tehát ha feljegyzem, hogy hol álltam meg akkor MDI-ban vissza is tudok menni az adott koordinátára majd onnan folytatni.

Csak ezt a kiállást és visszaállást jó lenne egy külső gombra rakni a tévesztés elkerülése végett.

dezsoe

Ha más nem előz meg, akkor holnap megírom, de most kicsit időzavarban vagyok... [#zavart2]

svejk

Akkor ez azt jelenti van megoldás, máris nyugodtan hajtom álomra a fejem. :)
Hátha én is megálmodom, bár ez majdnem kizárt :(

dezsoe

Igaz, hogy tegnapra ígértem, de ez a pár perc még belefér, remélem. :)

Ami beállítandó:


const int MacroNumber = 20001;    // A saját sorszáma: kétállapotú gombot átváltja, hogy látható legyen

const double MachSafeZ = 40.0;    // Safe Z gépi koordinátában

const double DestX = 10.0;        // Cél pozíció gépi koordinátában
const double DestY = 20.0;
const double DestZ = 30.0;

static int MoveLED = -1;          // Állapot jelző LED száma, -1 ha nincs


Nem muszáj kétállapotú gombot rajzolnod, csak praktikus. Ha nem kétállapotú, akkor is működik a makró, de akkor is be kell állítani a saját sorszámát, hogy ne mást kapcsolgasson. A MoveLED megadása is opcionális. Ha nem kell, akkor maradjon -1, egyébként a kívánt LED sorszáma. A LED-nek nem kell feltétlenül kint lenni a képernyőn, de használhatod output triggerhez, hogy egy esetleges távirányítón pilácsoljon a gomb, amivel indítod.

És akkor a lényeg:


// ================================================================================================
// Move v1.0
// ================================================================================================

List<string> codelist = new List<string>();

double zStart = 0.0;
double zMove = 0.0;

switch (MoveState)
{
  case 0:
    if (!exec.GetLED(56) || !exec.GetLED(57) || !exec.GetLED(58))               // XYZ legyen home-olva
    {
      // MessageBox.Show("X/Y/Z was not yet homed!");
      exec.AddStatusmessage("X/Y/Z was not yet homed!");
      return;
    }
    MoveState = 2;                                                              // Mozgásban
    if (MoveLED > 0) exec.SetLED(true, MoveLED);
    AS3.Switchbutton(true, MacroNumber);
    OrigX = exec.GetXmachpos();
    OrigY = exec.GetYmachpos();
    OrigZ = exec.GetZmachpos();
    DistanceMode = exec.actualdistmode;
    ModalMode = exec.actualmodal;
    codelist.Clear();
    codelist.Add("G90");
    zStart = OrigZ;
    zMove = zStart;
    if (zMove < DestZ) zMove = DestZ;
    if (zMove < MachSafeZ) zMove = MachSafeZ;                                   // A legmagasabb Z-n mozgunk
    if (zMove != zStart) codelist.Add("G00 G53 Z" + zMove.ToString("F6"));      // Először a Z, ha kell
    codelist.Add("G00 G53 X" + DestX.ToString("F6") + "Y" + DestY.ToString("F6")); // Majd az X és Y
    if (zMove != DestZ) codelist.Add("G00 G53 Z" + DestZ.ToString("F6"));       // Végül a Z, ha kell
    exec.Codelist(codelist);
    while (exec.IsMoving());
    MoveState = 1;                                                              // Odaért
    break;
  case 1:
    MoveState = 2;                                                              // Mozgásban
    codelist.Clear();
    zStart = exec.GetZmachpos();
    zMove = zStart;
    if (zMove < OrigZ) zMove = OrigZ;
    if (zMove < MachSafeZ) zMove = MachSafeZ;                                   // A legmagasabb Z-n mozgunk
    if (zMove != zStart) codelist.Add("G00 G53 Z" + zMove.ToString("F6"));      // Először a Z, ha kell
    codelist.Add("G00 G53 X" + OrigX.ToString("F6") + "Y" + OrigY.ToString("F6")); // Majd az X és Y
    if (zMove != OrigZ) codelist.Add("G00 G53 Z" + OrigZ.ToString("F6"));       // Végül a Z, ha kell
    codelist.Add("G" + DistanceMode);                                           // Kezdő állapot visszaállítása
    codelist.Add("G" + ModalMode);
    exec.Codelist(codelist);
    while (exec.IsMoving());
    if (MoveLED > 0) exec.SetLED(false, MoveLED);
    AS3.Switchbutton(false, MacroNumber);
    MoveState = 0;                                                              // Visszaért
    break;
  case 2:
    return;
    break;
}

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

#Events

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

const int MacroNumber = 20001;                                                  // A saját sorszáma

const double MachSafeZ = 40.0;                                                  // Safe Z gépi koordinátában

const double DestX = 10.0;                                                      // Cél pozíció gépi koordinátában
const double DestY = 20.0;
const double DestZ = 30.0;

static int MoveLED = -1;                                                        // Állapot jelző LED száma, -1 ha nincs

static int MoveState = 0;                                                       // 0: ki, 1: be, 2: mozgásban
static int DistanceMode = 0;                                                    // Distance mode
static int ModalMode = 0;                                                       // Modal mode

static double OrigX = 0.0;                                                      // Eredeti X, Y és Z
static double OrigY = 0.0;
static double OrigZ = 0.0;

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

svejk

Hoppá-hoppá!

Azért álmaimban rövidebb volt a makro. :)

Nagyon köszönöm [#worship], mindjárt jól meg is tesztelem!

svejk

Haláli, ez nekem nagyon tetszik...

Nem is értem miért nincs alapban ilyen funkció.
A több órán át dolgozó reliefmarásoknál is bizony sokszor félbe kell hagyni a műveleteket, olyankor jegyzetelni kell hol is járt az ember.
Én legalábbis mindig felírtam a gépi koordinátákat, az volt a hót' biztos.

pisti73

Sziasztok!

A "probe" oldal beállításaival kapcsolatosan található leírás? Az új tesztverzióban tudom, hogy van egy angol nyelvű, de egy magyar oldallal jobban boldogulnék.

Köszönöm előre is...

dezsoe

Szia!

A magyar nyelvűt még nem sikerült megírni, de talán egyszer az is sorra kerül. Addig is kérdezz bátran. :)

pisti73

Szia!

Arról lenne szó, hogy a különböző probe funkciókhoz hogyan tudom hozzárendelni a makrókat.
Valahol tuti le van írva, de nem találom...

dezsoe

Ezt nem egészen értem. A probe képernyőn semmihez nem tudsz makrót rendelni, hanem van egy probing nevű plugin, ami mindent elvégez. Ha ez a plugin nincs engedélyezve, akkor a képernyő nem fog semmi értelmeset csinálni, mert nincs mögötte program. A General lapon a Config plugins gombbal feljövő ablakban a probing plugin sorában kapcsold be az enabled pipát, aztán újraindítás.

A probe képernyőn "Warning! Probing plugin is not enabled!" felirat van, ha nem fut a plugin.

Ha már jó, akkor jöhetnek az alapbeállítások. Ami biztos, hogy kell: Fine distance (0,5-1), Fast feed (100-200), Fine feed (50-25), a setup képen a Safe Z és pipa a "Greater Z is safer in G17" sorba.

Ismerkedéshez esetleg a Limit traverse speed (gyors mozgások lassítása) is lehet pipa, írj mellé egy barátságosabb sebességet.

pisti73

Köszi, megyek kipróbálom... :)

pisti73

Köszönöm szépen! Én hibáztam, egy értéket nem írtam be... Ezáltal nem indult az egész...  ezért hittem azt, hogy valami makró hiányozhat....

Nagyon szuperül működi!!!

Köszönöm!

dezsoe


svejk

Dezsoe Bácsi!

Kérhetnék bele egy olyan sort, hogy ha ki van állva szerszámcsere pozícióba akkor a Cycle Start gomb hatástalan legyen?