You are not logged in.
Hi folks,
As you can see here http://support.cgtech.com/forum/viewtop … 4574#p4574 I'm having a hard time with Vericut Tool Manager to deal with Multi-Tasking / Flash tools in Mazak machines...
The thing with these machines is that you define the spindle orientation angle in the tool manager of the CNC, so you can have something like this:
# CNC TOOL MANAGER MENU #
T01 - TURNING TOOL
Driven point #1: LENGHT A = 199.0897 LENGHT B = -12.0899 -> Spindle angle 0 degrees (FIELD INDEX ANG." in the pic as "Standard")
Driven point #1 Flashed: LENGHT A = 199.0897 LENGHT B = -12.0899 -> Spindle angle 180 degrees (FIELD "INDEX ANG." in the pic as "Flashed" or with a given angle)
In the NC program, I have:
T01.01 M6 - Changes the tool and orient the spindle at 0 degrees...
T01.02 M6 - Same tool, but flipped 180 degrees around the Z axis (Spindle axis)
So in Vericut tool manager, all tool IDs needs to be T01, however each driven point requires the tool model to be rotated about Z by the angle defined in the field "INDEX ANG."
That is: Each driven point requires a copy of the same tool ID with a different driven point... but Vericut tool manager does not allow you to create multiple tools with the same IDs, nor should it...
Million dollar question: How you Mazak users or CGTech is/are dealing with this? What are the current solutions when you have tool calls like shown above?
Tks
Daniel
Daniel Santos
Offline
Daniel,
Currently there is no option in the Tool Manager for storing the index angles for flash tooling. There have been some enhancement requests that have been logged requesting the capability. Logically, your next question might be "when?" and "how will it work?" I don't know, but I can tell you what I do today. The following explanation does not go into heavy detail due to the amount of work required, sorry. CGTech offers a Machine and Control building class where control logic is the primary topic and this kind of configuration can be adequately addressed, or just call your Sales representative to have us do all the heavy lifting.
First, your T command needs to be broken up for the data before and after the decimal point. Configuration > Word/Format > Name: T , Type: Macro , Sub-type: Composite-Numeric , Composite Format: *.2
Then you have the separate commands do something. Configuration > G-Code Processing > Word/Address > Registers >
T 1 *
* *
Variable: 4120
ErrorMacro
Text = {$}
T 2 *
* *
ErrorMacro
Text = {$}
Where the Word is "T 1" for the first part of the data and "T 2" for the second part of the data. The Range is "*", a wildcard for all values... to indicate that this 'branch' of commands should get executed for all values that may be found for "T 1". In my example I don't do anything but use an ErrorMacro to output the input values to the logger so that you can see how the function works. Try Project > MDI and enter: T01.02
You can also look at the samples file 7.1.6\samples\2_axis_lathe_id.vcproject to see "T 1" and "T 2" being used in a control file, but keep in mind that the Composite Format: *.2 used above is actually Composite Format: *2 in the sample.
So, now you need something useful to occur in the simulation. You should add a C axis component to the machine, above the Spindle component in the tree (and on a different subsystem if you already have a C rotary axis). Back to the control, under "T 1" you should have a macro for the ToolCode or something similar - it all depends on your actual machine/control. Under "T 2" you need to get the tool to rotate "as you like it". You can have a conditional branch for each value, one or two (to satisfy your requirement), where you turn the C axis component.
T 2 *
(T 2 1)
CAxisMachineMotion
Value = 0
ProcessMotion
(T 2 2)
CAxisMachineMotion
Value = 180
ProcessMotion
**
CAxisMachineMotion
Value = 0
ProcessMotion
The solution above assumes that you aren't using any tool pre-selects and that you are only making the tool call on the same line as your tool change M6. If you were not then you would store the position values in variables and only apply them at the appropriate times. Also, if you need more control than this, say for a T01.01 that should be at index zero degrees and a T02.01 that should be at index 180 degrees, then the solution above isn't good enough. What happens when you call the same tool with a different index number (ie. T01.01, then T01.02) without a tool change command on the same line? As you can see, we are getting into a deeper level of complexity than is easy to handle in a single forum posting.
We need to have some variables where we store this data and reference them as needed. We need some way to store the tool number, the index number and an index angle value in degrees for later reference.
Take a really large number that you would never use, say #1000000 and make that your base variable. Take your tool number times ten and add it. Use your index number as the last digit. Hence, tool 7 with index 3 becomes #1000073. Another example: If I want to store a value of 90 as the index angle for T12.04, then #1000124 = 90. You then reference this number at the tool change or T call.
Typical for a Fanuc control, system variable #4120 is used to store the tool code. Mazak probably has a different code, but I don't know what it is off-hand. If somebody does a tool change and then a tool pre-select for the next tool, #4120 now stores the value of the pre-select tool, not the tool in the spindle. So, at the M6 we need to make another variable store the value of #4120 before the tool pre-select steps on our number. Which variable you want to use is up to you. My understanding is that Fanuc didn't have a variable for the tool number loaded in the spindle (#1035) until the 31i model. Prior to that, depending entirely on the machine tool builder, it may have been #1035, so we will use that.
At the tool change make #1035 = #4120. At the M6 we also move the C axis to match the referenced variable from the T command, if there was one. If the machine can update the flash tool orientation without a tool change call then we need to look at #4120. If the T number and the tool loaded (#1035) match, move the C axis. If not, don't do anything until the tool change.
Well, that's it! I glossed over a lot of technique at the end but at least you get an idea of how we go about handling this.
Offline
Nathan,
Thank you very much for all this info... I can imagine how much work you put into this...
I already contacted our CGTech office, and they're working on this...
Currently, we do not pre-select the tool in the same block and I don't want to hard code the angles of the spindle to the .xx values... we have tools that needs to be rotated by 90 degrees and sometimes 180 degrees... both using Tx.01 and Tx.02... It really depends on which tool holders we have at our disposal... the Mazak e- series usually requires non standard tool holders where the position keyway is shifted by 90 degress in order to work correctly without any flashing... also we have multitasking tools where we have 0,120,240 degress (Txx.01,Txx.03,Txx.05)... and we flash these too... then we have (Txx.02,Txx.04,Txx.06) - So with a multitasking tool with 3 tools on it, we have: Txx.01,Txx.02,Txx.03,Txx.04,Txx.05,Txx.06 - Two consecutive driven points for each tool (One for non-flashed / One for flashed)
We can't afford to buy only these "distinct" tool holders as we have other machines in the shop using the same tool holder interface (ISO 50) and we share the tool holders between all these machines... thus is critical to us to be able to define the 0 angle in the tool offset table of the machine... and that would cause us problems if we hardcode the value in the control file associating an angle to each ".yy" value...
The other problem that specific tool holders can bring to our environment is that we can disassembly one of these holders and use it on a regular HBM machine, and then destroy a boring bar because the keyway was shifted by 90 degress and nobody noticed it.... pretty common when you have thousands of tool holders in your shop...
We do it like this today:
...
N190 T01.01 M6 Current tool change
N200 T02.02 Pre-Selection
...
I see that the correct solution would be to associate the ".yy" value in the string "Txx.yy" to the driven points in the tool manager... so T1.1 and T1.25 would call the tool ID 1 in the tool manager and the driven points 1 and 25 within this tool ID...
Also, CGTech should work in a solution to associate the spindle angle to a driven point just like in the real machine, and I'm glad that other users have requested this to them... Funny to see that CGTech competitors (NCSimul) already have this solution for more than two years...
It's not funny to band-aid your control files / tool libraries for such off-the-shelf functionality in Millturn machines... :x
Nathan, again, thanks for your rich reply, and let's see what comes from CGTech... :? I hope their support can read these post as a reference for what happens in the real world...
Cheers,
Daniel
Daniel Santos
Offline
I have a question about this exact step:
> Take a really large number that you would never use, say #1000000 and make that your base variable. Take your tool number times ten and add it. Use your index number as the last digit. Hence, tool 7 with index 3 becomes #1000073
How to do it in Vericut control file?
I mean, how to create variables whose name would be defined with evaluated expressions: Variable name = [1000000+#4320+$]. Override text field can be evaluated but variable name field can't. So how to do it?
Offline