Macro Fanuc Robodrill

Hier kunnen de echte profs onderons praten over besturingen die gebruikt worden in de industrie bijv; Fanuc, Fagor, Siemens, Mitsubishi, heidenhain besturingen

Moderator: Moderators

Gebruikersavatar
joopbos
Donateur
Berichten: 911
Lid geworden op: 12 mar 2008 19:34
Locatie: Dordrecht
Contacteer:

Macro Fanuc Robodrill

Bericht door joopbos »

Mijn avontuur met de Robodrill gaat verder.

Ik puzzel nu met een macro. Ik hoop dat de macrospecialisten hier op het form mij weer wat verder kunnen helpen.
Onderstaande macro Wordt aangeroepen vanuit M180 T12 ( bv T12)
Ik loop regel voor regel af met singleblock
Dat gaat prima en er gebeurt iedere regel wat ik verwacht.
Als ik aangekomen ben bij de regel waar G90 staat (met singleblock werkt tot hier) en ik geef weer een singleblock dan wordt de macro beëindigd. De verdere regels worden dus niet uitgevoerd. Er komt ook geen enkele foutmelding.
Wat zou er aan de hand kunnen zijn en wat is een mogelijke oplossing.

Code: Selecteer alles

% 
O9024
M9 
G0G91G40G49
G90
M1 
T#20M6 
#30=[#[2020+#20]/2]
#31=#30*SQRT[3]
G90G53X[468.6-#31]Y-[42.4-#30] 
G0G91Z-125 
G1G91G31Z-155F1000 
G0G91Z2
G1G91G31Z-5F50 
#[2000+#20]=#5023
#33=#5023
G0G91G28Z0 
G90   ( singleblock werkt tot hier)
IF[#33LT-267]GOTO90
IF[#20EQ14]GOTO95 
IF[#20NE14]THEN#[2000+#20]=ABS[#5023]-ABS[#599]
M99 
N90#[2000+#20]=0 
#3000=175(JAMMER, NIKS-GERAAKT)
N95#599=#33
#[2000+#20]=0
M99
%
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13530
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door Arie Kabaalstra »

Ik zou je daar geen antwoord op kunnen geven.. maar ik zie iets in de code waar mijn nekharen van overeind gaan staan..

"GOTO".. Kun je dat niet met GOSUB doen?..

https://homepages.cwi.nl/~storm/teachin ... stra68.pdf

Macro's zijn ook software tenslotte..

kort en goed komt het erop neer.. dat je bij een goto wel weet waar ie heen gaat.. maar niet of ie ooit nog terugkomt.. met een Gosub kom je ALTIJD terug, één regel onder de gosub..
Kjelt
Donateur
Berichten: 6328
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: Macro Fanuc Robodrill

Bericht door Kjelt »

En dat is precies wat hij niet wil (een regel er onder uitkomen)
Bestaat er geen #ELSE[] dan wordt het toch lastig zonder goto te werken in dit voorbeeld.
Maar ik dacht dat er wel een ELSE en ENDIF was maar misschien niet op zijn machine?
Gebruikersavatar
joopbos
Donateur
Berichten: 911
Lid geworden op: 12 mar 2008 19:34
Locatie: Dordrecht
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door joopbos »

ik ken het gevaar van het gebruik van GOTO. Lang lang geleden heb ik programma's gemaakt met GWBasic en met behulp vaak ongewild spagetti-software gemaakt met GOTO.

Maar in dit boek https://sovathrothsama.files.wordpress. ... macros.pdf worden uitsluitend GOTO voorbeelden gebruikt.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13530
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door Arie Kabaalstra »

Wat ik even snel uit dat boek opmaak..

Fanuc kent dus geen Gosub..

Verder viel me de volgende passage op:
The struc ture of a typ i cal Fanuc macro pro gram is based on the old est and sim plest of all com -
puter lan guages - Ba sic™. The Ba sic lan guage proved to be sim ple, yet pow er ful, lan guage for its
time. Al though the Ba sic lan guage in its orig i nal form is now a his tory, many of its rules and
struc tural forms still do ex ist. Ba sic lan guage has de vel oped into the cur rent Vi sual Ba sic, very
mod ern, and struc tured, high level lan guage. One of the rem nants of the old Ba sic is the func tion
GOTOn, and GOSUB, both con sid ered to day a very poor way of lan guage based pro gram structure. How ever, the other branch ing func tions (IF, IF-THEN, and WHILE) are avail able to control the flow of the macro pro gram.
Both considered today as very poor way of language based program structure.. ... "Pardon?"
't mag aan mij liggen.. maar dat hele boek neem ik meteen niet meer serieus.. of in elk geval de schrijver niet..

Heidenhain kent ook geen Gosub, maar wel Label Call.. en daar zit nog een handigheidje in.. als je naast het begin van een Label ook een eind programmeert, met Label 0, dan gedraagt Label Call zich als een Gosub.. , als je meerdere labels boven elkaar zet (label 1, Label 2, label 3 enzovoorts.. maar alleen onder Label 3 een Label 0 zet.. kun je naar Label 1, 2 of 3 springen.. maar hij loopt in alle gevallen door tot Label 0..
Dat kon vroeger in Basic ook.. door gosubs naar verschillende regels te programmeren, en maar 1 Return.
Maar dat terzijde..
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12054
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door hugo stoutjesdijk »

Ik zal proberen terug te komen op de vraag, wel of geen gosub's heeft natuurlijk niets te maken met jouw uitdaging. Maar is wel weer een feilloze afleidings manoeuvre om geen oplossing te hoeven bieden. :lol:
Zou het kunnen dat de regels met formules niet als single block worden getoond, maar achter elkaar uitgevoerd, en je zodoende direct bij M99 aan komt?
Dat had je dan ook al een paar regels eerder op moeten merken.
Anders zet je tussen die 3 regels met IF.. een regel met alleen een G4
Dan zie je snel genoeg wat er wel of niet gebeurt.

Code: Selecteer alles

G0G91G28Z0 
G90   ( singleblock werkt tot hier)
IF[#33LT-267]GOTO90
G4 P100
IF[#20EQ14]GOTO95 
G4 P100
IF[#20NE14]THEN#[2000+#20]=ABS[#5023]-ABS[#599]
G4 P100
M99 
N90#[2000+#20]=0

Ik zou willen dat ik een modus had dat single block alleen actief was op regels met bewegingsinformatie. (dus eigenlijk een prima besturing :lol: )

Eigenlijk zou ik wel een M functie willen hebben om getuurd over te stappen op single block. (een uitgang doorlussen op die single block knop kan natuurlijk altijd nog)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Kjelt
Donateur
Berichten: 6328
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: Macro Fanuc Robodrill

Bericht door Kjelt »

Arie Kabaalstra schreef: 31 mar 2021 22:51 Both considered today as very poor way of language based program structure.. ... "Pardon?"
't mag aan mij liggen.. maar dat hele boek neem ik meteen niet meer serieus.. of in elk geval de schrijver niet..
De schrijver heeft gewoon gelijk, GOTO wordt tegenwoordig als "not done" beschouwd met de uitzondering dat sommigen het wel als escape uit een functie gebruiken (bv als er een fout optreedt dan foutcode toekennen en naar einde springen).

Gosub in G code is eigenlijk een kreupele vorm van functiecall omdat G code geen dynamisch alloceerbare abstracte variabelen kent maar alleen harde statische registeradressen, die je dan maar moet misbruiken als variabele.
Dat is natuurlijk zo bagger als het maar kan zijn maar we moeten het er mee doen.
Het gebruik van een functie of subroutine zou dan ook meer een algemene en meerdere keren (her)bruikbare routine dienen te zijn en niet toegespitst op een specifiek gcode werkstuk.

Dus die schrijver heeft helemaal gelijk. Alleen jij denkt met gosub aan algemeen herbruikbare macros en daar heb jij dan weer gelijk in dat is nog steeds gangbaar.
Just my two cents.
Gebruikersavatar
andrefc101
Donateur
Berichten: 3733
Lid geworden op: 26 dec 2007 08:39
Locatie: Bergen op Zoom
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door andrefc101 »

hugo stoutjesdijk schreef: 01 apr 2021 08:10 Zou het kunnen dat de regels met formules niet als single block worden getoond, maar achter elkaar uitgevoerd, en je zodoende direct bij M99 aan komt?
Dat idee had ik eigenlijk ook, ik denk dat single block daar niet werkt. Maar met M99 springt hij toch terug naar het hoofdprogramma, zou je daar een msg kunnen zetten met “aangekomen” ofzo, weet je in ieder geval dat dat werkt.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12054
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door hugo stoutjesdijk »

Je kunt jezelf wel een goede programmeur vinden door te vertellen wat er allemaal niet klopt aan een programmeertaal, in mijn ogen ben je pas een goede programmeur als je met de handicap van een wat minder flexibele programmeertaal toch een knap programma in elkaar knutselt.
Zelfs spaghetti kan met structuur, kwestie van goed planning.

Als de weg van A naar B niet bestaat, verzin je toch ook een route via K R Z Y.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13530
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door Arie Kabaalstra »

Dus die schrijver heeft helemaal gelijk. Alleen jij denkt met gosub aan algemeen herbruikbare macros en daar heb jij dan weer gelijk in dat is nog steeds gangbaar.
Just my two cents.
Wat GOTO betreft..Ja.. GOTO gebruik je alleen daar wanneer je uit een bepaalde routine wilt stappen.. maar dat kan net zo goed met een GOSUB.
Ik vind het niet kunnen beschikken over GOSUB een groot gemis.
hugo stoutjesdijk schreef: 01 apr 2021 14:29 Je kunt jezelf wel een goede programmeur vinden door te vertellen wat er allemaal niet klopt aan een programmeertaal, in mijn ogen ben je pas een goede programmeur als je met de handicap van een wat minder flexibele programmeertaal toch een knap programma in elkaar knutselt.
Zelfs spaghetti kan met structuur, kwestie van goed planning.

Als de weg van A naar B niet bestaat, verzin je toch ook een route via K R Z Y.
“Program testing can be used to show the presence of bugs, but never to show their absence!”
― Edsger W. Dijkstra

tja.. hoe goed je ook bent...

“If debugging is the process of removing software bugs, then programming must be the process of putting them in.”
― Edsger W. Dijkstra

ok.. ik citeer Edsger Wiebe Dijkstra vaak, maar zijn qoutes zijn voor mij de "10 geboden voor de programmeur"

Ik denk dat de suggestie van Andrefc:
Dat idee had ik eigenlijk ook, ik denk dat single block daar niet werkt. Maar met M99 springt hij toch terug naar het hoofdprogramma, zou je daar een msg kunnen zetten met “aangekomen” ofzo, weet je in ieder geval dat dat werkt.
wel een goede is, Ik maak daar zelf ook regelmatig gebruik van.. Niet alleen je code documenteren, maar ook zichtbare "vlaggen" neerzetten.. die gehesen worden tijdens de afloop van je macro.
Ik weet niet of, en hoe het mogelijk is om met GOTO's als enige "Sprong" in een programmeertaal onderprogramma's af te lopen.
de Label-Calls in Heidenhain gedroegen zich ook weer anders, en dat heeft ook zo zijn gevolgen voor het aflopen van je programma of macro.

Elke programmeertaal heeft zo zijn eigenaardigheden..Ik noemde elders al het overvloedige gebruik van accolades in C#, de ; aan het eind van elke regel code bij Pascal en C/C++ en C#, het gebruik van een : of een ; voor een nieuwe opdracht in basic.. bij een : gaat ie verder op de volgende regel, bij een ; zet ie de output erachter..

Verder ben ik zelf nog niet helemaal op de hoogte van hoe het precies werkt met klassen, DLL's, objecten, en dergelijke.. maar al doende leert men.
Kjelt
Donateur
Berichten: 6328
Lid geworden op: 14 jun 2007 21:51
Locatie: Eindhoven

Re: Macro Fanuc Robodrill

Bericht door Kjelt »

hugo stoutjesdijk schreef: 01 apr 2021 14:29 Je kunt jezelf wel een goede programmeur vinden door te vertellen wat er allemaal niet klopt aan een programmeertaal.
Afleidingsroutine van je want het een sluit het ander niet uit.

De echte vraag Hugo is waarom deze G code taal niet is mee-geevolueerd naarmate de controllers/computers evolueerden.
Je kunt hoog en laag springen maar het feit dat je 6000 registers vast alloceert voor bepaalde variabelen en als programmeur deze op hun index ipv hun naam moet onthouden , dat is gewoon begin jaren 70, toen computers inderdaad met moeite die 8kB geheugen bij elkaar konden sprokkelen.

Dat je anno 2021 nog moet nadenken of opzoeken in welk register welke waarde opgeslagen zit is natuurlijk belachelijk, net zo belachelijk als dat je nu vandaag de dag nog een ponsbandje op je ponsbandlezer van je CNC zou moeten invoeren :lol:
Gebruikersavatar
joopbos
Donateur
Berichten: 911
Lid geworden op: 12 mar 2008 19:34
Locatie: Dordrecht
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door joopbos »

Iedereen die mij probeert te helpen mijn puzzel op te lossen, bedankt
Praktische tip van Hugo en college programmeren van Arie en wat kanttekeningen daarbij van anderen.

Maar gegeven is: De Robodrill heeft een macrotaal die is zoals die is. Met GOTO's
Gegeven is ook dat ik mij een weg probeer te vinden door het woud van variabelen in de Fanuc.
Gegeven is ook dat ik totaal geen ervaring heb met het maken van macro's voor een cnc machien.

Er is het advies van Hugo uitgevoerd, er zijn G4 ... tussen de regels gezet. Bij het aflopen is te zien dat de G4 regels stuk voor stuk worden afgelopen.

Mogelijk zit er ergens een gedachtekronkel im mijn macro. Ik zal vanavond uitleggen wat de bedoeling is van de macro.
Gebruikersavatar
andrefc101
Donateur
Berichten: 3733
Lid geworden op: 26 dec 2007 08:39
Locatie: Bergen op Zoom
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door andrefc101 »

joopbos schreef: 01 apr 2021 17:49 Mogelijk zit er ergens een gedachtekronkel im mijn macro. Ik zal vanavond uitleggen wat de bedoeling is van de macro.
Ik zou toch overwegen, zoals eerder aangegeven, hier en daar een vlag neerzetten, kan je zien waar je blijft...
Voor de rest: succes!
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13530
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Macro Fanuc Robodrill

Bericht door Arie Kabaalstra »

Mogelijk zit er ergens een gedachtekronkel im mijn macro.
"je gaat het pas zien als je het doorhebt.."🤪

Macro's programmeren is niet moelijk, maar het is niet eenvoudig.
Gegeven is ook dat ik mij een weg probeer te vinden door het woud van variabelen in de Fanuc.
is er niet ergens een overzicht van alle parameters?.. 'k heb ook wel de nodige macro's geschreven op Heidenhain besturingen, en daar had je 100 vrije parameters.. en een aantal gereserveerde. Q1-Q99 waren vrij te gebruiken, Q108 was de gereedschapsradius, Q107 de lengte.. als ik het me goed herinner.

Als ik Macro's schrijf voor mijn machines, dan heb ik altijd de Manual van EdingCNC op het rechterscherm op de bladzijden met de parameters, en mijn eigen lijstje parameters op het linkerscherm.. het middelste scherm is dan voor Notepad++ waar ik mijn macro's in schrijf.
Documenteren, Commentaren in je code, en vastleggen welke vrije parameters je waarvoor gebruikt in je code in een apart documentje (of.. je voegt de parameter lijst uit de Manual samen met je eigen lijst.. dan hoef je minder te zoeken..
Plaats reactie