Sida 1 av 3
"Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 10:13:38
av Tottish
Hej!
Håller på att komma på något vettigt sätt att köra min laser i Lillsyrran men har stött på patrull. Problemet är acceleration. Jag vill kunna göra enklare "bilder" med några få färgtoner men det är väldigt svårt att få en homogen färg på en given yta då fräsen måste accelerera nära kanter/hörn och således lämnar lasern 'bromsspår' där.
Har kommit fram till vad jag tror är den bästa lösningen: Lasern får helt enkelt gå över hela ytan där bilden ska brännas (och tillräckligt långt utanför för att komma upp i angiven hastighet) och slå på lasern över de omåden där det skall vara brunt/svart. Precis som en bläckstråleskrivare. Tänkte försöka lösa detta genom att köra lite enkla Word-macron på t.ex. ArtCAM-genererad G-kod.
Frågan är dock: Går det att göra en gkod som t.ex. beordrar en förflyttning på 100mm i X-led, togglar en pinne i paralellporten efter 40mm och togglar igen efter 60mm för att sedan stanna in efter de 100millimetrarna? Allt i ett svep utan avbrott på X-rörelsen alltså.
Kan väldigt lite om G-kod men vet att många andra här är kunniga. Vad säger ni? Går det att göra en sådan här G-kod eller måste man kika på andra lösningar?
MVH
/Tottish
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 10:32:22
av lgrfbs
En tanke kan vara:
G1 Y50 (rör sig
M5 (slår av lasern
G1 Y60 (rör sig
eller
G1 Y50
G1 Y60 M5
När man kör programet kan det upplevas som att lasern nu stängs av under färd.
M5 är spindel stopp
M8/M9 är Kylvatten På/Av
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 10:37:18
av Meduza
Ovanstående bör fungera, sålänge styrprogrammet fungerar som det ska så ska det inte vara någon paus mellan två rörelser i G-kod utan det ska flyta omedelbart.
Dvs, en rörelse till punkten där du ska sätta på lasern, sätt på lasern, fortsätt rörelse till nästa punkt.
Sen kan du göra samma sak men där du dessutom sätter Spindle-speed till att kontrollera PWM på lasern

Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 10:50:42
av Tottish
Hmmm, fast om jag ger den ett kommando "gå till X100" så har den ju inräknat i det kommandot en stoppsträcka där den bromsar in. Annars skulle det ju bli knas om nästa rad var en rad som säger "gå till Y20" eftersom den då skulle behöva "tvärstanna" (EDIT: för den sneglar väl inte på nästkommande rad?). Det är just den här inbromsningen (och sedan accelerationen efter att lasern slagits av/på) som jag inte vill ha med eftersom det resulterar i en mörkare ton över inbromsnings/accelerations-sträckan då exponerings-tiden blir längre. Jag menar inte att den stannar upp ett slag mellan raderna utan bara att den bromsar in/accelerarar.
Vet inte om jag missförstått er eller om något är felinställt men med mitt EMC2 så flyter i alla fall inte fräsen med en konstant hastighet genom en ett stycke i stil med lgrfbs' exempel.
Jag vill alltså ha konstant hastighet i X-led över hela sträckan.
MVH
/Tottish
EDIT: Meduza, PWM är redan fixat... tror jag, kan inte testa så bra än. =)
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 11:14:55
av H.O
I Mach3 så finns det en funktion där man kan få frekvensen på spindelns S/D signal att variera som en funktion av aktuell hastighet. Dvs. du får en signal vars frekvens står i proportion till maskinens aktuella hastighet. Det lär vara anpassat för just lasrar. Kanske finns något liknande i EMC2? (Är kanske till och med det Meduza menar?)
En annan lösning kanske kan vara att använda den inbyggda soft-PLC'n i EMC2 och med hjälp av den "titta på" aktuell position och på så vis toggla utgången för lasern 'on the fly'.
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 11:36:57
av Tottish
H.O:
Det låter ju som en vettig funktion om det nu är så att laserns effektkurva står i direkt proportion till DutyCyclen vilket den förmodligen inte gör men det skulle kanske vara tillräckligt för ett acceptabelt resultat.
Visste inte om att det fanns en soft PLC i EMC2 men det borde man ju kunna utnyttja annars om det är tillräckligt bra responstider och dylikt. Ska kolla på det men jag finner det svårt att hitta bland all EMC-dokumentation och inte kan jag påstå att jag hittat något bra forum för EMC-frågor heller. Svårt att få bra svar på CNCzone t.ex.
Tror du att det går att programmera/ge kommandon till PLCn från G-kodsfilen? annars känns det som att det kan bli tämligen bökigt att få till.
Tack för hjälpen!
MVH
/Tottish
EDIT:
H.O: Har du något namn för den där PWM/hastighet funktionen? Så man vet vad man ska söka på...
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 12:19:33
av H.O
Hej,
Nja, i Mach3 kallas funktionen för
Laser Frequency Mode och finns tillgänglig ihop med övriga spindel-inställningar. Det är alltså frekvensen och inte duty-cyclen som ändras - i alla fall om man får tro namnet. Men vad det kan heta i EMC2 vet jag inte.
Jag har nog sämre koll på EMC2 än vad du har eftersom jag inte använder det och jag vet inte vad man kan och inte kan göra med den inbyggda soft-PLC'n. I Mach3 så kan man t.ex "titta på" värdet i DRO'n för X-axeln, jämföra det värdet med ett annat värde (fast eller ett som du anger genom en att mata in ett värde) och sätta en utgång beroende på resultatet av den jämförelsen. Borde gå att göra samma sak i EMC2...kanske
Jag hittade ett kapitel om EMC2's PLC i
Integrator manual. Det verkar gå att göra en hel del så jag vore förvånad om inte ovanstående är genomförbart. Därmed inte sagt att det är vare sig den enda, enklaste eller bästa lösningen.
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 12:49:32
av Tottish
Jo, det var namnet i MAch3 jag sökte så jag kunde leta efter liknande i EMC2, tack för det. Ska kolla upp om det finns någon motsvarighet i EMC2 fast som styr DutyCyclen då jag inte riktigt ser hur frekvensen skulle vara intressant för mig i alla fall.
Men om vi börjar med vanlig G-kod. Är det uteslutet att åstadkomma något dylikt där? Måste alla axlar stå still för att man ska kunna exekvera en(nästa) rad? Vore ju så klart det enklaste om det gick att lösa i G-kod men om det strider mot NGC274(eller vad standarden heter) så kan man ju glömma det i alla fall.
Har också hittat ClassicLadder i EMC2 dokumentationen men det verkar vara en liten vetenskap att sätta sig in i... Som vanligt alltså.. =)
"Därmed inte sagt att det är vare sig den enda, enklaste eller bästa lösningen."
Väl talat, det vet man fanimej aldrig.
MVH
/Tottish
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 13:25:06
av H.O
Nej, vad JAG vet går det inte att sätt utgångar "on the fly". Koden exekveras sekventiellt, vissa I/O sätts innan rörelse påbörjas (M3 t.ex) och andra efter rörelse (som M5) (om dom finns i samma block som G0, G1 etc).
M62-M65 KANSKE kan vara nått, är lite osäker på vad dom menar:
12.10 M62 to M65 Output Control
To control a digital output bit, program M- P-, where the M-word ranges from 62 to 65, and the P-word ranges from 0 to an implementation-defined maximum- currently this is 3 in EMC2. These outputs are not changed in realtime and thus should not be used for timing-critical applications.
M62 Turn on digital output synched with motion
M63 Turn off digital output synched with motion
M64 Turn on digital output immediately
M65 Turn off digital output immediately
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 13:57:22
av Tottish
Jag kikade lite på de där (M62-M65) förrut men beslöt att de inte dög då timingen här är relativt känslig och PWM nog blir svårimplementerat med de där kommandona.
Hittade den här:
http://wiki.linuxcnc.org/cgi-bin/emcinf ... zedOutputs i EMC-wikin.
Verkar som att någon annan haft samma problem fast önskade analog utgång. Kan dock inte se att någon lösning implementerats. Synd.
MVH
/Tottish
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 15:26:32
av Mattias Hellore
Den lilla erfarenhet jag har av G-kods programmering är att kommandona sätts rad för rad.
Axiella förflyttningar kan ske med fler än en axel per rad men S alltså varvtalet är statisk.
Matningen F är också statisk.
Det är vad jag vet men gängning o sådana kommandon har ju andra parametrar att gå efter.
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 15:56:56
av Tottish
Efter lite korrespondans på CNCzone så kommer jag fram till följande:
Följande kodblock blir en jämn rörelse med konstant hastighet från aktuell position till X30:
G1 X10
X20
X30
Detta borde väl enligt min tidigare tes betyda att EMC kikar på nästa rad i förväg? Inte intressant här egentligen, men det här fungerar i alla fall.
Introduserar man däremot kommandon som M5/M3 i det här kodblocket så stannar fräsen till vid inläsning av den raden. Har provat att skriva M3-kommando på samma rad som X-kommando och på egen rad, ingen skillnad.
MEN
Lägger man in en rad M62-M65 i blocket så flyter det faktiskt på helt smooth! Man anar en liten dipp i hastigheten men det märks förmodligen inte på resultatet. Att dessa inte skulle användas i timing-kritiska applikationer; vi får väl se om det kan funka ändå.
Bra och dåliga nyheter alltså. Det funkar förmodligen men verkar bli svårt att implementera PWMen. Någon som får några nya idèer av detta? Jag tänkte att man skulle ju kunna ställa in PWMen i början på varje rad eller något och sedan sköta timingen med M62-kommandot men det skulle väl inte hjälpa upp maskin tiden nämnvärt ändå så...
Skulle också kunna ha typ tre manuellt inställbara hårdvaru PWM-moduler som man slår av och på med tre pinnar och på så vis får tre färgtoner men näääh... måste gå att fixa i mjukvaran på någe vis tycker jag.
MVH
/Tottish
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 16:20:46
av Walle
Meduza skrev:
Sen kan du göra samma sak men där du dessutom sätter Spindle-speed till att kontrollera PWM på lasern

Är det inte mer logiskt att Z-axeln styr PWM på lasern? Z-axel = fräsdjup ≈ laserstyrka tänker jag

Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 16:24:24
av POS
Z-axeln vill man ju ha rörlig så man inte behöver ställa djupet manuellt och man kanske till och med vill köra på saker som inte är plana.
Bättre att styra med spindle-speed tycker jag.
Re: "Göra två saker samtidigt" i G-kod
Postat: 16 mars 2009, 16:54:39
av Meduza
Fast annars är det inte en så dålig ide, man skulle kanske kunna använda en virtuell fjärde axel av något slag till att kontrollera laserstyrka?
Problemet blir att om man gör en X10A50 så kommer styrkan "rampas" upp på lasern... så man behöver då göra en rörelse som är typ
X0.00001 A30
och sen en
X10
för att inte få upprampning på varje ställe...