What's new
What's new

Fanuc G-code vs Mazak EIA/ISO

Mazatrol is probably great for alot of things. Just remember Mazatrol is a custom macro with a custom screen asking you questions. In the end it is running G code, it is just an interface. Everyone loves mazatrol for lathes, at least simple 2 axis lathes. From what I have read here it does not handle some tasks very well. I have read posts telling people to call a G code sub program for some tasks. I believe it is a great conversational control that is effective, but why should I learn a language that only 1 MTB understands when I can learn (already know) one that all MTB's understand, ie G code. Had I limited my self to Mazatrol 10 years ago when we got our first Mazak, I would have been completely lost when the boss bought a Citizen. I am pretty sure being able to write custom macros will look a tad better on my resume than being able to write a Mazatrol program. Just my opinion, and its worth exactly what you paid for it.
 
So again:
- triple-start thread, ca. .210 deep
- insert width is .180 whereas thread root width is .366, so it has to be widened by taking 3 passes on each start
- feddrate is aggresive
- Mazatrol offers multistart threading, but it cuts each start to full depth. Then we offset SPT-Z and cut to full depth again. That overloads insert, especially at first unit. As a result - DEP-1 , DEP-2 are not optimal, as we try to prevent insert failure.
- sure we can divide the whole process into zillion of units and cut further on each unit, but it will always be far from optimal strategy.
- the answer? Custom macro program that lets cut each start and each pass to set depth, then set new depth ad repeat, until finished.

Ah ok, I understand the problem better now. You want to do the same DOC on each start of the thread once before going to a deeper level. I glossed over the fact that it was a multistart thread.

Did you edit the program to remove the IF-THEN and try it again on the machine?
 
When the Mazak guys were doing training on the Integrex we purchased, they had a look at the work we needed to do on it. They said they would not bother teaching the Mazatrol side of the control because it would not be able to do any of the work we needed.

Programmed it all on the EIA side with NX just like any other control on the shop.
 
My best guess would be that you do not have extended macros option turned on. Try using #100 or #500 instead of #600
Bingo.
2 days ago I worked on another Mazak (Cybertech) and indeed - 600 macro variables were listed as an option.


Also - Can you confirm that the machine will accept IF/THEN statements? I personally have not had luck with these, and instead would have to structure my IF conditional statements another way...

You cannot use IF-THEN statements on Matrix nexus, that is only possible on a Smooth control.

Bingo.


Did you edit the program to remove the IF-THEN and try it again on the machine?

I changed 600 macro variables to 500 series, and IF ... THEN into IF....GOTO statements.
Now I need some time on my hands to check it on the controller.

I will let know here how it works.
Thank you for those who helped.

All in all - looks to me that EIA macro capabilities are quite limited in comparison to FANUC. In particular - lack of IF .... THEN makes programing more complicated.
 
So thread got weird fast, but does anyone know about some old fanuc g code like 6t era??
 
Nobody "covered" such "fact".
It was only you who claimed that Mazatrol does the job.

Looks like you are unable to read the program I posted and visualize the problem.

So again:
- triple-start thread, ca. .210 deep
- insert width is .180 whereas thread root width is .366, so it has to be widened by taking 3 passes on each start
- feddrate is aggresive
- Mazatrol offers multistart threading, but it cuts each start to full depth. Then we offset SPT-Z and cut to full depth again. That overloads insert, especially at first unit. As a result - DEP-1 , DEP-2 are not optimal, as we try to prevent insert failure.
- sure we can divide the whole process into zillion of units and cut further on each unit, but it will always be far from optimal strategy.
- the answer? Custom macro program that lets cut each start and each pass to set depth, then set new depth ad repeat, until finished.



The fact that you you have survived in the business for 15 years without using G-code does not mean that Mazatrol is so omnipotent. It only means that you do relatively trivial tasks. At certain level of complexity - conversational will fail to G-code and macro.



AND threading ? REALLY? Yo must be a genius!

You clearly need to stay with F(uck) AN(other) U(neducated)C(customer) because Mazatrol, in all its simplicity and diversity is just too much for you to conquer. I understand, some people need to take things 1, simple, microstep at a time and this is just waaaaayyyyy over your head. Don't feel bad, the world needs democrats, too. Someone has to pick and clean my vegetables.
 
Ahh CV... just too smart for the rest of us I guess? I remember going into an "all Mazatrol" shop... the lead/top lathe guy didn't know what an insert drill was... the *top* mill guy didn't know anything about lathes, and inisisted you had to ""play"" with the numbers in Mazatrol to get a correct sized chamfer (not talking a few thou on size, like WAY big or nothing...)...

I watched the *veteran* owner, who had XX years of running a shop and using Mazatrol slam a 1" (or so) endmill into the top of a part he was trying to mill. Yes, I've had my mistakes, no harm no foul, but don't piss up my leg and tell me it's raining. I'm sure there is a time and place for it. but it is NOT the end all be all for porgramming. I would much rather be at my pc running a simulation of a part I cammed and say oops when I fat fingered a clearance (whatever) number, than standing in front of a machine control and having to explain why I broke that $200 thread mill because... oops?...
 
Yes you can...in a comment. Example:
(*IF* PROGRAMMER IS A FUCKING MORON *THEN* WE MUST RESORT TO G-CODE)
Well that certainly sums up your level of intelligence.

Endorsing Kevin's comments, there are plenty of applications where EIA programming is better than Mazatrol programming and particularly in a true production environment. In the most part, those that are absolutely one eyed with regards to Mazatrol being superior to G Code programming are those that were brought up using Mazatrol and don't have a clue about G code programming.
 
Well that certainly sums up your level of intelligence.

Endorsing Kevin's comments, there are plenty of applications where EIA programming is better than Mazatrol programming and particularly in a true production environment. In the most part, those that are absolutely one eyed with regards to Mazatrol being superior to G Code programming are those that were brought up using Mazatrol and don't have a clue about G code programming.
I totally agree and some of my Mazatrol programs could benefit from a bit of EIA. But not enough to make me learn it. Most of my programs are true production parts and once optimised nothing gets changed. I do have a router with a F control. Mastercam and .dwg files. Router runs production parts and I think the last time I wrote/changed a program was 3 years ago.
Looking forward to Smooth G in a few weeks.
 
So I checked modified program ( 600---> 500 variables, IF...THEN --> IF... GOTO) on Matrix Nexus and it still does not work as desired.

Modified code:
-----------------------------------------------------------------------------------------------------------

O6523
(**********)
(NOT PROVEN)
(*************************)

(INSERT - *******************)(**********)
(DRAWING NO- *************)

(DECREASING DEPTH OF CUT - NOT A FANUC G76 ALGORITHM)
(FANUC ALGORITHM WOULD NOT BE SUITABLE FOR THIS JOB - DOC DECREASES TOO FAST)

(MACRO DECREASES DOC FROM DEPTH OF 1ST CUT UNTIL MIN DOC IS REACHED AT NEXT-TO-LAST PASS)
(,MAINTAINING MORE EVEN LOAD ON THE INSERT)
(,AND THEN CUTS AMOUNT SET FOR FINISH ALLOWANCE AS VERY LAST CUT)

(PROGRAM USES MACRO VARIABLES)
(INPUT REQUIRED VALUES IN LINES N110-N118 BELOW: )
N110#500=.0 (INITIAL THREAD HEIGHT ---> THREAD ALREADY CUT, IF ANY)
N111#501=.2085 (TARGET THREAD HEIGHT ---> HGT IN MAZATROL; P IN 2ND LINE OF G76 IN FANUC)
N115#506=.01 (DEPTH OF FIRST CUT ---> Q IN 2ND LINE OF G76 IN FANUC)
N116#507=.006 (MINIMUM DEPTH OF CUT ---> Q IN 1ST LINE OF G76 IN FANUC)
N117#509=.0005 (AMOUNT FOR FINISH ALLOWANCE ---> R IN 1ST LINE OF G76 IN FANUC)
N118#510=.180 (NOMINAL INSERT ROOT WIDTH. MAKE IT SMALLER TO CUT WIDER THREAD)

GOTO222 (DATA VERIFICATION)
N120

(CALCULATIONS)
#515= [#506+#507]/2(AVERAGE DOC)
#517= [#501-#500-#509](HGHT TO CUT MINUS FINISH ALLOWANCE)
#519= FUP [#517/#515](NUMBER OF CUTS = HGHT TO CUT/AVERAGE DOC ROUNDED UP )
#516= [#506-#507]/#519(DECREMENT OF EACH PASS)
#530= [#519*#516]+#507(CURRENT DOC)

G54
G28 U0.
G90 G40 G50 S900

G28 U0.
M42 (CHANGE TO APPROPRIATE GEAR ON MAZAK)
G0 T0707 (TOOL CALL OUTPUT TO MAIN PROGRAM AFTER TESTS ARE FINISHED)
G97 S210 M03
#518= [[7.671-2*#500-2*#517]+2*[#519*#515]-2*[#515-#507]]

(DECREASING PASSES)
WHILE [#519GE0. ]DO1
#520=0 ( C-AXIS THREAD START POSITION)
WHILE [#520LE241000 ]DO2

G0 Z [1.0-0.](CENTRAL CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2

G0 Z [1.0+[[-.366+#510]/2]](LHS CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2

G0 Z [1.0+[[.366-#510]/2]](RHS CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2
#520= [#520+120000]
END2

#519= [#519-1.]
#530= [#530-#516]
#518= [#518-2*#530]
END1

(---------------------)
(LAST PASS)
#518= [7.671-2*#501]
#520=0
WHILE [#520LE241000 ]DO1
G0 Z [1.0+[[-.366+#510]/2]](LHS CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2
G0 Z [1.0-0.](CENTRAL CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2

G0 Z [1.0+[[.366-#510]/2]](RHS CUT)
G0 X8.2
G0 X [#518] M8
G32 X [#518] Z-5.75 Q [#520] F1.785
G0 X8.2
#520= [#520+120000]
END1
(--------------------------)

M9
G28 U0.
G0 Z2.
M0
GOTO300

N222 (DATA VERIFICATION)
IF [#500LT0.0 ]GOTO230
IF [#500GE#501 ]GOTO232
IF [#506LT#507 ]GOTO234
IF [#501LE.205 ]GOTO236
IF [#501GT.2105 ]GOTO236
IF [#506LT.003 ]GOTO238
IF [#506GT.015 ]GOTO238
IF [#509GT.002 ]GOTO240
IF [#509LT.0 ]GOTO240
IF [#510LT.175 ]GOTO242
IF [#510GT.195 ]GOTO242
GOTO120;

N230#3000=1 (INITIAL THREAD HEIGHT MUST NOT BE < 0)
N232#3000=1 (INITIAL THREAD HEIGHT MUST BE LESS THAN TARGET THRD HGHT)
N234#3000=1 (DEPTH OF FIRST CUT MUST BE NO LESS THAN MINIMUM DOC)
N236#3000=1 (WRONG THREAD HEIGHT)
N238#3000=1 (WRONG DEPTH OF FIRST CUT)
N240#3000=1 (WRONG AMOUNT FOR FINISH ALLOWANCE)
N242#3000=1 (WRONG INSERT ROOT WIDTH)

N300
M30 (--> M99 AFTER TESTS ARE FINISHED)
%

-----------------------------------------------------------------------------------------------------------------------------

Controller alarms out:
806 ILLEGAL ADDRESS ( 6523, 222, 88)
That simply means that controller found an error in program O6523, block 88 in sequence starting at N222 ( line N222 considered as block 0)

Quote from PARAMETER LIST, ALARM LIST, M-CODE LIST for MAZATROL MATRIX :

806 ILLEGAL ADDRESS (WNo., NNo., BNo.) B I (L) O (S) Red (Blue)
Cause: An address that is not covered in the specifications has been used.
Action: Check and correct the corresponding address in the program, and also check the specifications


Quote from EIA/ISO manual:

Sequence numbers identify command blocks forming a machining program. A sequence number
must be set using the letter N (address) and a numeric of a maximum of five digits that follow N.
Block numbers are counted automatically within the NC unit, and reset to 0 each time a program
number or a sequence number is read. These numbers will be counted up by one if the block to
be read does not have an assigned program number or sequence number.
All blocks of a machining program, therefore, can be uniquely defined by combining program
number, sequence number, and block number as shown in the table below.

It does not make any sense to me. There is no block 88 in sequence number starting with N222 - line N230 resets countdown.


After getting rid of whole error checking portion of program - it seems to work OK.

The same code (with data checking section included) works fine on FANUC Oi-TD.
 
OK, maximum available length of alarm message is 31 characters.
And #3000=1 will not display custom message. It must be 3000=(21 to 6999).


I truly hate Mazaks.
 








 
Back
Top