Jag kan ev att behöva hjälp med assembler programering till AVR. Först av allt så ska jag se till att få elektroniken dit jag vill och få det att funka med en PC som tar hand om allt. Sedan kan det bli så att jag överlåter samplingen till en AVR som sedan ska kommunicera med en PC på lämpligt modernt sätt. (USB, blåtand eller dylikt.)
Jag vet inte riktigt om jag kan påstå att det finns sidor som ger bra hjälp med CNC kod. Men kan du programmera mikros och behärskar något programspråk för vanliga datorer så lovar jag dig att CNC kommer att vara en barnlek för dig.
Nu så kör jag en maskin som har Heidenhain dialog programering vilket är väldigt enkel. Emellanåt så programerar jag lite ISO och är även utbildad i ISO. ISO språket är mera universiellt med Heidenhains dialog är överlägset till de små serier vi gör då vi programmerar till 99% direkt vid maskinen.
Grundläggande är att man går från punkt till punkt med linjära och cirkulära rörelser.
Exempel heidenhain
TOOL DEF 1 L+0.000 R+31.5
TOOL CALL 1 Z S800
L Z+200 RO F9999 M03
L X+40 Y+20 R F M
L Z-20 R F M
L Y-10 RL F M
L X-2800 R F500 M08
L Y+20 R0 R0 F9999 M09
L L+200 R F M
STOP M05
Tool def är verktygs definitionen med längd o radie angiven
Tool call kallar på ett verktyg, varvtal anges under S och den verktygsparallella axlen anges, här Z.
L står för linjär rörelse
R är radiekompensering vänster, höger eller ingen 0
F är matningen i mm/min. 9999 den den snabbaste i det här fallet, dvs transport. Fräser gör vi med 500 här.
M koder finns det en hel uppsjö av och de är lika för såväl ISO som heidenhain med vissa undantag. De mest vanliga är följande. Det finns nästan 100st olika men många funkar bara i vissa maskiner.
M02=programslut
M03=Spindelstart medurs
M04=Spindelstart moturs
M05=spindelstopp
M08=kylvatten på
M09= kylvatten av
Vill man lägga in en cirkulär rörelse så måste man ange CC som stör för cirkelcentrum. ex CC X+0 Y+0 och sedan positioneringen C X+20 Y-20 DR+ R F M som då säger till maskinen att gå cirkulärt till slutkordinaterna med rotations rikting +, (DR+)
Man måste inte programera i absoluta värden som i detta exempel. Man kan göra detta i polära rörselser, inkrementala rörelser för att nämna de mest vanliga.
För att lägga in en loop eller kalla in en rutin så anger man en LBL o tilldelar den ett nummer. Labeln avslutas med LBL 0. För att kalla på labeln så har man kommandot CALL LBL 1 REP 10 för att kalla label1 10 ggr. Använder man en inkremental rörelse i ex X o sedan borrar ett hål o sedan har det i en label man upprepar så räcker det med några få block för att borra en hel rad med hål på ett fåtal programrader. Lägger man sedan hela klabbet utom borrcykeln i en label så kallar man in samma label för att gänga samma hål.
Hela strukturen blir fruktansvärt lik basic. Kan man det så har man 99% gratis.
Men jag insåg här att ju mera jag beskriver desto mera kommer jag på. Det här är en liten bit av språket och det krävs nog en hel sajt för att ta upp alltihop.
Ni som bygger elektronik o kan programera PC kan enkelt på några veckor lära er att fixa denna programering långt mycket bättre än de flesta CNC operatörer. När jag gick AMu då det inte fanns jobb längre inom elektronik längre här i stan så hade jag det ganska lätt för mig tack vare tidigare erfarenheter av Basic. Inom ett par veckor så gjorde jag program som våra lärare hade problem med att fixa. Att man sedan haft mycket trigonometri i el matten gjorde inte saker sämre. Idag så är jag den som fixar den biten bäst utan hjälp av CAD. Ofta så ritar dom fel i caden och när dom kommer ut med kordinaterna så har jag redan löst det korrekt med miniräknaren.
Fråga på om det är något särskilt i just den biten du undrar över. Dock så är jag inte så värst färsk i ISO idag så makron under ISO typ Fanuc har jag totalt glömt bort. Det grundläggande fixar jag dock o lite til.
Mikael