Prompt op G code commando voor manuele as

LinuxCNC kan hier besproken worden

Moderator: Moderators

Plaats reactie
Damocles
Berichten: 1545
Lid geworden op: 27 aug 2007 14:12
Locatie: Brussel
Contacteer:

Prompt op G code commando voor manuele as

Bericht door Damocles »

Hallo,

Ik had graag de volgende functie in linuxcnc geimplementeerd:
Wanneer een bepaalde G code voorbij komt, bvb G01 A <aa>, waarbij <aa> dan een getal is dat in de gcode staat, dan zou ik willen de machine in pause gooien en een dialoog laten verschijnen die vraagt om de A as manueel te verplaatsen naar <aa>. Wanneer men op OK klikt dan gaat de machine verder. Een beetje zoals de functie van het manuele toolchange script dus.

Het dialoog deel en zo zie ik wel zitten, alleen heb ik zo niet direct kunnen vinden hoe je de interpretatie van een bepaalde G code kan aanpassen. Ik denk dat dit ook niet zo eenvoudig kan. Iemand een idee in welke richting ik best kan gaan zoeken? Liefst met een macro of python script dat naast de gewone besturing loopt zonder daar in te moeten gaan prullen zodat dit makkelijk aan en uit te schakelen is. Dat de traject planner dan ook echt een pad genereerd naar pos A <aa> maakt mij niet zo veel uit, die is dan gewoon hardwarematig niet aangesloten.

Klopt het dat het afhandelen van de G code naar feed commandos hier gebeurd?:
Lijn 172 in https://github.com/LinuxCNC/linuxcnc/bl ... emodule.cc

Code: Selecteer alles

void STRAIGHT_FEED(int line_number,
                   double x, double y, double z,
                   double a, double b, double c,
                   double u, double v, double w) {
    _pos_x=x; _pos_y=y; _pos_z=z; 
    _pos_a=a; _pos_b=b; _pos_c=c;
    _pos_u=u; _pos_v=v; _pos_w=w;
    if(metric) { x /= 25.4; y /= 25.4; z /= 25.4; u /= 25.4; v /= 25.4; w /= 25.4; }
    maybe_new_line(line_number);
    if(interp_error) return;
    PyObject *result =
        callmethod(callback, "straight_feed", "fffffffff",
                            x, y, z, a, b, c, u, v, w);
    if(result == NULL) interp_error ++;
    Py_XDECREF(result);
}
Ik weet alleen niet of ik daar wil in gaan prutsen, maar als er niemand een optie weet op een hoger niveau durf ik er mij wel aan wagen.

Een alternatief waar ik aan denk zou zijn om voor of na elke G01 A <aa> lijn een user M-code op te roepen. Dan zou ik kunnen bij het inladen van een G code een find kunnen doen op G01 A en G00 A en na elke lijn die M code er in steken. Dat is wellicht de makkelijkste optie. Ik ben echter wel benieuwd of iemand een idee heeft om de eerste optie aan te pakken?

Groeten

Julien
Wanneer iets perfect dezelfde maat heeft, dan gebruik je geen nauwkeurig genoeg meettoestel.
Gebruikersavatar
DaBit
Donateur
Berichten: 11041
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Prompt op G code commando voor manuele as

Bericht door DaBit »

Je kunt G-codes remappen en uitbreiden: http://linuxcnc.org/docs/html/remap/remap.html

Wat je alleen niet kunt is de ingebakken G1 uitbreiden. De 'dichtstbijzijnde' zou dan G1.1 zijn, maar als je code CAM-gegenereerd is dan is dat nog niet al te eenvoudig. En je gaat jezelf in de vingers snijden, want die G1's worden royaal voor de eigenlijke beweging uitgevoerd (lookahead). Geen idee of je van die G1.1 een queuebuster kunt maken, dus een plek waar de lookahead stopt.

Dan zou simpelweg een M100 ofzo voor of na die A-as beweging het handigste zijn, kun je het ook simpelweg in 3 regels bash script oplossen (M100-M199 kun je scripts aan laten roepen).

Andere optie die volgens mij moet kunnen: in HAL detecteren dat de A-as beweegt, en dan de machine op pauze zetten en een message laten zien. Praktisch gezien is detecteren dat-ie stopt met bewegen het handigste denk ik; anders haal je de machine van pauze af en krijg je weer je venstertje. Dat zou dan iets moeten zijn van 'als axis.3.joint-vel-cmd was geen nul en nu wel dan setp halui.program.pause true'.
Dan werkt het helemaal transparant.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Damocles
Berichten: 1545
Lid geworden op: 27 aug 2007 14:12
Locatie: Brussel
Contacteer:

Re: Prompt op G code commando voor manuele as

Bericht door Damocles »

Perfect antwoord! Bedankt!

1) Remappen lijkt me een handige functie maar zoals je aangeeft wellicht hier minder bruikbaar.

2) Voor die lookahead had ik al schrik, goed dat je mij er nog eens op wijst. Ik dacht dat de msg prompt ook wel op hetzelfde niveau zou worden uitgevoerd en sequentieel, waardoor die nooit vroeger zou kunnen komen dan de G1 A beweging (welke hardwarematig niet aangesloten is).
Maar daar ben ik dan misschien mis. Dat er een vertraging zit tussen het lezen van de G code en de echte beweging is geen probleem, zolang die dialog msg (en de pauze) niet voor de beweging in de andere assen komen. Ik vermoed dat hiervoor zo een quebuster nodig is, wat dan misschien niet mogelijk is.

3) Die M100 leek me ook al het eenvoudigste.

4) Das een hele mooie en misschien wel het beste compromis tussen een mooie oplossing en een doeltreffende. Daar ga ik binnenkort zeker mee aan de slag.

Nog eens bedankt.
Wanneer iets perfect dezelfde maat heeft, dan gebruik je geen nauwkeurig genoeg meettoestel.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12054
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Prompt op G code commando voor manuele as

Bericht door hugo stoutjesdijk »

Ik zie het misschien te simpel, maar ik zou in de PP gewoon M0 bij de A zetten.
MO is program halt, stopt koeling en spindel en gaat met cyclus start weer verder.
Eventueel de A met waarde ook nog tussen teksthaken, dan heeft de machine niet het idee dat ie die as moet willen bewegen, maar dat is misschien geen probleem.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Damocles
Berichten: 1545
Lid geworden op: 27 aug 2007 14:12
Locatie: Brussel
Contacteer:

Re: Prompt op G code commando voor manuele as

Bericht door Damocles »

Die beweging (die er toch niet is), is op zich geen probleem. Maar die haakjes maken het wel weer fraaier.

Ik had dit echter liever in de machine besturing ingebakken en niet in de CAM. Maar het is zeker een optie.

Ik had ook graag telkens die waarde voor de A as in de dialoog bericht gestoken zodat daar duidelijk op komt "beweeg A naar ... druk OK indien klaar". Iets in die zin. Misschien kan ik wel een M100 in die A steken van de PP en dan in die M100 dat hij moet gaan kijken waar de A as staat op het ogenblik dat de msg box wordt opgeroepen en die waarde dan tonen. Maar voorlopig vind ik dat in de HAL doen nog interessanter.
Wanneer iets perfect dezelfde maat heeft, dan gebruik je geen nauwkeurig genoeg meettoestel.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12054
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Prompt op G code commando voor manuele as

Bericht door hugo stoutjesdijk »

Die Msg box kan toch ook via G-code ? ( dus door de PP in je programma geschreven worden )
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Plaats reactie