26
CNC-teknik HAAS makroprogrammering HAAS_Makroprogrammering.doc OSP 03-02-03 Side 1 af 26 Aalborg tekniske skole Introduktion .......................................................................................................................... 2 Undersøgelser...................................................................................................................... 3 Aliasing................................................................................................................................. 4 M kode aliasing .................................................................................................................... 5 Alfabetisk adressering .......................................................................................................... 5 Alternativ alfabetisk adressering .......................................................................................... 5 Macro konstanter ................................................................................................................. 6 Macro variabler .................................................................................................................... 6 Variabel brug ........................................................................................................................ 6 Lokale variabler .................................................................................................................... 7 System variabler .................................................................................................................. 8 VARIABLER ANVENDELSE ......................................................................................... 8 SYSTEM VARIABLER I DYBDE ........................................................................................ 10 Værktøjs offsets ................................................................................................................. 10 Programmerbare meldinger ............................................................................................... 11 Timere ................................................................................................................................ 11 System overrides ............................................................................................................... 11 Sidste mål position ............................................................................................................. 13 Aktuel maskin koordinat position........................................................................................ 13 Aktuel arbejds koordinat position ....................................................................................... 13 Aktuel skip signal position .................................................................................................. 13 Værktøjs længde kompensation ........................................................................................ 13 Offsets ................................................................................................................................ 13 Adresse konstant erstatning............................................................................................... 14 Macro angivelser ................................................................................................................ 15 Funktioner .......................................................................................................................... 15 Noter til funktioner .............................................................................................................. 15 Operatører.......................................................................................................................... 16 Aritmetiske operatører........................................................................................................ 16 Logiske operatører ............................................................................................................. 16 Boolske operatører............................................................................................................. 17 Udtryk ................................................................................................................................. 17 Betingede udtryk ................................................................................................................ 17 Aritmetiske udtryk............................................................................................................... 18 Styrings angivelser ............................................................................................................. 19 Kommunikation med eksterne anordninger – DPRNT[ ] .................................................... 23 Kommunikations forberedende kommandoer .................................................................... 23 Formateret output............................................................................................................... 23 DPRNT[] Eksempler kode Udgivelse ............................................................................ 24 OPERATIONS BEMÆRKNINGER .................................................................................... 24 Variabel display side .......................................................................................................... 24 DPRNT[ ] udtryk ................................................................................................................. 25 FANUC-STYLE MACRO FEATURES NOT INCLUDED IN HAAS CNC CONTROL ......... 25

HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 1 af 26Aalborg tekniske skole

Introduktion .......................................................................................................................... 2 Undersøgelser...................................................................................................................... 3 Aliasing................................................................................................................................. 4 M kode aliasing .................................................................................................................... 5 Alfabetisk adressering.......................................................................................................... 5 Alternativ alfabetisk adressering .......................................................................................... 5 Macro konstanter ................................................................................................................. 6 Macro variabler .................................................................................................................... 6 Variabel brug........................................................................................................................ 6 Lokale variabler.................................................................................................................... 7 System variabler .................................................................................................................. 8 VARIABLER ANVENDELSE ......................................................................................... 8 SYSTEM VARIABLER I DYBDE........................................................................................ 10 Værktøjs offsets ................................................................................................................. 10 Programmerbare meldinger ............................................................................................... 11 Timere ................................................................................................................................ 11 System overrides ............................................................................................................... 11 Sidste mål position ............................................................................................................. 13 Aktuel maskin koordinat position........................................................................................ 13 Aktuel arbejds koordinat position ....................................................................................... 13 Aktuel skip signal position .................................................................................................. 13 Værktøjs længde kompensation ........................................................................................ 13 Offsets................................................................................................................................ 13 Adresse konstant erstatning............................................................................................... 14 Macro angivelser................................................................................................................ 15 Funktioner .......................................................................................................................... 15 Noter til funktioner .............................................................................................................. 15 Operatører.......................................................................................................................... 16 Aritmetiske operatører........................................................................................................ 16 Logiske operatører ............................................................................................................. 16 Boolske operatører............................................................................................................. 17 Udtryk................................................................................................................................. 17 Betingede udtryk ................................................................................................................ 17 Aritmetiske udtryk............................................................................................................... 18 Styrings angivelser............................................................................................................. 19 Kommunikation med eksterne anordninger – DPRNT[ ] .................................................... 23 Kommunikations forberedende kommandoer .................................................................... 23 Formateret output............................................................................................................... 23 DPRNT[] Eksempler kode Udgivelse ............................................................................ 24 OPERATIONS BEMÆRKNINGER .................................................................................... 24 Variabel display side .......................................................................................................... 24 DPRNT[ ] udtryk ................................................................................................................. 25 FANUC-STYLE MACRO FEATURES NOT INCLUDED IN HAAS CNC CONTROL ......... 25

Page 2: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 2 af 26Aalborg tekniske skole

Introduktion Denne styrings funktion er ekstra tilbehør. Hvis du ønsker yderligere information om installering og fordele så ring venligst til Haas Automation eller til din forhandler. Dette er en introduktion til macros so er implementeret på Haas styringer. Macros tilføjer duelighed og fleksibilitet til standard G-kode programmering, som tillader programmøren bedre at definere værktøjs banen på en hurtigere og mere naturlig måde. Med få undtagelser er macros implementeret i Haas styringer, sammenlignelige med FANUC 10M og 15M styringer. Macro fordele, der ikke er inkluderet i den aktuelle meddelelse er oplistet ved afslutningen af denne sektion. Programmører, der allerede er fortrolige med macro programmering vil ønske at gennemse denne sektion for at undgå unødvendigt arbejde. I traditionel CNC programmering, består et program af underprogrammer som IKKE KAN ændres eller forandres uden ved redigering af individuelle værdier med en editor. MACROS tillader den dygtige at programmere underprogrammer, hvor værktøjs banen eller placeringen af værktøjs banen er ændret, afhængig af værdier indeholdt i variabler sat af programmøren. Disse variabler kan overføres til underprogrammerne som parametrer, eller værdierne kan opholde sig i hvad der kaldes globale variabler. Hvad dette alt sammen betyder er, at en programmør kan fremstille en samling af underprogrammer, som er fuldt ud fejlfri. Disse programmer kan bruges som værktøjer på højt niveau som kan intensivere programmer og mekanisk produktivitet. MACROS har ikke til hensigt at erstatte moderne CAD/CAM software, men det kan og har udviklende maskin produktivitet for de, som bruger det. Her er nogle få eksempler på applikationer med macros. Hellere end give macro koder her, vil vi skitsere de generelle applikationer som macro kan bruges til. Værktøjer for direkte ”på – bordet” opspændinger. Mange opspændings procedurer kan være halv-automatiske for at hjælpe operatøren. Værktøjer kan være reserveret for øjeblikkelige situationer, der ikke var forudsete under værktøjs konstruktionen. For eksempel antager vi, at et kompagni bruger en standard opspænde anordning med et standard boltehuls mønster. Hvis det bliver opdaget, efter opstilling, at en opspændings anordning skal bruge et ekstra spændejern, og hvis macro underprogram 2000 er blevet programmeret til boring af boltehuls mønsteret for spændejernet, så vi følgende to trin procedurer være alt, der behøves for at tilføje spændejernet til opspændings anordningen. 1 Fastlæg X, Y og Z koordinaterne og vinklen hvor spændejernet skal placeres ved

jogning med maskinen til den foreslåede spændeposition og læs positioneringen på maskinens display.

2 Udfør den følgende kommando i MDI mode:

G65 P2000 X??? Y??? Z??? A???; Hvor der står ? skal værdierne fra trin 1 stå.

Her tager macro 2000 (ikke vist) omsorg for alt arbejdet, fordi den var konstrueret til at bore bolte huls cirkelen til den specificerede vinkel A. Faktisk har operatøren fremstillet sin egen faste cyklus

Page 3: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 3 af 26Aalborg tekniske skole

Enkle mønstre, som gentages igen og igen i værkstedet. Mønstre der vender tilbage igen og igen kan blive halv automatiseret og lagt i programmer til øjeblikkeligt brug. For eksempel:

1 Boltehuls mønstre. 2 Notninger 3 Vinkel mønstre, 5 huller på 30 grader 1 tomme imellem. 4 Speciel fræsning som f. eks. af bløde klør. 5 Matrice mønstre, 12 på tværs, 15 nedad. 6 Planfræsning af overflader, 12” x 5” med en 3” planfræser.

Automatisk Offset indstilling baseret på et program. Med macros kan koordinat offsets blive indstillet i hvert program, således at opstillings proceduren bliver lettere og mindre fejlholdig. Undersøgelser Undersøgelser forøger maskinens muligheder på mange måder. Herunder blot nogle tips om mulighederne. 1 Profilering af et emne for fastlæggelse af ukendte dimensioner for senere bearbejdning. 2 Værktøjs kalibrering for offset og slid værdier. 3 Inspektion før bearbejdning for at fastlægge materiale tolerancer og støbning. 4 Inspektion efter bearbejdning for fastlæggelse af parallelitet og planhed samt placering. Macroer tillader, at mindre uddannet personale arbejder med maskinen. Betingelserne kan overvåges og kunde operatør meldinger eller alarmer kan vises til operatørens opmærksomhed. MACRO UNDERPROGRAM KALD (G65) G65 er den kommando, som kalder et underprogram med evne til at argumentere med det. Formatet følger [N#####] G65 P##### [L####] [argumenter]; Alt indenfor parenteserne er ekstra. Dette skal ikke være forvirrende med parentes udtryk, som er forklaret herunder. G65 kommandoen kræver en P adresse parameter, svarende til et program nummer aktuelt i memoryen. Når den ekstra L adresse er brugt bliver macro kaldet gentaget de specificerede antal gange. I eksempel 1, er underprogram 1000 kaldt én gang uden parameter til underprogrammet. G65 kaldet er tilsvarende, men ikke det samme som M98 kaldet. Op til 4 G65 kald kan gøres samtidig (nesting 4 dybder) Eksempel 1: G65 P1000; (kald underprogram 1000 som en macro) M30; (program stop) O1000; (macro underprogram) ….. M99; (retur fra macro underprogram) I eksempel 2 er underprogram 9010 konstrueret til at bore en række huller langs en linie, hvis hældning er bestemt ved X og Y argumenter, son er indpasset i G65 kommando linien, Z bore dybden er indpasset som Z, tilspændings hastighedens som F og antallet af huller, der skal bores som T. Rækken af huller er boret med start i den aktuelle værktøjs

Page 4: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 4 af 26Aalborg tekniske skole

position, når macro underprogrammet bliver kaldt. Eksempel 2: G00 G90 X1.0 Y1.0 Z.05 S1000 M03; (Position værktøj) G65 P9010 X.5 Y.25 Z.05 F10. T10 (Kald 9010) G28 M30; O9010; (Diagonalt hul mønster) F#9; (F = tilspænding) WHILE [#20 GT 0] DO1; (Gentag T gange) G91 G81 Z#26; (Bor til dybde Z) #20=#20-1 (Decrement tæller) IF [#20 EQ 0] GOTO5; (Alle huller boret) G00 X#24 Y#25; (Flyt langs hældning) N5 END1; M99; (Retur til kalder) Aliasing Aliasing er i betydningen at tilegne en G kode til et en G65 P##### sekvens. For eksempel i eksempel 2 ville det være lettere hvis man kunne skrive_ G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65 P9010. For at få den blok til at arbejde, må vi sætte parameteren tillagt til underprogrammet 9010 til 06 (parameter 91). Bemærk at G00, G65, G66 og G67 kan ikke aliaseres. Alle andre koder mellem 1 og 255 kan bruges til aliasing. Program numrene 9010 til 9019 er reserveret til G kode aliasing. De følgende tabeller viser, hvilke HAAS parametrer der er reserveret til macro underprogram aliasing.

Haas parameter O kode 91 92 93 94 95 96 97 98 99

100

9010 9011 9012 9013 9014 9015 9016 9017 9018 9019

Sættes en aliasing parameter til 0 umuliggøres aliasing af det tilknyttede underprogram. Hvis en aliasing parameter er sat til en G kode, og det tilknyttede underprogram ikke er i memoryen vil en alarm fremkomme.

Page 5: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 5 af 26Aalborg tekniske skole

M kode aliasing Haas parameter M macro kald

81 82 83 84 85 86 87 88 89 90

9000 9001 9002 9003 9004 9005 9006 9007 9008 9009

Macro argumenter Argumenterne i en G65 meddelelse betyder at sende værdier til og indstille de lokale variabler af et kaldet underprogram. I eksempel 2 herover, er argumenterne X og Y tilpasset macro underprogrammets lokale variabler. Lokal variabel #24 er tilknyttet med X og er sat til 0.5. Ligeledes er lokal variabel#25 tilknyttet Y og er sat til 0.25. De følgende to tabeller indikerer sammensætningen af de alfabetiske adressevariabler til de numeriske variabler, der bruges i et macro underprogram. Alfabetisk adressering Adresse: A B C D E F G H I J K L M Variabel: 1 2 3 7 8 9 - 11 4 5 6 - 13 Adresse: N O P Q R S T U V W X Y Z Variabel: - - - 17 18 19 20 21 22 23 24 25 26 Alternativ alfabetisk adressering Adresse: A B C I J K I J K I J Variabel: 1 2 3 4 5 6 7 8 9 10 11 Adresse: K I J K I J K I J K I Variabel: 12 13 14 15 16 17 18 19 20 21 22 Adresse: J K I J K I J K I J K Variabel: 23 24 25 26 27 28 29 30 31 32 33 Argumenter accepterer enhver flydende punkt værdi til fjerde decimals plads. Hvis du er i metrisk, vil styringen antage tusinde dele (.000). I eksempel 3 herunder, vil den lokale variabel #7 modtage .0004. Hvis en decimal ikke er inkluderet i en argument værdi, som G65 P9910 A1 B2 C3 Værdierne er tilpasset til macro underprogrammer som anført i følgende tabel:

Page 6: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 6 af 26Aalborg tekniske skole

Helt tal argument tilpasning (ingen decimal punkt) Adresse: A B C D E F G H I J K L M Variabel: .001 .001 .001 1. 1. 1. - 1. .0001 .0001 .0001 1. 1. Adresse: N O P Q R S T U V W X Y Z Variabel: - - - .0001 .0001 1. 1. .0001 .0001 .0001 .0001 .0001 .0001

Alle 33 lokale macro variabler kan vær tilegnet værdier med argumenter ved brug af alternativ adresserings metode. Det følgende eksempel viser hvordan man kan sende to sæt koordinat lokaliteter til et macro underprogram. Lokal variabel #4 gennem #9 ville blive sat til .0001 gennem .0006 henholdsvis. Eksempel 3: G65 P2000 I1 J2 K3 I4 J5 K6; De følgende bogstaver kan ikke anvendes til tilpasnings parametrer til et macro underprogram: G, L, N, O eller P Macro konstanter Konstanter er flydende punkt værdier anbragt i et macro udtryk. De kan være kombineret med adresserne A….Z eller de kan stå alene, når de bruges indenfor et udtryk. Eksempler på konstanter er .0001, 5.3 eller –10. Macro variabler Der er tre kategorier af macro variabler: System variabler, globale variabler og lokal variabler. Variabel brug Alle variabler har som reference et nummer tegn (#) fulgt af et positivt nummer. Eksempler er:#1, #101, og #501. Variabler er decimalværdier, som er repræsenteret som flydende punkt numre. Hvis en variabel aldrig har været benyttet, kan den antage en speciel ”udefineret” værdi. Dette indikerer at den aldrig har været benyttet. En variabel kan blive sat til en udefineret med den specielle variabel #0. #0 har den udefinerede værdi eller 0.0 afhængig af sammenhængen, hvori den er brugt. Mere om dette senere. Indirekte referencer til variabler kan være udført ved at omslutte variablen i parenteser. #[<udtryk>] Udtrykket er evalueret og resultatet bliver variablens adgang. For eksempel: #1=3; #[#1]=3.5 + #1; Dette sætter variablen #3 til værdien 6.5. Variabler kan bruges i stedet for G koder adresse konstanter, hvor ”adresse” refererer til bogstaverne A..Z. I blokken

Page 7: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 7 af 26Aalborg tekniske skole

N1 G0 G90 X1.0 Y0; kan variablerne sættes til følgende værdier: #7=0; #11=90; #1=1.0; #2=0.0; og blokken kan erstattes af : N1 G#7 G#11 X#1 Y#2; Værdierne i variablerne ved køretiden er brugt som adressernes variabler. Lokale variabler Lokale variabler rangerer mellem #1 og #33. Et sæt lokale variabler er hele tiden til rådighed. Når et kald til et underprogram med en G65 ordre er udført, er de lokale variabler gemt og et nyt sæt er til rådighed til brug. Dette er kaldet ”nesting” af de lokale variabler. Under et G65 kald, er alle de nye lokale variabler slettet til udefinerede værdier og enhver lokal variabel, som har en tilsvarende adresse i G65 linien bliver sat til G65 liniens værdier. Herunder er en tabel over de lokale variabler sammen med adresse variabel argumenterne, som ændrer dem.

Variabel: Adresse: Alternativt:

1 A

2 B

3 C

4 I

5 J

6 K

7 D I

8 E J

9 F K

10 I

11 H J

Variabel: Adresse: Alternativt:

12

K

13 M I

14

K

15

K

16 I

17 Q J

18 R K

19 S I

20 T J

21 U K

22 V I

Variabel: Adresse: Alternativt:

23 W J

24 X K

25 Z I

26 Z J

27

K

28 I

29 J

30

K

31 I

32 J

33

K Bemærk at variablerne 10, 12, 14 ..16 og 27 ..33 svarer ikke til adresse argumenterne. De kan sættes hvis et tilstrækkeligt antal af I. J og K argumenter er brugt som indikeret ovenover i sektionen om argumenter. Samtidig kan i macro underprogrammet, de lokale variabler kan læses og modificeres ved reference til variabel numrene 1..33. Når L argumentet er brugt til at gøre multiple repetitioner af et macro underprogram, bliver argumenterne kun sat ved den første repetition. Dette betyder, at hvis lokale variabler 1..33 er modificeret i den første repetition, vil den næste repetition kun have adgang til de modificerede værdier. Lokale værdier er bevaret fra repetition til repetition, når L adressen er større end 1. Kald af et underprogram via et M97 eller M98 påvirker ikke de lokale variabler. Enhver lokal variabel refereret til i et underprogram afkaldt med en M98 er den samme variabel og værdi,

Page 8: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 8 af 26Aalborg tekniske skole

som eksisterede før M97 eller M98 kaldet. Globale variabler Globale variabler er variabler, som er tilgængelige hele tiden. Der er kun én kopi af hver globale variabel. Globale variabler fremkommer i to områder: 100...199 og 500..599. De globale variabler forbliver i hukommelsen, når der slukkes for strømmen. De slettes ikke som i FANUC styringer. System variabler System variabler giver programmøren mulighed for at agere med en variation af styrings parametrer og indstillinger. Ved indstilling af system variabler, kan funktionen af styringen modificeres eller ændres. Ved læsning af en system variabel, kan et program modificere sin opførsel, baseret på værdien af variablen. Nogle system variabler har en READ ONLY 8kun til læsning) status. Dette betyder, at de ikke kan modificeres af programmøren. En kortfattet tabel af aktuelt implementerede system variabler følger med en forklaring om deres anvendelse. VARIABLER ANVENDELSE #0 Ikke et nummer (læs kun) #1 - #33 Macro kalde argumenter #100 - #199 Generelle formåls variabler gemt ved afbrudt strøm #500 - #699 Generelle formåls variabler gemt ved afbrudt strøm #700 - #749 Skjulte variabler, kun for internt brug #800 - #999 Generelle formåls variabler gemt ved afbrudt strøm #1000 - #1063 64 særskilte inputs (læs kun) #1080 - #1087 Rå analog til digitale inputs (læs kun) #1090 - #1098 Filtreret analog til digitale inputs (læs kun) #1094 Spindel belastning ved OEM spindel drev (læs kun) #1098 Spindel belastning ved Haas vektor drev (læs kun) #1100 - #1139 40 særskilte outputs #1140 - #1155 16 ekstra relæ outputs via multipliceret output #2000 - #2199 Værktøjs længde offsets #2201 - #2399 Værktøjs længde slid #2401 - #2599 Værktøjs diameter / radius offsets #2601 - #2799 Værktøjs diameter / radius slid #3000 Programmerbar alarm #3001 Millisekund timer #3002 Time timer #3003 Enkelt blok undertrykkelse #3004 Override styring #3006 Programmeret stop ved meddelelse #3011 År, måned, dag #3012 Time, minut, sekund #3020 Timer for strøm tilslutning (læs kun) #3021 Cyklus start timer (læs kun) #3022 Tilspændings timer (læs kun) #3023 Nærværende del timer (læs kun) #3024 Sidste komplette del timer (læs kun) #3025 Tidligere del timer (læs kun) #3026 Værktøj i spindelen (læs kun)

Page 9: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 9 af 26Aalborg tekniske skole

#3027 Spindel omdrejninger (læs kun) #3901 M30 tæller 1 #3902 M30 tæller 2 #4000 - #4021 Tidligere blok gruppe koder #4101 - #4126 Tidligere blok adresse koder

BEMÆRK: Anvendelse af 4101 til 4126 er det samme som den alfabetiske adressering af ”Macro argumenter” sektionen, dvs. erklæringen x1.3 sætter variabel #4124 til 1.3.

#5000 - #5005 Tidligere blok ende position #5020 - #5025 Aktuel maskines koordinat position #5041 - #5045 Aktuel arbejds koordinat position #5061 - #5064 Aktuel skip signal position #5081 - #5085 Aktuelt tool offset #5201 - #5205 Almindelig offset #5221 - #5225 G54 arbejds offsets #5241 - #5245 G55 arbejds offsets #5261 - #5265 G56 arbejds offsets #5281 - #5285 G57 arbejds offsets #5301 - #5305 G58 arbejds offsets #5321 - #5325 G59 arbejds offsets #5401 - #5500 Værktøjs tilspændings timere (sekunder) #5501 - #5600 Total værktøjs timere (sekunder) #5601 - #5699 Værktøjs levetids monitor grænse #5701 - #5800 Værktøjs levetids monitor tæller #5801 - #5900 Værktøjs belastnings monitor maks. belastnings føler så langt #5901 - #6000 Værktøjs belastnings monitor #6001 - #6277 Indstillinger (læs kun) #6501 - #6999 Parametrer (læs kun) BEMÆRK: De lave ordre bits for store værdier vil ikke fremkomme i macro

variablerne for indstillinger og parametrer. #7001 - #7005 G110 ekstra arbejds offsets #7021 - #7025 G111 ekstra arbejds offsets #7041 - #7045 G112 ekstra arbejds offsets #7061 - #7065 G113 ekstra arbejds offsets #7081 - #7085 G114 ekstra arbejds offsets #7101 - #7105 G115 ekstra arbejds offsets #7121 - #7125 G116 ekstra arbejds offsets #7141 - #7145 G117 ekstra arbejds offsets #7161 - #7165 G118 ekstra arbejds offsets #7181 - #7185 G119 ekstra arbejds offsets #7201 - #7205 G120 ekstra arbejds offsets #7221 - #7225 G121 ekstra arbejds offsets #7241 - #7245 G122 ekstra arbejds offsets

Page 10: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 10 af 26Aalborg tekniske skole

#7261 - #7265 G123 ekstra arbejds offsets #7281 - #7285 G124 ekstra arbejds offsets #7301 - #7305 G125 ekstra arbejds offsets #7321 - #7325 G126 ekstra arbejds offsets #7341 - #7345 G127 ekstra arbejds offsets #7361 - #7365 G128 ekstra arbejds offsets #7381 - #7385 G129 ekstra arbejds offsets SYSTEM VARIABLER I DYBDE Denne sektion beskriver fuldt ud system variabler. 1-bit særskilt inputs For en komplet beskrivelse af særskilte inputs, refereres der til sektionen ”Teknisk reference”. Inputs kendetegnet som ”spare” kan forbindes til eksterne anordninger og bruges af programmøren. 1-bit særskilt outputs Haas styringen kan styre op til 56 særskilte outputs. Imidlertid er et antal af disse outputs allerede reserveret for brug af Haas styringen. FORSIGTIG! Brug ikke outputs, der er reserveret af systemet. Brug af disse outputs

kan resultere i skade eller beskadigelse af dit udstyr. Brugeren kan ændre meldingen af disse outputs ved at skrive til variabler kendetegnet som ”spare”. Hvis outputs er forbundet til relæer, så sætter et kendetegn på ”1” relæet. Et kendetegn på ”0” sletter relæet. Referencer til disse outputs vil returnere den aktuelle meddelelse af outputs og dette kan blive den sidste kendetegnede værdi eller det kan være den sidste melding fra output som er sat af en bruger M kode. For eksempel efter verificering af outputtet #1108 er ”spare”: #1108=1; (tænder #1108 relæet) #101=#3001 + 1000; (101 er 1 sekund fra nu) WHILE [[#101 GT #3001] AND[#1109 EQ 0]] D01 END1 (vent her 1 sekund eller indtil relæ #1109 går op) #1108=0; (slår #1108 relæ fra) Antallet af outputs der er til rådighed for brugeren, og hvor brugers M koder er placeret er model afhængigt. Hvis din styring ikke er udrustet med M-kode relæ tastatur, så vil M21 til M28 ligge fra #1124 - #1131. Hvis du har udrustning med M-kode relæ tastatur installeret, se 8M options sektionen for information og instruktioner. Du skal altid teste eller køre dry run programmer, som er blevet udviklet for macroer, som kører med ny hardware. Værktøjs offsets Haas macroer er blevet realiseret med FANUC styrings memory C option i erindring. Det betyder, at hver tool offset har en længde (H) og radius (D) sammen med tilknyttede slid værdier.

Page 11: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 11 af 26Aalborg tekniske skole

#2001 - #2200 H geometri offsets (1 – 200) for længde. #2200 - #2400 H geometri slid (1 – 200) for længde. #2401 - #2600 D geometri offsets (1 – 200) for diameter. #2601 - #2800 D geometri slid (1 – 200) for diameter. Programmerbare meldinger #3000 ALARMER kan være programmerede. En programmeret alarm vil virke nøjagtig som Haas interne alarmer. En alarm er genereret ved at sætte macro variabel #3000 til et nummer mellem1 og 999. #3000 15 (MELDING PLACERET I ALARM LISTEN) Når dette er gjort, blinker ALARM i det nederste højre hjørne af displayet og teksten i den næste kommentarer placeret i alarm listen. Alarm nummeret (i dette eksempel 15) er lagt til 1000 og brugt som et alarm nummer. Hvis en alarm er genereret på denne mådestandser alle bevægelser og programmet skal resettes for at fortsætte. Programmerbare alarmer kan altid identificeres i alarm historien, fordi alarm nummeret ligger mellem1000 og 1999. De første 34 karakterer af kommentaren vil blive brugt til alarm meldingen. Timere Haas macroer støtter adgang til to timere. Disse timere kan sættes til en værdi ved angivelse af et nummer til den respektive variabel. Et program kan så senere læse variablen og fastslå tiden, der er gået siden timeren blev sat. Timere kan bruges til at efterligne dvæle cykler, fastlægge emne til emne tid eller hvor som helst tids afhængig funktion er ønsket. #3001 MILLISEKUND TIMER – Millisekund timeren opdateres hver 20. millisekund

og dermed kan aktiviteter tids fastlægges med en nøjagtighed på kun 20 millisekunder. Ved POWER ON bliver millisekund timeren resat. Timeren har en begrænsning på 497 dage. Det hele tal, der returnerer efter adgang til #3001 repræsenterer antallet af millisekunder.

#3002 HOUR TIMER – Time timeren ligner millisekund timeren bortset fra, at tallet

der returnerer efter adgang til #3002 er i timer. Time og millisekund timerne er uafhængige af hinanden og kan sættes separat.

System overrides #3003 Variabel 3003 er enkelt blok undertrykkelses parameteren. Den tilsidesætter enkelt blok funktionen i G kode. I eksemplet herunder, indledes undertrykkelsen af enkelt blok, når #3003 er sat til 1. Efter at #3003 er sat = 1, udføres hver linies (2 – 4) G kode instruktioner efter hinanden, selv om single blok funktionen er aktiv. Når #3003 er sat = 0, vil enkelt bloks operationen fortsætte normalt. Dvs. operatøren skal nedtrykke cyklus start for at begynde en ny kode blok (linier 6 – 8). #3303=1; G54 G00 G90 X0 Y0; G81 R0.2 Z-0.1 F20 L0; S2000 M03; #3003=0; T02 M06;

Page 12: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 12 af 26Aalborg tekniske skole

G83 R0.2 Z-1 F10. L0; X0. Y0.; #3004 Variabel #3004 er en bit planlagt variabel som tilsidesætter specifikke styrings

fordele under køre tiden. Den første bit forhindrer FEED HOLD fra tastaturet. Hvis du ikke ønsker at tilspændings holdt skal udføres under nogen kode sektion, så indsæt parenteser om den kode med henvisning til #3004. Kendetegn ”1” til #3004 deaktiverer konsollens feed hold taste. Kendetegn ”0” til #3004 gen aktiverer FEED HOLD tasten. for eksempel:

Tilnærmelses kode (FEED HOLD tilladt) #3004=1 (Deaktivering af FEED HOLD tasten) Ikke stoppende kode (FEED HOLD ikke tilladt) #3004=0 (Aktiverer FEED HOLD tasten) Afgående kode (FEED HOLD tiladt)

Det følgende er en tabel for variablen #3004 bits og de tilknyttede ”tilsidesættelser” (overrides). E= aktiveret, D=deaktiveret (gøre ikke funktions dygtig)

#3004 FEED HOLD FEED HOLD OVERRIDE

EXACT STOP KONTROL

0 E E E 1 D E E 2 E D E 3 D D E 4 E E D 5 D E D 6 E D D 7 D D D

Programmerbart stop #3006 Stop kan programmeres. Et programmerbart stop virker ligesom et M00. I det

følgende eksempel, når den udpegede meddelelse er udført, vises de første 15 karakterer af kommentaren i meddelelses området nederst til venstre på skærmbilledet over ordre indgivelses linien. Styringen stopper og venter på en cyklus start fra operatøren. Efter cyklus start fortsætter operationen med den næste blok efter den udpegede meddelelse.

IF[#1 EQ #0] THEN #3006=101(ARG. A REQUIRED); Sidste blok (modal) gruppe koder #4001-#4021 Gruppen af G koder tillader mere effektiv behandling. G koder med ensartede funktioner er sædvanligvis under samme gruppe. F. eks: G90 og G91 er under gruppe 3. Variabler er sat til side for at lagre den sidste eller standard G kode udstedt for hver af 21 grupper. Ved at læse gruppe koden, kan et macro program ændre sin funktion baseret på indholdet af gruppe koden. Hvis 4003 indeholder 91, så kunne et macro program afgøre, at alle bevægelser skulle være inkrementale frem for

Page 13: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 13 af 26Aalborg tekniske skole

absolutte. Der er ingen tilknyttede variabler for gruppe nul, gruppe nul G koder er ikke modale. Sidste blok (modal) adresse data #4101-#4126 Adresse koder A..Z (excl. G) er også opretholdt som modale værdier. Den modale information repræsenteret ved den sidste blok tolket af fremsynings processen er indeholdt i variablerne 4101 til 4126. Den numeriske kortlægning af variable numre til alfabetiske adresser svarer til kortlægningen under alfabetiske adresser. F. eks. værdien af en tidligere tolket D adresse er fundet i #4107 og den sidst tolkede I værdi er #4104. Sidste mål position #5001-#5005 Det sidst programmerede punkt, mål positionen, for det meste ny bevæ- gelses blok kan tilnærmes gennem variablerne #5001 – #5005, X, Y, Z A og B henholdsvis. Værdier er givet i det aktuelle arbejds koordinat system og kan bruges medens maskinen er i bevægelse. Aktuel maskin koordinat position #5021 – ”5025 Den aktuelle position i maskin koordinaterne kan fås gennem #5021 – #5025, henholdsvis X, Y, Z, A, og B. Værdierne kan IKKE læses, medens maskinen er i bevægelse. #5023 (Z) repræsenterer værdien efter at værktøjs længde kompensering er tilført. Aktuel arbejds koordinat position #5041 - #5045 Den aktuelle position i det aktuelle arbejds koordinat system kan fås med #5041 - #5045, henholdsvis X, Y, Z, A , B. Værdierne kan IKKE læses medens maskinen er i bevægelse. #5043 (Z) repræsenterer værdien efter at værktøjs længde kompensation er tilført. Aktuel skip signal position #5061 - #5065 Positionen hvor det sidste skip signal blev udløst kan fås gennem #5061 - #5065, henholdsvis X, Y, Z, A, B. Værdierne er givet i det aktuelle arbejds koordinat system og kan bruges medens maskinen er i bevægelse. #5063 (Z) repræsenterer værdien efter at værktøjs længde kompensering er tilført. Værktøjs længde kompensation #5081 - #5085 Den aktuelle totale værktøjs længde kompensation som er tilført værktøjet er returneret. Dette inkluderer værktøjs længde offset refererende til den aktuelt modale værdi sat i H (#4008) plus slid værdien. Offsets Alle værktøjs arbejds offsetter kan læses og sættes indenfor et macro udtryk. Dette tillader programmøren at presette koordinater til omtrentlige lokaliseringer, eller at sætte koordinater til værdier, baseret på resultaterne af skip signal lokaliseringer og kalkulationer. Når nogle af ofsetterne er læst stoppes den tolkende ”fremsyns kø” indtil den blok er udført. #5201 - #5205 G52 X, Y, Z, A, B OFFSET VÆRDIER

Page 14: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 14 af 26Aalborg tekniske skole

#5221 - #5225 G54 X, Y, Z, A, B OFFSET VÆRDIER #5241 - #5245 G55 X, Y, Z, A, B OFFSET VÆRDIER #5261 - #5265 G56 X, Y, Z, A, B OFFSET VÆRDIER #5281 - #5285 G57 X, Y, Z, A, B OFFSET VÆRDIER #5301 - #5305 G58 X, Y, Z, A, B OFFSET VÆRDIER #5321 - #5325 G59 X, Y, Z, A, B OFFSET VÆRDIER #7001 - #7005 G110 X, Y, Z, A, B OFFSET VÆRDIER ” ” ” ” ” #7381 - #7385 G129 X, Y, Z, A, B OFFSET VÆRDIER Adresse konstant erstatning Den sædvanlige metode for at sætte styrings adresserne A…Z er ved at tilføje en konstant til adressen. F. eks. G01 X1.5 Y3.7 F20.; sætter adresserne G, X, Y, F til henholdsvis 1, 1.5, 3.7, og 20.0, og dette instruerer styringen om at bevæge lineært, G01, til position X=1.5, Y=3.7, og en tilspænding på 20.0 tommer pr. min. Macro syntaks tillader konstanterne at blive erstattet med enhver variabel eller udtryk i en anden kode sektion (dvs. du behøver ikke at være i et macro underprogram). De tidligere meddelelser kan blive erstattet af følgende kode: #1=1; #2=.5; #3=3.7; #4=20; G#1 X[#1+#2] Y#3 F#4; Den tilladelige syntaks til adresserne A…Z (excl. N eller O) er som følger: <adresse><-><variabel> A - #101 <adresse>[<udtryk>] Y[#5041+3.5] <adresse><->[<udtryk>] Z-[SIN[#1]] Hvis værdien af variablen ikke stemmer overens med området af adressen, vil det resultere i den sædvamlige styrings alarm. F. eks. ville den følgende kode resultere i en område alarm, fordi værktøjs diameter numrene ligger i området 0 – 50. #1=75; D#1; Når en variabel eller et udtryk bruges i stedet for en adresse konstant, så er den flydende punkt værdi afrundet til det mindst betydningsfulde tal. Hvis ”1=.123456, så vil G1X#1 flytte bearbejdnings værktøjet til .1235 på X-aksen. Hvis styringen er i metrisk mode, vil maskinen flytte til .123 på X-aksen. Når en UDEFINERET variabel bruges ti at erstatte en adresse konstant, så ignoreres den adresses reference. F. eks. hvis #1 er udefineret, så vil blokken

Page 15: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 15 af 26Aalborg tekniske skole

G00 X1.0 Y#1; få værdien G00 X1.0 Ingen Y bevægelse ville finde sted. Macro angivelser Macro angivelser er linier afkoder, som tillader programmøren at manipulere med styringen med fordele lignende ethvert standard programmerings sprog. Inkluderet er funktioner, operatører, betingelses måder og aritmetiske udtryk, kendetegnende angivelser og styrings angivelser. Funktioner og operatører bruges i udtryk til at modificere variabler eller værdier. Operatører er væsentlige til udtryk medens funktioner gør programmørens job nemmere. Funktioner Funktioner er indbyggede rutiner, som programmøren har til rådighed. Alle funktioner har formen <function_name>[argument]. Funktioner kan passere ethvert udtryk som argumenter. Funktioner returnerer flydende punkt decimal værdier. Funktionen til veje bragt med Haas styringen er følgende: FUNKTION ARGUMENT RETURNERER NOTER SIN[ ] Grader Decimal Sinus COS[ ] Grader Decimal Cosinus TAN[ ] Grader Decimal Tangens ATAN[ ] Decimal Grader Bue tangent

Samme som FANUC ATAN[ ]/[1]

SQRT[ ] Decimal Decimal Kvadrat rod ABS[ ] Decimal Decimal Absolut værdi ROUND[ ] Decimal Decimal Rund af en dec. FIX[ ] Decimal Helt tal Afkorte fraktion ACOS[ ] Grader Decimal Bue cosinus ASIN[ ] Grader Decimal Bue sinus #[ ] Helt tal Helt tal Variabel indirekt DPRNT[ ] ASCII tekst Eksternt output Noter til funktioner Funktionen ROUND arbejder forskelligt afhængigt af sammenhængen hvori den bruges. Når den bruges i et aritmetrisk udtryk, arbejder round funktionen som man skulle forvente. Dvs. hvert nummer med en ubetydelig del større end eller lig med .5 er rundet op til næste hele tal, ellers bliver den fratrukket nummeret. #1=1.714; #2=ROUND[#1]; (#2 er sat til 2.0) #1=3.1416;

Page 16: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 16 af 26Aalborg tekniske skole

#2=ROUND[#1]; (#2 er sat til 3.0) Når round er brugt i et adresse udtryk, så er argumentet for round afrundet til adressens kendetegnede præcision. For metriske og vinkel dimensioner, er tre plads præcision standarden. For tomme er fire pladser standard. Integrale adresser som D, T og H afrundes normalt. #1=1.00333; G0 X[ #1 + #1 ]; (bordet flytter til 2.0067); G0 X[ ROUND[ #1 ] + ROUND[ #1 ] ]; (bordet flytter til 2.0066); G0 A[ #1 + #1 ]; (aksen flytter til 2.007); G0 A[ ROUND[ #1 ] + ROUND[ #1 ]]; (AKSEN FLYTTER TIL 2.006); D[1.67] (diameter 2 er gjort aktuel); Operatører Operatører kan klassificeres i tre kategorier: aritmetiske operatører, logiske operatører og boolske operatører. Aritmetiske operatører Aritmetiske operatører består af de sædvanlige unære og binære operatører. De er: + unær plus +1.23 - unær minus -[COS[30]] + binær adition#1=#1+5 - binær subtraction #1=#1-1 * multiplikation #1=#2*#3 / division #1=#2/4 MOD rest #1=27 MOD 20 (#1 indeholder 7) Logiske operatører Logiske operatører er operatører, der arbejder på binære bit værdier. Macro variabler er flydende punkt numre. Når logiske operatører bruges på macro variabler, bruges kun den hele del af det flydende punkt nummer. De logiske operatører er: OR logisk ELLER to værdier sammen XOR udelukkende ELLER to værdier sammen AND logisk OG to værdier sammen Eksempler: #1=1.0; 0000 0001 #2=2.0; 0000 0010 #3=#1 OR #2 0000 0011 Her vil variabel #3 indeholde 3.0 efter OR operation #1=5.0; #2=3.0;

Page 17: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 17 af 26Aalborg tekniske skole

IF [[#1 GT 3.0] AND [#2 LT 10]] GOTO1 Her vil styringen overføre til blok 1 fordi #1 GT 3.0 vurderer til 1.0 og #2 LT vurderer til 1.0, således 1.0 AND 1.0 er1.0 (sand) og GOTO forekommer. Som det kan ses af de foregående eksempler, skal det tages HENSYN når der bruges logiske operatører, således at det ønskede resultat opnås. Boolske operatører Boolske operatører evaluerer altid til 1.0 (SAND) eller 0.0 (FORKERT). Der er seks boolske operatører. Disse er ikke begrænset til betingede udtryk, men som oftest bruges de i betingede udtryk. De er: EQ - lig med NE - ikke lig med GT - større end LT - mindre end GE - større end eller lig med LE - mindre end eller lig med De følgende er fire eksempler på, hvordan boolske og logiske operatører kan bruges: Eksempel Forklaring IF [#1 EQ 0.0] GOTO 100; Spring til blok 100 hvis værdien af variabel #1 er lig med 0.0. WHILE [#101 LT 10] DO1; Hvis variabel #101 er mindre end 10 gentag loop DO1..END1. #1=[1.0 LT 5.0]; Variabel #1 er sat til 1.0 (SAND). IF [#1 AND #2 EQ #3] GOTO1 Hvis variabel #1 logisk AND (og med) variabel #2 er lig med værdien i #3, så springer styringen til blok 1. Udtryk Udtryk er defineret som en række af variabler og operatører omringet af firkantede parenteser ”[” og ”]”. Der er to anvendelser for udtryk: betingede udtryk eller aritmetiske udtryk. Betingede udtryk returnerer FALSE (forkert) (0.0) eller TRUE (sande) (ikke nul ) værdier. Aritmetiske udtryk bruger aritmetiske operatører med funktioner til at fastlægge værdier. Betingede udtryk I Haas styringen er alle udtryk, der er sat, betingede værdier. Værdien er enten 0.0 (FALSE) eller værdien er nonzero (TRUE). Sammenhængen, i hvilken udtrykkene bruges, fastlægges hvis udtrykket er et betinget udtryk. Betingede udtryk bruges i IF (hvis) og WHILE (mens) angivelser og i M99 ordren. Betingede udtryk kan gøre brug af boolske operatører til hjælp for evaluering af TRUE eller FALSE betingelser. M99 betinget opbygning er unik for Haas styringen. Uden macroer har M99 i Haas styringen den evne at kunne forgrene ubetinget til enhver linie i det aktuelle underprogram, ved at placere en P kode på den samme linie. For eksempel:

Page 18: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 18 af 26Aalborg tekniske skole

N50 M99 P10; forgrener til linie N10. Det får ikke styringen til at kalde underprogrammet. Med macros aktiveret, kan M99 bruges med et betinget udtryk til betinget forgrening. Til at forgrene når variabel #100 er mindre end 10 kunne vi kode den nævnte linie som følger: N50 [#100 LT 10] GOTO 10; Aritmetiske udtryk Et aritmetisk udtryk er ethvert udtryk, der bruger konstanter, variabler, operatører eller funktioner. Et aritmetisk udtryk returnerer en værdi. Aritmetiske udtryk er sædvanligvis brugt i kendetegnende angivelser, men er ikke begrænset til dem. Eksempler på aritmetiske udtryk: #101=#145*#30; #1=#1+1; X[#105+COS[#1011]]; #[#2000+#13]=0; Kendetegns angivelser Kendetegns angivelser tillader programmøren at modificere variabler. Formatet for kendetegns angivelser er: <udtryk>=<udtryk> Udtrykket på venstre side af lighedstegnet skal altid referere til en macro variabel, enten direkte eller indirekte. Den følgende macro initialiserer en sekvens af variabler til enhver værdi. Her er brugt både direkte og indirekte angivelser. O0300 (initialiserer en opstilling af variabler); N1 IF [#2 NE #0] GOTO2 (B-base variabler); #3000=1 (base variabel ikke givet); N2 IF [#19 NE #0] GOTO3 (S=størrelse af opstilling) #3000=2 (størrelse af opstilling ikke givet) N3 WHILE [#19 GT 0] DO1; #19=#19-1 (nedadgående tælling) #[#2+#19]=#22 (V=værdi at sætte opstillingen til) END1; M99; Den ovennævnte macro kunne bruges til at initialisere tre sæt af variabler som følger: G65 P300 B101. S20 (INIT 101..120 TO #0); G65 P300 B501. S5 V1 (INIT 501..505 TO 1.0); G65 P300 B550. S5V0 (INIT 550..554 TO 0.0); Decimalpunktet i B101 etc. vil være krævet.

Page 19: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 19 af 26Aalborg tekniske skole

Styrings angivelser Styrings angivelser tillader programmøren at forgrene, både betinget og ubetinget. De tildeler også evnen til at gentage en sektion af koder baseret på en betingelse. Ubetinget forgrening (GOTOnnn og M99 Pnnnn) I Haas styringen er der to metoder til forgrening ubetinget. En ubetinget forgrening vil altid forgrene til en specifik blok. M99 P15 vil forgrene ubetinget til blok nummer 15. M99 kan bruges enten macros er installeret eller ej, og er den traditionelle metode til forgrening ubetinget i Haas styringen. GOTO15 gør det samme som M99 P15. I Haas styringen kan en GOTO kommando bruges på samme linie som andre G koder. GOTO bliver udført efter enhver anden styrings kommando, der er traditionelle M koder. Beregnet forgrening (GOTO#n og GOTO[udtryk]) Beregnet forgrening tillader programmøren at overføre styring til en anden blok i det samme underprogram. Blokken kan være beregnet i parentes, som i tilfældet GOTO[udtryks] form, eller blokken kan passeres ind gennem en lokal variabel, som i GOTO#n formen. GOTO vil afrunde variablen eller udtryks resultatet, som er tilknyttet med den beregnede forgrening. F. eks. hvis #1 indeholder 4.49 og GOTO#1 er udført, vil styringen forsøge at overføre til en blok indeholdende N4. Hvis #1 indeholder 4.5, så vil udførelsen overføre til en blok indeholdende N5. Det følgende kode skelet kunne udvikles til at lave et program, som arrangerer dele i række: O9200 (indgravering af tal i aktuel placering) ; (D=DECIMAL DIGIT TO ENGRAVE); IF [[#7 NE #0] AND {#7 GE O] AND[#7 LE 9]] GOTO99; #3000=1 (UGYLDIG DIGIT) ; N99 #7=FIX[#7] (afskær enhver ubetydelig del) ; GOTO#7 (indgraver tallet nu) ; N0 (lav tallet 0) … M99 ; N1 (lav tallet 1) ; M99 ; N2 (lav tallet 2) ; … ;’(etc.,….) Med ovennævnte underprogram, vil du kunne gravere tallet fem med følgende kald: G65 P9200 D5;

Page 20: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 20 af 26Aalborg tekniske skole

Beregnede ”GOTO”er der bruger udtryk, kunne bruges til at forgrene bearbejdelse baseret på resultater af læsning af hardware inputs. Et eksempel kan se ud som det følgende: GOTO[[#1030*2]+#1031] ; NO (1030=0, 1031=0) ; … M99; N1 (1030=0, 1031=1) ; … M99; N2 (1030=1, 1031=0) ; … M99; N3 (1030=1, 1031=1) ; … M99; Det adskilte input returnerer altid til enten 0 eller 1 når det er læst. GOTO[udtrykket] vil forgrene til den passende G kode baseret på angivelsen af de to adskilte inputs #1030 og #1031. Betinget forgrening (IF og GOTOn) Betinget forgrening tillader programmøren at overføre styring til en anden sektion af koder indenfor samme underprogram. Betinget forgrening kan kun bruges, når macroer er aktiverede. Haas styringen tillader to ens metoder fuldendelse af betinget forgrening. IF[<betinget udtryk>] GOTOn Her, som anført herover, er <betinget udtryk> ethvert udtryk, som bruger de seks boolske operatører EQ, NE, GT, LT, GE eller LE. Parenteserne omkring udtrykket er påbudte. I Haas styringen er det ikke nødvendigt at inkludere disse operatører. For eksempel: IF [#1 NE 0.0] GOTO5; kunne også være: IF [#1] GOTO5; I denne angivelse vil forgrening til blok 5 ske, hvis variablen #1 indeholder andet end 0.0, eller den udefinerede værdi#0; ellers vil den næste blok blive udført. Hvis overførsel til en anden end Haas styring er ønsket, så anbefales det at bruge de betingede operatører. I Haas styringen kan et betinget udtryk også bruges med M99 Pnnnn formatet, forudsat at macros er aktiveret. Et eksempel er som følger: G0 X0 Y0 [#1EQ”2] M99 P5; Her er betingelsen for M99 delen kun angivelsen. Værktøjs maskinen er instrueret til X0, Y0, hvad enten udtrykket evaluerer til TRUE eller FALSE. Kun forgreningen M99 er udført

Page 21: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 21 af 26Aalborg tekniske skole

baseret på værdien af udtrykket. Det anbefales at versionen IF GOTO bruges hvis bærbarhed er ønsket. Betinget udførelse (IF THEN) Udførelse af styrings angivelser kan også aktiveres ved brug af IF THEN konstruktionen. Formatet er: IF [<betinget udtryk>] THEN <angivelse>; BEMÆRK: For at bevare forenelighed med FANUC syntax må THEN ikke bruges

sammen med GOTOn Dette format er traditionelt brugt for betinget kendetegnet angivelse som for: IF [#590 GT 100] THEN #590=0.0; Her er variabel #590 sat til nul, når værdien af #590 overstiger 100.0. I Haas styringen er resten af IF blokken ignoreret, hvis en betingelse evaluerer til FALSE (0.0). Dette betyder, at styrings angivelser også kan være betingede, således at vi kunne skrive noget som: IF [#1 NE #0] THEN G1 X#24 Y#26 F#9; Disse udtryk er kun lineære bevægelser hvis variabel #1 har været angivet en værdi. Du kunne prøve noget som dette: IF [#1 GE 180] THEN #101=0.0 M99; Dette siger, at hvis variabel #1 (adresse A) er større end 180, så sæt #101 til nul og returner fra underprogrammet. Her er et eksempel på en IF angivelse som forgrener, hvis en variabel har været initialiseret til at indeholde nogen værdi. Ellers vil behandlingen fortsætte og en alarm genereres. Husk, når en alarm er genereret, standser program udførelsen. N1 IF[#9NE#0] GOTO3 (TEST FOR VÆRDI I F); N2#3000=11 (INGEN TILSPÆNDING); N3 (FORTSÆT); Gentagelse / Looping (WHILE DO END) Væsentlig forudsætning for alle programmerings sprog er evnen til at udføre en række af angivelser et givet antal gange eller at loope gennem en række angivelser indtil en betingelse er mødt. Traditionel G kodning tillader dette ved brug af L adresser. Et underprogram kan udføres et antal gange ved brug af L adressen. M98 P2000 L5; Dette er begrænset, fordi du ikke kan slutte udførelsen af underprogrammet på betingelse. Macroer tillader mere fleksibilitet med konstruktionen WHILE-DO-END. Syntaksen er som følger: WHILE [<betinget udtryk>]

Page 22: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 22 af 26Aalborg tekniske skole

DOn; <angivelser>; ENDn; Dette udfører angivelserne mellem DOn og ENDn så længe det betingede udtryk evaluerer til TRUE. Parenteserne om udtrykket er nødvendige. Hvid udtrykket evaluerer til FAKSE, så bliver blokken efter ENDn udført næste gang. WHILE kan være forkortet til WH. DOn-ENDn delen af angivelsen er et matchet par. Værdien af n er 1..3. Dette betyder at der ikke kan være mere end tre nestede loops pr. underprogram. En nest er principielt et loop indeni et loop. Et godt eksempel på, hvorledes nesting af WHILE loops kan bruges er i definering af en matrix. #101=3; #102=4; G0 X#101 Y4.; F2.5; WH [ #101 GT 0 ] DO1; #102=4; WH [ #102 GT 0 ] DO2; G81 X#101 Y#102 Z-0.5; #102=#102 – 1; END2; #101=#101 – 1; END1; ; M30; Dette program borer et 3 x 4 matrix hul mønster. Skønt nesting af WHILE angivelser kun kan gøres i tre niveauer, er der virkelig ingen grænser, fordi hvert underprogram kan have op til tre nesting niveauer. Hvis der nogensinde er behov for at neste til et niveau større end 3, så kan segmentet indeholdende de tre nederste niveauer af nesting laves i et underprogram således at begrænsningen overkommes. Hvis to separate WHILE loops er i et underprogram, kan de bruge det samme nesting indeks. For eksempel: #3001=0 (vent 500 millisekunder); WH [#3001 LT 300] DO1; END1; Dette er gyldig kode. Du kan bruge GOTO til spring ud af en region omgivet af et DO-END, men du kan ikke bruge et GOTO til at springe ind i et. At springe rundt inden i et DO-END område ved brug af GOTO er tilladt. Et uendeligt loop kan udføres ved at eliminere WHILE og udtryk. Således DO1; <angivelse>

Page 23: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 23 af 26Aalborg tekniske skole

END1; Udføres indtil reset nedtrykkes. Forsigtig! Den følgende kode kan være forvirrende: WH [ #1 ] D01; END1; I det ovenstående, vil det resultere i en alarm indikerende at ingen ”then” blev fundet, her refererer ”then” til D01. Udskift D01 (zero) til DO1 (bogstav O). Kommunikation med eksterne anordninger – DPRNT[ ] Macroer tillader yderligere evner at kommunikere med periferiske anordninger. Man kan gøre digitalisering af emner, foretage køre time inspektions rapporter eller synkronisere styringer med bruger fremskaffede anordninger. Kommandoerne beregnet for dette er POPEN, DPRNT[ ] og PCLOS. Kommunikations forberedende kommandoer POPEN og PCLOS er ikke krævet på Haas fræsere. Det har været inkluderet, således at programmer fra forskellige styringer kan overføres til Haas. På nogle styringer er POPEN krævet før brugen af en DPRNT angivelse. POPEN forbereder anordningen på den serielle port ved at sende en DC2 kode. PCLOS slutter kommunikationen med eksterne anordninger ved at sende en DC4 kode. Formateret output DPRNT angivelsen tillader programmøren at sende formaterede tekster til den serielle port. Enhver tekst og enhver variabel kan printes til den serielle port. Variabler kan være formaterede. Formen af DPRNT angivelsen er som følger: DPRNT[ <tekst> <#nnnn[wf]>…]; DPRNT skal være den eneste kommando i blokken. I den ovenstående <tekst> er enhver karakter fra A til Z eller bogstaver (+, -, * og mellemrum). Når en stjerne er udgivet, omdannes den til et mellemrum. <#nnnn[wf]> er en variabel fulgt af et format. Variabel nummeret kan være enhver legal macro variabel. Formatet [wf] er krævet og består af to digits i firkantede parenteser. Husk at macro variabler er virkelige numre med en hel del og en ubetydelig del. Det første digit i formatet betegner den totale plads reserveret i outputtet for hele delen. Den anden digit betegner den totale plads reserveret for den ubetydelige del. Den totale plads reserveret for output kan ikke være lig med nul eller større end otte. Således er det følgende format forkert: [00] [54] [45] [36] /* ikke legale formater*/ Et decimal punkt er udprintet imellem den hele del og den ubetydelige del. Den ubetydelige del er afrundet til det mindst betydningsfulde sted. Når nul pladser er reserveret for den ubetydelige del, så bliver ingen decimal punkter printet ud. Efterfølgende nuller er printet om nødvendigt, hvis der er en ubetydelig del. Mindst én plads er reserveret for hele delen, selvom et nul er brugt der. Hvis værdien af hele delen har færre digits end der er blevet reserveret, så udgives ledende mellemrum. Hvis værdien af hele delen har flere digits end der er blevet reserveret, så udvides området således at disse numre er udprintet.

Page 24: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 24 af 26Aalborg tekniske skole

En slæde retur er sendt efter hver DPRNT blok. DPRNT[] Eksempler kode Udgivelse N1 #1=1.5436; N2 DPRNT[X#1[44]*Z#1[03]*T#1[40]] X1.5436 Z 1.544 T 1 N3 DPRNT[***MEASURED*INSIDE*DIA**’]; MEASURED INSIDE DIA N4 DPRNT[ ]; (ingen tekst, kun slæde retur) N5 #1=123.456789; N6 DPRNT[X-#1[25]]; X-123.45679; UDFØRELSE DPRNT angivelser er udført ved blok tydnings tiden. Dette betyder, at programmøren skal være omhyggelig med, hvor DPRNT angivelsen fremkommer i programmet, især hvis hensigten er at printe stillings informationer. Generelt tolkes et program mange blokke frem, for at undgå at maskinen skal have pauser mellem bevægelserne. G103 er nyttig til begrænsning af ”fremad tolkningen”. Hvis du ønsker at begrænse den fremadgående tolkning til én blok, skal du inkludere den følgende kommando til begyndelsen af dir program: (Dette vil faktisk resultere i at der tolkes 2 blokke frem) G103 P1; For at annullere denne fremtolknings begrænsning, indsættes et G103 P0;. G103 kan ikke bruges når fræser kompensering er aktiv. OPERATIONS BEMÆRKNINGER Denne sektion forklarer de ekstra skærme og operatør aktioner der komme med macros. Macro variabler kan gemmes og genlagres til RS-232 eller ekstra tilbehøret floppy diskette, næsten som parametrer, indstillinger og offsets. Der refereres til ”part program input / output” sektionen for RS-232 sending og modtagelse af macro variabler, eller ”Floppy operation” sektionen for sending og modtagelse af dem med denne metode. Variabel display side Macro variablerne vises og kan modificeres gennem det aktuelle kommando display. Variabel displayet er lokaliseret efter operations timer displayet. For at komme til denne side nedtrykkes CURNT COMDS og brug side op/ned tasterne. Som styringen tolker et program, vises variablens ændringer på variabel displayet og resultatet kan ses. Siden indeholder op til 32 variabler og der kan ”bladres” i displayet ved nedtrykning af venstre/højre pil taste. Indstilling af en variabel fuldendes ved indgivelse af en værdi og derefter nedtrykning af WRITE tasten. Variablen der er belyst på skærmen er den variabel, der er effektiv. Søgning efter en variabel kan gøres ved at indgive variabel nummeret og nedtrykke op / ned pilene. Siden vil skifte til den, som indeholder den pågældende variabel og den indgivne variabel vil være det belyste punkt.

Page 25: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 25 af 26Aalborg tekniske skole

Variabel displayet repræsenterer værdierne af variablerne på program fortolknings tidspunktet. I tid kan de være op til 15 blokke forud for den aktuelle maskin aktivitet. Fejlfinding i programmer kan gøres lettere ved at indsætte et G103 i begyndelsen af programmet for at begrænse blok buffering, og så fjerne g103 blokken efter at fejl- findingen er udført. Editing (redigering) For det meste er redigering af macro programmer i styringen det samme som hidtil. Der er nogle få egenarter der skal tages hensyn til. Redigering af macro angivelser er mere åbne end tidligere. F. eks. er det muligt at anbringe et flydende punkt konstant indenfor en G-kode blok, men det giver ikke meget mening, og styringen vil komme med en alarm om kørselstid. For alle tilfælde af upassende struktureret eller upassende placeret macro angivelser, vil styringen komme med en behørig alarm. De fleste af disse alarmer har været skubbet ud indtil køre tiden, således at operatør redigeringen kan være mere fleksibel. Vær omhyggelig når udtryk redigeres. Parenteser skal være i balance og du vil ikke modtage en alarm før der køres. DPRNT[ ] funktionen kan redigeres næsten som en kommentar. Du kan slette den eller flytte den som et helt punkt, eller du kan redigere individuelle punkter indenfor parenteser-ne. Variable reference og format udtryk skal ændres som en hel enhed. Hvis du ønsker at ændre [24] til [44], så anbring cursoren således at [24] er belyst, indgiv [44] og nedtryk write tasten. Husk du kan bruge jog håndtaget til at manøvrere med. DPRNT[ ] udtryk Adresser med udtryk kan være noget forvirrende. I dette tilfælde, står den alfabetiske adresse alene. F. eks. den følgende blok indeholder en adresse udtrykt i X: G1 G90 X [ COS [90]] Y3.0 (KORREKT); Her står X og parenteserne alene og er individuelle redigerbare punkter. Det er muligt,gen-nem redigering, at slette hele udtrykket og erstatte det med en flydende punkt konstant. G1 G90 X 0 Y3.0 (!!! FORKERT!!!); Den ovennævnte blok vil resultere i en alarm ved kørsel. Den korrekte form er: G1 G90 X0 Y3.0 )KORREKT); Bemærk at nul er hægtet til X. HUSK når du ser en alfa karakter stå alene, er det et adresse udtryk. FANUC-STYLE MACRO FEATURES NOT INCLUDED IN HAAS CNC CONTROL Denne sektion oplister FANUC macro egenskaber, som endnu ikke er implementeret. MALIASING erstatter G65 Pnnnn med Mnn PROGS 9020-9029 G66 modal kald i hver bevægelses blok G66.1 modal kald i hver blok G67 modal annulleres M98 aliasing T kode PROG 9000, VAR#149, enable bit

Page 26: HAAS Makroprogrammering - TECHCOLLEGEmetalintra.techcollege.dk/UV-materialer/ME5185/HAAS_Mak...G06 X.5 Y.25 Z.05 F10. T10; Her har vi erstattet en ubrugt G kode, G06 i stedet for G65

CNC-teknik

HAAS makroprogrammering

HAAS_Makroprogrammering.doc OSP 03-02-03

Side 26 af 26Aalborg tekniske skole

M98 aliasing S kode PROG 9029, VAR#147, enable bit M98 aliasing B kode PROG 9028, VAR#146, enable bit SKIP/N N=1…9 #3007 Spejling med mærker for hver akse #4201 - #4320 aktuelle bloks modal data #5101 - #5106 aktuelle servo afvigelse ADDITIONAL OFFSETS G54.1P##FORMAT NAMES FOR VARIABLES for display formål ATAN [ ]/[ ] buetangent, Fanuc version BIN [ ] konversation fra BCD til BIN BCD [ ] konversation fra BIN til BCD FUP [ ] afkorte ubetydelig grænse LN [ ] naturlig logaritme EXP [ ] base E forklaring ADP [ ] gen skalering af var. til hele numre BPRNT [ ] Det følgende kan bruges som en alternativ metode for opnåelse af de samme resultater for nogle få ikke implementerede Fanuc macro egenskaber. GOTO-nnnn Søgning for en blok ved spring i den negative retning, dvs. bagud gennem et program, er ikke nødvendig hvis du bruger enestående N adresse koder. En blok søgning gøres fra den aktuelle blok, der er blevet tolket. Når enden på programmet er nået, fortsætter søgningen fra begyndelsen af programmet indtil den aktuelle blok er fundet.