Parametrisk programmering ( engelsk parametrisk programmering , även makroprogrammering ) i bearbetning av numeriska styrsystem (CNC) för teknisk utrustning är ett tillvägagångssätt för att öka programmeringsnivån , implementerat genom att skapa specialiserade språk eller tillägg till befintliga programmeringsverktyg.
Historiskt sett är det första programmeringsspråket för CNC-verktygsmaskiner, G-code , i sig ett språk för att beskriva cyklogram för ett bearbetningsverktygs rörelse, slå på/av spindeln, tillföra skärvätskor (kylvätska) och andra åtgärder och har inte medel för strömkontroll av bearbetningsprocessens tillstånd. Till exempel, om ett bearbetningsverktyg går sönder eller det inte finns någon kylvätska, kommer cyklogrammet som beskrivs av G-koden att fortsätta värdelöst eller exekveras farligt för utrustningen tills operatören ingriper eller G-koden tar slut. För att eliminera denna betydande nackdel med G-koden utvecklades parametriska programmeringsspråk.
Dessa språk har mycket gemensamt med konventionella högnivåprogrammeringsspråk som Fortran , C. Den största fördelen gentemot G-kod är tillgängligheten av villkorliga greninstruktioner/operatörer . Denna förlängning låter dig ändra bearbetningsförloppet när processtillståndet ändras, till exempel stoppa bearbetningen med ett larm när en slitagesensor eller verktygsbrott utlöses.
En ytterligare fördel med parametrisk programmering för CNC-maskiner är möjligheten att organisera komplexa beräkningar av verktygets koordinater och dess rörelser för bearbetning av krökta ytor som specificeras matematiskt i form av 3D-splines eller Bezier-ytor .
Tillverkare av styrsystem använder parametrisk programmering som en förlängning av G-kod . Det kan jämföras med datorprogrammeringsspråk som Basic, men det kan nås på nivån G-funktioner (koder). Till skillnad från CNC-programmering utökar parametrisk programmering möjligheterna jämförbara med objektorienterad programmering. Med sina CNC-styrsystem blir det möjligt att beräkna varians, använda logiska operatorer, arbeta med verktygspass, manipulatorrörelser, förmågan att organisera cykler, välja efter villkor, hoppa, arbeta med subrutiner, element som utövar full kontroll över CNC:n är tillagd - tillgång till systemvariabler och celler i det elektroautomatiska programmet, möjligheten att skapa dina egna G-koder och funktioner som fullt ut implementerar kontrollen av alla maskinkomponenter. Det är möjligt att komma åt CNC-parametrar som lagrar information om verktyget, positionen för arbetskroppar, manipulatorer, koordinatsystem, G-kodvärden för styrprogrammet och fel. Med hjälp av parametrisk programmering är det möjligt att utveckla interaktiva styrprogram. Liksom datorprogrammeringsspråk finns det flera versioner av dem i parametrisk programmering: Custom Macro, User Task (Okuma), Q Routine (Sodick), Advanced Programming Language (APL G&L). Till exempel gör makroprogrammeringsspråket FMS-3000 från en delmängd av Basic-språket det möjligt att organisera ytterligare informationsfönster, ett parameterspårningssystem, kontrolllägen och loggning av bearbetningsprocesser. Sådana program körs i bakgrunden och på fritiden från alla andra uppgifter, med en tung belastning, kan de tillfälligt avbryta sitt arbete. Genom att använda sådana möjligheter har du ett av de mest effektiva sätten att styra en verktygsmaskin, en robot, ett CNC-system.
Ett program skrivet med hjälp av ett makroprogrammeringsspråk har en liknande G-kodstruktur för ett styrsystem. Den strukturella enheten är ramen. En ram är en sekvens av tecken i ett programmeringsspråk. Ramelementet är ett ord som består av en adress och ett numeriskt värde eller en variabel, en global variabel.
Som ett exempel på ett makroprogram kan du skriva en G200-funktionssubrutin för FMS-3000-styrsystemet och använda denna G-funktion som en verktygsrebound och övergång mellan övergångar, som i fallet med en borr som flyttar från en koordinat till en annan.
Funktionsegenskaper:
1. Initiala förhållanden.
2. Studsa till W (vid en enkel studsning) eller gå ut till verktygsbytespunkten och följ vidare.
3. Val av verktyg som tar längdkorrigeraren.
4. Välj G54 G55 G56 G57 G58 G59.
5. Bestäm rotationsvinkeln för del A
6. Välj M3 M13 M4 M14.
7. Välj antalet varv S.
8. Flytta verktyget till positionen i XY (med förskjutning H).
a=(_a+getparameter(65)) | vi definierar parametern A (rotationsvinkel) som summan av en global variabel (given permanent, rotationsvinkel) och en lokal variabel (returnerad från funktionen, rotationsvinkel) |
g=getparameter(71) | definiera parameter (välj punkt G54 G55 G56 G57 G58 G59) G som en variabel (returneras från funktion) |
m=getparameter(77) | definiera parameter (ytterligare funktioner) M som variabel (returneras från funktion) |
s=getparameter(83) | definiera parametern (antal varv) S som en variabel (returneras från funktionen) |
t=getparameter(84) | definiera parametern (verktygsnummer) T som en variabel (returneras från funktionen) |
x=getparameter(88) | definiera parametern (koordinaten) X som en variabel (returneras från funktionen) |
y=getparameter(89) | definiera parametern (koordinaten) Y som en variabel (returneras från funktionen) |
w=getparameter(87) | definiera parametern (avvisningsvärde) W som en variabel (returneras från funktionen) |
tt=getdatacadr(134) | variabel tt returnerar värdet för föregående (föregående verktygsnummer) |
Till skillnad från Custom Macro (Fanuc styrsystem) måste funktionsparametrarna i FMS-3000 definieras i början av subrutinen.
_t=t | för att organisera arbetet med efterföljande funktioner, det nuvarande verktyget T, definierar vi det som en global variabel |
hh=t+100 | ställ in offsetnumret för verktygslängden |
Uttrycket hh=t+100 är en tabell över offset från 1 till 200. Vi delade upp alla offset i två delar från 1..100 offset för verktygsdiameter, från 101..201 för verktygslängd. Verktyg T1 har ett diameteroffsetnummer på 1 och ett längdoffsettal på 101. Verktyg T2 har ett antal 2 och ett antal 102 osv.
om paramactive(71)=0 då g=_g | om G54 G55 G56 G57 G58 G59 inte anges i funktionen, kommer punktvalet att bestämmas från den globala variabeln |
Om G200-parametern inte anges i G200-funktionen, kommer punkten att tas som standard från den globala variabeln i G201-funktionen.
G37X0Y0A0 | avbryt den tidigare inställda rotationsvinkeln |
om paramactive(87)=0 så gå till 500 | om parametern W (rebound) inte är inställd, gå till verktygsbytespunkten, gå till etikett 500 |
N100G1F2000G17G40G80G91Zw | om parametern W (rebound) inte är inställd, gå till verktygsbytespunkten, gå till etikett 500 |
G32M1 | tekniskt stopp |
G90GgG37X0Y0Aa | ställ in rotationsvinkeln |
till 600 | om funktionen är inställd på enkel rebound (ingen verktygsbyte), hoppa till markering 600. |
Återgå till verktygsbytespunkten.
N500M9 | av kyl- |
G53G1F2000G90G40G49G80Z0 | utgång till verktygsbytespunkt |
M5 | av vänder |
Verktygsväxlingsfunktionerna på varje maskin har sina egna egenskaper beroende på antalet verktyg i magasinet. Till exempel när det finns många verktyg används ibland algoritmer som ordnar verktyget i en slumpmässig ordning för att inte binda verktyget till vissa celler och minska ersättningstiden. Av stor betydelse är utformningen av verktygsbytesmekaniken, olika typer av manipulatorer, skjutreglage etc.
rem S100 | växla hastighetsområdet för manuellt verktygsbyte |
N502G32M0 | tekniskt stopp |
hh1=getsystemdata(1000+hh) | läs av längdkorrigerarens värde |
G1G91G43HhhZ-hh1F2000 | jobbar på korrigeraren |
G90GgG37X0Y0Aa | korrektorn tas, vi räknar ut rotationsvinkeln |
om paramactive(83)=0 så gå till 600 | Om parametern S (varv) inte är inställd, hoppa över bildrutor och gå till etikett 600 |
om paramactive(77)><0 då m= | standardhjälpfunktionen M kommer att vara M3 |
N520MmSs | definiera ytterligare funktioner M och S |
Tt | välj verktygsnummer |
N600if paramactive(88)=0 fick sedan till 9999 | om åtminstone en av positionens XY-koordinater inte är inställd, går vi inte till positionen, hoppar över ramar och går till 9999 |
om paramactive(89)=0 så gå till 9999 | om åtminstone en av positionens XY-koordinater inte är inställd, går vi inte till positionen, hoppar över ramar och går till 9999 |
G1F2000G1X(x+1)Y(y+1) | vi anger prepositionen, vi ger en interferenspassning längs XY 1mm |
F100G9XxYy | exakt utgång till XY-position med kontroll |
N9999G1F2000 | ställ in startvillkoren för konturen |
G32 | vi saktar ner beräkningen av programmet |
M99 | slut på funktion, återgå till programmet |