What's new
What's new

Understanding workpiece location, setting program location etc.. Mits DWC110SZ

Wade C

Stainless
Joined
Jul 21, 2004
Location
Wiggins CO. USA
Spent yesterday trying to understand the workpiece location and offset stuff... and Im not getting it. So far - two parts the cut was good, but not in the right location.

I think Im battling this a bit because I have two other machines (okuma lathe with absolute encoders and Fadal and use the setup "wizard"), and worpiece locating is different on both... and Im thinking that knowing those two machines is interjecting confusion here. On top of that, I was so focused on listening when he was going through it, I failed to write it down... and yeah... well I have a good memory... just short. :(

The program that the guy that came out over the weekend to help educate me some wrote, Is written in a way, that makes sense to me... though different than I would do it if it were say on the fadal.


Epak, fill tank, circ on machining on, adaptive control on, etc
G90 G0 X0 Y0 position
G92 X0Y0 reset x and y as sort of a safety thing (is what he told me)
G00 X-.1 Y-.575
....profile....
M21 Cut wire - doesnt cut slug completely free
G0 X0 Y0
M2


He wasnt using any work offsets (g54 etc) in the program, going by my interpretation/memory, basically he was setting X0Y0, moving off the part a bit, and then run the program. Ive tried that, the best I could remember, and it and it seems the error in location is the amount its moved off the part prior to starting.

Ive tried a number of different ways of setting the offset... enough ways, that Im having a hard time remembering the different ways Ive tried.

Is there any chance that someone might have the time to walk me through setting the program position on the machine... in "layman's" or "idiot's" terms?

Ive read every section of the book that talks about edge finding, work piece positioning... and in each section... it makes sense right up til the end, where you tell the control something. In one case, I go through the locate edge, and it says "enter X&Y - input" - but Im sitting here looking at it, thinking... I only did X.. so I dont have a Y, and what X&Y do I enter? The Mach Coord? the desired X&Y for the location? And it just confuses the heck out of me.

Im still reading, and when I get time later today once the other machines are running, Ill go back to tinkering... but thought it might be worth asking here.

Sorry if this seems like a dumb question... apparently my skull is just a little thicker than I thought...

Thanks
Wade
 
Wade
Easiest way to explain it, I think.
1. Sense the edge of the block - move in 1/2 the wire diameter - set relative zero in that axis
2. Sense the other edge of the block - move in 1/2 the wire diameter - set relative zero in that axis
3. Move the machine to relative zero on the block (your programs start position)
4. In the program, G92x0y0
5. start the program with the machine at that point.


If you wanted to start 2" in x from your programmed start position, Change it to G92 x2.0y0. The machine needs to Know where it is relative to the programmed start point.

Hope this helps
 
Wade, don't beat yourself up...wire machines are different than mills, etc. Here is my simple explanation:

The main difference to ge used to is the g92 aspect....for some reason wire edms seem to like that method of setting the program position. Maybe someone can explain why?

Relative position is only for the operator to use...you edge find, set the known position, and then gererally move to a start position that you call program zero. The program will have a G92X0Y0 to set the program zero and everything runs from that coordinate system in the program. When you push Start, you better be in the right place! Generally 0,0.
 
Thats basically what I thought, but apparently, when I think Im setting the relative position, Im not setting it.

Would you mind walking me through the keystrokes to set the relative position?

Say for example, I edge find the part, X & Y, and account for the .010" wire, and make the .005 correction - and that ends up being X12. Y-4.8 for the corner point, which is what I want as my X0Y0. Also wondering if I need to set Z, in the case of a wire break, or will it remember where it was irrelevant? It broke a few times when the guy was here, and he just raised the Z, rethreaded and it did the rest, but dont remember him setting a Z.

Thanks
Wade
 
First, in the setup screen you have Rel-pos and Set-data columns for x,y,u,v and z. You set the relative position of x and y by using the arrow key to get into the field, and then key the number and INPUT the number. The Z should be set with a gage block under the upper flush cup--you don't want to zero it out by accident. The set data field is for moving...I prefer to keep it in INC mode so I can jog incrementally from where I am.

You should have the machine in Auto Return mode...for wire breaks, etc you can count on it returning to where it was when you paused. If you have auto return seperate selected in the Switch screen it will move just the x and y when you go back into auto mode and push start. If it isn't selected then it will just do a 3d straight line move back to the pause position (where you went into manual mode). So you don't really "set" the z except in the g92 x0y0z0 sense.
 
Do not think of a wire machine as having OFFSETS. Use the G92 X_ Y_ to set the machines CURRENT position to the the absolute coordinate _,_. The usual '_' is zero, but you can set this position to be any x,y number (for instance X-0.00052 after a pickup from left to right to call the edge X0) . Another important function of the G92 position is to establish the machine's RE THREAD position for automatically re-threading after a wire break (at least this is how it works on a Charmille). After the re thread at the G92 position the machine will re-trace without cutting the wirepath up to where the wire broke, then turn power on and continue cutting.

If you wish to set a relative position, use G75 X_ Y_ to set the current RELATIVE position. You can then use G75 X1.0 to move right 1". All this is for a Charmille, but I think it is common wire edm code. On edit, you need to re state G92 if you change the Z height when tapering, or the control will not properly position for taper locations.
 
From what little I know, you also aren't putting in any offset line moves. ie: G40, G41, G42.

Wire machines are very tough to get used to if you've ran a mill a lot. I had/have a hard time. They don't know where their at until you tell them where they are relative to where you've edge found. Sometimes I'll make the 0,0 point be the corner out in the tank, or other times I have it be back on the table. Doesn't matter either way, you can edge find a 3" part and also call it 3.0000. The big thing is you MUST start from where you've programed it from. Sometimes I start out in the middle of space, and use a G00 to move to where I want to, that way I can start from a simple number say 1.000,1.000...instead of say 3.0469, 4.3425 (you get the point).

As for the Z, I set my Z always at .012 above the workpiece. For stuff I know is good and flat I may tram down .002-.003 closer. If you have auto return on, a wire break will take you back to the last rethread point and thread at this location. From here depending on how your machine is set (if like mine) you z axis will raise 1.000" and thread. Then once threaded, will move z back to position, fill tank, and rapid back to location where it broke the wire following the cut path.
 
G92 sets your "Program Position". It is the reference position that all other commands in a program will reference against.

Say, for example, you draw your part in CAD as a square with the top left corner at X0 Y0. Now lets say your first hole that you are starting from is at X1 Y-1, or one inch over and down into the part. So you pickup off the corner then move your head to that location and that is where you start your program.

You would want your G92 to read "G92 X1.0 Y-1.0". Reason is, your CAM system used the same X0 Y0 corner for a datum, so all of the geometry in the program is written from that corner. But you're not starting from the corner, you're starting from X1.0 Y-1.0, so you need your "Program Position" to reflect that.

Simply stated, whatever you write in G92 will be what your "Program Position" reads when you press "Start" and that line of code is read.

Try it; write this following simple program:

G92X1.0Y1.0;
M02;

Load the program into Monitor and hit start. Watch your program position readout change.

Hope this makes sense. I've been doing a lot of training operators lately and this is often something people get stuck on.

Relative position exists ONLY for your reference. The machine will not look at that position when running a program, only "Program Position". It's a good idea to set your "Relative Position" to a number that means something to you when setting up your machine. Maybe set your start location at X0 Y0 so you can quickly jog back to start if you have to reset out of a program, for example.
 
Hi All:
I find the easiest way for me by far, is to decide how I'm going to edge detect my block and set my zero point accordingly.
Suppose I have a rectangular block in the vise and I can get to two sides and one end.
I'll often pick up the left hand edge, then pick up the right hand edge and go half way between them and call that position X zero in WCS G54.
I then pick up the end of the block and call that position Y zero in WCS G54.
I MAKE NO ATTEMPT TO COMPENSATE FOR THE WIRE DIAMETER NOR DO I TRY TO RE-SET THE ORIGIN FOR SOME OTHER LOCATION IN THE PART.

Next I draw the block in my CAM program so the origin is in exactly the same location.
Then I position my part within that drawn profile where I want it to be.
I get the CAM system to write and post the code also in G54, and then I wipe out the G92 line that the CAM system typically inserts into the code because it's redundant.
The beauty of doing it this way (although a lot of the formally trained CNC drivers I know get sniffy when they see it) is that I can look at a glance at how the part was picked up a year later and set up the same way if I need to run the part again.
There's no chance of making a direction error, there's no calculation, there's no transposing errors, nobody cares if the new block is 0.001" bigger than it was last time; everything is very easy and foolproof.

If I need to set my origin to the center of a hole because that's what's convenient to pick up, or that's what I need to reference other features to, I can do so.
I move the model in the CAM workspace until it's in the proper position so I don't have to get the clevers to figure out whether I have to shift to the left and make the number negative after compensating for the wire diameter in the correct direction; or shift to the right and call it +2.0 or any of that kind of error prone mental gymnastics.
I pick up the hole call the center of it X zero, Y zero and I'm done!!
I don't give a damn where it is on the drawing, or where the datum corner is on the drawing; so long as my model is good, I just move it in the CAM program until it's location corresponds to where I chose to set the origin on the block.

Since I am often running like an idiot in the shop; simple, foolproof and visually obvious has great appeal to me.
Now my machine is not a Mits, and I can't speak directly to the code requirements of a Mits, but I never get those kinds of stupid errors that come from having compensated to the left instead of compensating to the right, and my machine hums along quite happily with nary a whiff of a G92 anywhere.
The actual process of calling a location X whatever and Y whatever on my machine is simply a matter of calling up the location screen (on my Chmer it's called the "Coord Move" screen but then it's Chinglish (Taiwanese machine) so I accept that some of the screens have funny labels.
If I hit the X button and the "ENTER" button it will zero the X axis in the WCS that's highlighted.
If I type in X2,and hit "ENTER" it sets X to 2.0.
I'm sure your machine can do the same; you just need to find out how.

I must have a line in the Gcode that tells the machine the WCS it's supposed to use; if I do not write it explicitly the machine alarms.
The Sodick I used to have assumed it was G54 unless I told it otherwise.
Again, I have no idea what the Mits needs; but there are so many Mits drivers on this forum that the answers to those questions should be easy to come by.

So I only use G92 when I want to deliberately set a new origin or a new co-ordinate in a different WCS: for example when I'm cutting repetitive patterned parts using a sub.
I'll move to my first location in G54, re-set my origin in G55, and run the sub in G55, then go back to G54 for my next location, re-set the origin again in G55, run the sub again in G55 etc etc.

Cheers

Marcus
Implant Mechanix – Design & Innovation - home
Vancouver Wire EDM -- Wire EDM Machining
 
Thanks for all the input everyone. I think I understand what everyone is saying... and Im sure with time it will come. Ill keep digging and playing and see if I cant get a better understanding of things.

I thought I would post a drawing, and go through exactly what I did - hoping that maybe it will show where I have a misunderstanding... because I thought I had it, but it still doesnt do what I was expecting. Keep in mind, I have not printed the previous info out, and gone to the machine with it yet. I have our 8mo old daughter today, so not really going to get much done but watch her... but thought I could type up what I did if it helps any.

Image of the part is attached. Block is 1.5" x 1.5" x ≈2.2" Wire is .010"
X0,Y0 is top left corner.
White line is the block outline and Yellow is the cut path (including lead in for wire dia comp, and does not cut the part free - leaves .010" at the bottom right)

The program the guy wrote, and successfully cut one part while he was here is:
L100/FJ-JIG
E693F.039H1=.0066
G90
G00X0Y0
G92X0Y0
G00X-.1Y-.65
M78M78(FILL-TANK)
M80M82M84(FLUID-WIRE-MACHINING)
G01G42H01X0-.1Y-.575M90
G01X.1Y-.575
E959F.177
G01X.56250Y-.575
G01Y.5625Y-.2
G01X.7275Y-.2
G01X.7275Y-2.1
G01G40X1.493Y-2.1
M21
G00X0Y0
M58
M02

What I did/had to do to get a good part, using the above program.
Powered up Machine
Zero Point Returned
Aligned wire
(note after zero point return - Machine coord was 0,0,0,0,0 but relative was not - not sure if it needed to be at start - did not find reference to this being required in the book)
Moved over to block, Set Z at .005" above work piece.
Threaded wire (manually - will likely have another post later about getting the threader set correctly)
Edge find on X- side of block, once found, pressed Edge Find again to turn off, moved Y+ to clear part, stepped over +.005" to account for wire dia.
Pressed and held "Set Zero" then X+ button
Moved wire X+ a bit
Edge Find on the Y+ side of the block - once found, pressed Edge Find again to turn off, moved X- to clear part, stepped Y-.005 to account for wire dia.
Pressed and held "Set Zero" then Y- button.


Now - based on the program, one would expect that I could move over to clear the block, say X-.1 Y.1, run the program and it would go to X0Y0, then G92X0Y0 as sort of a verify kinda thing, and then run the part. But, if I did that, it would not move at the initial G90 G00.. it would stay stationary, and then the G92 would set X0,Y0 there, and obviously be off.

If I would move the wire manually to X0Y0 - and ran the program, all was fine.

So, where I am confused is, why does the setting of the program position of X0Y0 not stick, and the wire doesnt move to X0Y0 when it is set off a bit - its in Absolute, so I know Im not calling a 0 move in incremental...

At least Im where I can run single parts... and eventually the goal is to get where I can load the table with a fixture to hold 10-12 of these, and get the wire threader working, and be able to run the machine all night unattended. But one step at a time for sure right now! :D

Anyway, thanks for all the info so far! Will be printing it out and taking it with me to the machine and do some more learning :D

Wade
 

Attachments

  • Flat Jig.jpg
    Flat Jig.jpg
    38.8 KB · Views: 507
Hi Wade:
Does your machine assume the G54 work coordinate system if it does not get an explicit code for another WCS?
The reason this may matter, is that the machine does not know where you want to start unless you somehow tell it or it is allowed to assume the WCS from the last program it ran, or it assumes G54 if it gets no other signal.
So the possibility exists that it ignores the first G0 move and assumes G54 once it sees the G92 line.
I'm not saying it's so, but it's a possibility.
The only other potential cause of behavior like this is that the machine is still set in incremental mode so G0 X0 Y0 means "don't move" but you've got a G90 at the top of your code, so you're definitely in absolute, therefore, as you point out, that can't be the cause of your control not reading the G0 X0 Y0 line. (unless by some weird sense of perverse humor on the part of Mitsubishi, you NEED a decimal and a trailing zero for the control to read the move....my Defiance VMC is like that)

Try making sure you've set your origin in G54 when you first touch off, and then add a G54 call before G0 X0 Y0.
See what that does.

Try writing the G0 line as G0 X0.0 Y0.0 too and see if that works.

On my machine it will refuse to obey if the G54 line is separate from the G0 calls...don't ask me why, but the take home message is that your control MAY require a certain syntax or not...as I said in my last post, I've never run a Mits so I have no idea, but when I got my Chmer to replace the Sodick, I had lots of these puzzling issues to sort out and it was invariably details like this that were tripping me up.

Try also dumping the G92 line or commenting it out, and see what happens.
No harm will be done; wire EDM machines don't typically take off like a rocket smashing things like a mill or lathe do if you get something wrong; in the worst case you break the wire.

So experiment boldly; the solution will be simple...it's almost certainly some little booger in the gcode.
Cheers

Marcus
Implant Mechanix – Design & Innovation - home
Vancouver Wire EDM -- Wire EDM Machining
 
Image of the part is attached. Block is 1.5" x 1.5" x ≈2.2" Wire is .010"
X0,Y0 is top left corner.
White line is the block outline and Yellow is the cut path (including lead in for wire dia comp, and does not cut the part free - leaves .010" at the bottom right)

The program the guy wrote, and successfully cut one part while he was here is:
L100/FJ-JIG
E693F.039H1=.0066
G90
G00X0Y0
G92X0Y0
G00X-.1Y-.65
M78M78(FILL-TANK)
M80M82M84(FLUID-WIRE-MACHINING)
G01G42H01X0-.1Y-.575M90
G01X.1Y-.575
E959F.177
G01X.56250Y-.575
G01Y.5625Y-.2
G01X.7275Y-.2
G01X.7275Y-2.1
G01G40X1.493Y-2.1
M21
G00X0Y0
M58
M02

What I did/had to do to get a good part, using the above program.
Powered up Machine
Zero Point Returned
Aligned wire
(note after zero point return - Machine coord was 0,0,0,0,0 but relative was not - not sure if it needed to be at start - did not find reference to this being required in the book)
Moved over to block, Set Z at .005" above work piece.
Threaded wire (manually - will likely have another post later about getting the threader set correctly)
Edge find on X- side of block, once found, pressed Edge Find again to turn off, moved Y+ to clear part, stepped over +.005" to account for wire dia.
Pressed and held "Set Zero" then X+ button
Moved wire X+ a bit
Edge Find on the Y+ side of the block - once found, pressed Edge Find again to turn off, moved X- to clear part, stepped Y-.005 to account for wire dia.
Pressed and held "Set Zero" then Y- button.


Now - based on the program, one would expect that I could move over to clear the block, say X-.1 Y.1, run the program and it would go to X0Y0, then G92X0Y0 as sort of a verify kinda thing, and then run the part. But, if I did that, it would not move at the initial G90 G00.. it would stay stationary, and then the G92 would set X0,Y0 there, and obviously be off.

If I would move the wire manually to X0Y0 - and ran the program, all was fine.

So, where I am confused is, why does the setting of the program position of X0Y0 not stick, and the wire doesnt move to X0Y0 when it is set off a bit - its in Absolute, so I know Im not calling a 0 move in incremental...

Wade,

When you set your Origin, are you also clearing the registers?
Also, are you POSITIVE the machine itself is actually in RELATIVE mode in the set up screen?
After you set your Origin are you hitting RESET twice?

Aside - You can also manually enter your X,Y positions ( any, actually ) from the positioning screen by simply moving the cursor down to the appropriate AXIS DISPLAY field and entering the number and hitting INPUT. So, once you edge find in X, cursor over to X and enter "-.005" and press INPUT.

Other than that, you should not need to move prior to the program running. Did Mike write that program?
 
Wade

I see where you are planning to eventually put multiple workpieces in your machine. Here is our MOVE program that calls other subprograms. We have used this program starting with "G" machines and still use it on our new MV machines.

At the end of each subprogram a G23 is needed to return to this MOVE program

%
N10 G14 X50 Y51 U52 V53 P1
G53 G92 XH50 YH51 UH52 VH53
G90 G54 G00 X0 Y0 (G54 is the first work offset point)
K0.0 (sets program rotation)
G62X0Y0 ( sets or cancels x and y mirrors)
G22 L1 (runs Label 1)
N20 G14 X55 Y56 U57 V58 P1
G53 G92 XH55 YH56 UH57 VH58
G90 G55 G00 X0 Y0
K0.0
G62X0Y0
G22 L2
N30 G14 X60 Y61 U62 V63 P1
G53 G92 XH60 YH61 UH62 VH63
G90 G56 G00 X0 Y0
K0.0
G62X0Y0
G22 L3
N40 G14 X65 Y66 U67 V68 P1
G53 G92 XH65 YH66 UH67 VH68
G90 G57 G00 X0 Y0
K0.0
G62X0Y0
G22 L4
N50 G14 X70 Y71 U72 V73 P1
G53 G92 XH70 YH71 UH72 VH73
G90 G58 G00 X0 Y0
K0.0
G62X0Y0
G22 L5
N60 G14 X75 Y76 U77 V78 P1
G53 G92 XH75 YH76 UH77 VH78
G90 G59 G00 X0 Y0
G22 L6
%
 
...Another important function of the G92 position is to establish the machine's RE THREAD position for automatically re-threading after a wire break (at least this is how it works on a Charmille). After the re thread at the G92 position the machine will re-trace without cutting the wirepath up to where the wire broke, then turn power on and continue cutting...

On many Charmilles wire machines placing an M16 code in a program on any line after the G92 line will update the stored location for threading. This can be done as frequently as on every line of the program if desired.
 
Wade, there is a strategy for Mitz that can start from anywhere...it needs an "auto G53G92X0Y0" switch to be activated in the "switch screen", and a G5_ call out in the program. Personally I have not been 100 per cent successful with it and I now always start from a "known" position (usually 0,0).

You get used to starting the program, pausing, taking a deep breath and going to the setup screen to check the relative coordinates before resuming.
 
Wade, there is a strategy for Mitz that can start from anywhere...it needs an "auto G53G92X0Y0" switch to be activated in the "switch screen", and a G5_ call out in the program. Personally I have not been 100 per cent successful with it and I now always start from a "known" position (usually 0,0).

You get used to starting the program, pausing, taking a deep breath and going to the setup screen to check the relative coordinates before resuming.
Sybilsurf
We set up multiple workpieces using the MOVE program that I posted earlier in this thread. We store several start point locations (G54,G55,G56,etc..) of different programs. We store each blocks rotation and if it is mirrored or not. Once you do that, you can start the MOVE program from anywhere in the travels and it will go to the G54 and start the first labelled program. There are a few caveats though: It does not like axis rotation. If you stop in the middle of it and do a reset, you have to reset mirrors to none on the controller before running it again. This program also allows you to skip a block by just searching past it.
 
%
N10 G14 X50 Y51 U52 V53 P1
G53 G92 XH50 YH51 UH52 VH53
G90 G54 G00 X0 Y0 (G54 is the first work offset point)
K0.0 (sets program rotation)
G62X0Y0 ( sets or cancels x and y mirrors)
G22 L1 (runs Label 1)
N20 G14 X55 Y56 U57 V58 P1
G53 G92 XH55 YH56 UH57 VH58
G90 G55 G00 X0 Y0
K0.0
G62X0Y0
G22 L2
N30 G14 X60 Y61 U62 V63 P1
G53 G92 XH60 YH61 UH62 VH63
G90 G56 G00 X0 Y0
K0.0
G62X0Y0
G22 L3
N40 G14 X65 Y66 U67 V68 P1
G53 G92 XH65 YH66 UH67 VH68
G90 G57 G00 X0 Y0
K0.0
G62X0Y0
G22 L4
N50 G14 X70 Y71 U72 V73 P1
G53 G92 XH70 YH71 UH72 VH73
G90 G58 G00 X0 Y0
K0.0
G62X0Y0
G22 L5
N60 G14 X75 Y76 U77 V78 P1
G53 G92 XH75 YH76 UH77 VH78
G90 G59 G00 X0 Y0
G22 L6
%

That's pretty nice, dverstra. I'm also a fan of variable usage in my Mitsi. I use them whenever possible, actually. Really makes my life easier. In fact, I've replaced a many of the standard routines in my CAM with more customized versions that utilize variables to set values based on results ( like from edge finding ).
 
Zahnrad
It would be nice if the forum had a place to list these types of programs or a "sticky" thread at the top so that everyone could find them. I know that they are pretty much machine specific so maybe that wouldn't work all of the time.
 
Zahnrad
It would be nice if the forum had a place to list these types of programs or a "sticky" thread at the top so that everyone could find them. I know that they are pretty much machine specific so maybe that wouldn't work all of the time.

Well... one could always simply start a thread titled "Mitsubishi WEDM Variables and Sub Programs " and interested parties could contribute to it.*
Kinda what Don likely imagined for this place way back when... sharing information and techniques. I'm not sayin'... I'm just sayin'... :)

* - most likely more people will just read and take from it.
 








 
Back
Top