What's new
What's new

Osp-p300 multus b200-subroutine for subchuck alarm when new part is loaded?

MULTUSB200

Plastic
Joined
Feb 13, 2016
Hello dear machinists!

I have had a nasty crash this week when an operator forgot to unload a part from the subspindle, and loaded a new part to the main spindle.
this resulted in a bad crash which threw the Y axis 0.3mm off perpendicular and more.
the machine is now re calibrated and is down for a week now.

I want to write a simple subroutine that will stop the program from running if there is a part loaded in the subspindle.
I would like it to continuosely loop if possible until the operator realizes what is wrong.

in simple wordds : IF [SUB SPINDLE IS CLOSED] THEN M0(REMOVE PART FROM SUB CHUCK/RESET/USE ALARM)

of course if you have another solution I would love to read your input.

Thank you!
 
I like where you are going with this and have done a similar program to ensure the correct tool is in the spindle at any given point in the program on the mills. I wrote a Macro and assigned it then address it to change/verify and stage the next tool. I think if you went the Macro direction vs the IF- GOTO method, you may find more user friendly. You could then call it on every program it's needed with a G111, or whichever you assign it as ..... good luck with this! I look forward to seeing what you come up with


Sent from my iPhone using Tapatalk
 
Hello dear machinists!

hello 2 u 2 :)

machine is now re calibrated and is down for a week now

if i may : you shoud definetly crash that machine more often, so to get experience with realignment and do it in only 1-2 days :)

I want to write a simple subroutine that will stop the program from running if there is a part loaded in the subspindle

i can not provide code that returns chuck clamp status :) please consider that a lathe may be ( wrong ) configured to give a go signal even if material is not clamped

I would like it to continuosely loop if possible until the operator realizes what is wrong

in some cases i also use infinit looping, so to force the operator to reset the control

Code:
[COLOR=#3E3E3E]    IF [ SUB SPINDLE IS NOT CLOSED ] NJUMP
        NLOOP [/COLOR][COLOR=#3E3E3E]M0 ( REMOVE PART FROM SUB CHUCK/RESET/USE ALARM )
[/COLOR][COLOR=#3E3E3E]        GOTO NLOOP[/COLOR][COLOR=#3E3E3E]
[/COLOR][COLOR=#3E3E3E]    NJUMP[/COLOR]

if you have another solution I would love to read your input

i would recomand torque skip / load monitor:
... slow monitorized W feeding when getting closer to 1st chuck ( good to have the 1st spindle stopped )
... put a road in that fancy B head, and check if there is a part in 2nd chuck

thus monitorized traveling among a critical segment :)

this sample stops the axis after Z-1.2, so it will stop the cnc even if no part is there, so no good for you :)
Code:
[COLOR=#008000][SIZE=1]
[SIZE=2]    G29 PZ=60 (*)
    G22 Z-1 PZ=40 G94 F50 D.5 L.2  ( feeds to Z-1 unless load reaches 40%. Will start searching for part at Z.5 and will stop searching at Z-1.2. )
    G28[/SIZE]
[/SIZE][/COLOR]


this sample will stop the cnc if something is found during Z-100 travel, and will continue if no interference is detected
Code:
[COLOR=#008000][SIZE=1]
[SIZE=2]    G29 PZ=25 (*)
    G91 G01 Z-100 F500  G94
    G28 G90[/SIZE]
[/SIZE][/COLOR]

(*) that limit must be <= than an admisible limit declared in para\other function\ upper limit of torque limit comand

this sample delivers same thing as last one, only it requires load monitor to be active, so a crash may occur in case LM is off and part is still in subspindle; so i dont recomand it at this moment :)
Code:
[FONT=courier new][SIZE=2][COLOR=#008000]    VLMZB [ 1 ] = 25
    VLMZ1 [ 1 ] = 25
    VLMZ2 [ 1 ] = 25
    VLMON [ 1 ] = 2
    G91 G01 Z-100 F500 G94
    G90
[/COLOR][/SIZE][/FONT][COLOR=#008000][SIZE=1][FONT=courier new][SIZE=2]    VLMON [ 1 ] = 0[/SIZE][/FONT]
[/SIZE][/COLOR]

kindly !
 
With USER TASK, there is a ton of safety checks and routines you can build into your programs. For a Multus P300S control, an example code that you want to use will look something like below:


G270 SP=1
NTOP
M00 (REMOVE PART FROM SUB-SPINDLE)

IF [VORD[1147] EQ 0] NEND (CHECK SUB SPINDLE IS UNCLAMPED)
VUACM[1]='REMOVE PART'
VDOUT[990]=100
GOTO NTOP

NEND
M02​

The above program alarms out with a reminder if the operator try's to press Cycle Start without removing the part.

I don't think you will want to keep the program running in a loop, as this will not allow the door interlock to unlock and let the operator remove the part. Have it stop at a M00, but check the status of the sub spindle clamp if they press cycle start without removing the part.

I check the output rather than the input, as this code will work regardless if your are OD or ID Chucking. More about using the VORD statement is in the USER TASK section of the Programming Manual. It shows you how to read the codes from your electrical I/O to come up with the correct code.

Hope that helps.
 
With USER TASK, there is a ton of safety checks and routines you can build into your programs. For a Multus P300S control, an example code that you want to use will look something like below:


G270 SP=1
NTOP
M00 (REMOVE PART FROM SUB-SPINDLE)

IF [VORD[1147] EQ 0] NEND (CHECK SUB SPINDLE IS UNCLAMPED)
VUACM[1]='REMOVE PART'
VDOUT[990]=100
GOTO NTOP

NEND
M02​

The above program alarms out with a reminder if the operator try's to press Cycle Start without removing the part.

I don't think you will want to keep the program running in a loop, as this will not allow the door interlock to unlock and let the operator remove the part. Have it stop at a M00, but check the status of the sub spindle clamp if they press cycle start without removing the part.

I check the output rather than the input, as this code will work regardless if your are OD or ID Chucking. More about using the VORD statement is in the USER TASK section of the Programming Manual. It shows you how to read the codes from your electrical I/O to come up with the correct code.

Hope that helps.

Thank you. I will refer to the programming manual as I did not understand all of the above parameters. I would also need it in ssb format
I guess I should simply add rts instead of m02 in the end of the ssb?

After looking into the progrmming manual. i did not understand :
VDOUT [990]=100 (in the manual variables 991,992,993 are for alarms type A B C. so why 990? and why =100?

in any case your reply is very helpful. i will try it first thing tomorrow.
Thank you!
 
Last edited:
hey multus :)

I guess I should simply add rts instead of m02 ...

so far so good :)

... in the end of the ssb?

in the end of the soubroutine :) soubroutines may be located in files with extension ssb or min ( generally speaking )

why 990 ?

alarm D :)

why 100 ?

VUACM requires one integer; it may be 100 :)

so far i have encountered a single case when someone really needed to use that integer value, thus initializing it with the value of the tool that reached its life_spam :)


once the message will be displayed in that red line, it will stay there until cnc is reset

also it wont allow other mesages to be displayes, thus you can not display 2 different messages from same program, but you can use VUACM inside the program more than twice :)

thus, you can use VUACM as long as you force the operator to reset the control

generaly i preffer using M0 ( your text here )

VUACM makes the operator feel nervous, believing that there is an error :) thus showing information like an error is not a good idea, but ...


so far i have not aventured into VORD land; i only heared that it requires patience to dig for the right signal :)

i am repeating my self, but pls be aware that a wrong configured lathe will give a confirmation signal even if the part is not clamped :)
 
Here's what we paste in the beginning of sub transfer programs on my LB3000

(CHECK FOR PART IN SUB SPINDLE)
/IF[VORD[003B]NE 1]NALM1
GOTO NEND
/NALM1 VUACM[1]='PART IN SUB SPINDLE!!!!!'
/ VDOUT[992]=1234
NEND
(RTS)


Block delete allows you to complete a new setup with no part in the sub without getting the alarm.

Just shut off block delete (or block skip) when you go to production (or delete the back slashes entirely from the program)
 

i would recomand torque skip / load monitor:
... slow monitorized W feeding when getting closer to 1st chuck ( good to have the 1st spindle stopped )
... put a road in that fancy B head, and check if there is a part in 2nd chuck

thus monitorized traveling among a critical segment :)

this sample stops the axis after Z-1.2, so it will stop the cnc even if no part is there, so no good for you :)
Code:
[COLOR=#008000][SIZE=1]
[SIZE=2]    G29 PZ=60 (*)
    G22 Z-1 PZ=40 G94 F50 D.5 L.2  ( feeds to Z-1 unless load reaches 40%. Will start searching for part at Z.5 and will stop searching at Z-1.2. )
    G28[/SIZE]
[/SIZE][/COLOR]


this sample will stop the cnc if something is found during Z-100 travel, and will continue if no interference is detected
Code:
[COLOR=#008000][SIZE=1]
[SIZE=2]    G29 PZ=25 (*)
    G91 G01 Z-100 F500  G94
    G28 G90[/SIZE]
[/SIZE][/COLOR]

(*) that limit must be <= than an admisible limit declared in para\other function\ upper limit of torque limit comand

this sample delivers same thing as last one, only it requires load monitor to be active, so a crash may occur in case LM is off and part is still in subspindle; so i dont recomand it at this moment :)
Code:
[FONT=courier new][SIZE=2][COLOR=#008000]    VLMZB [ 1 ] = 25
    VLMZ1 [ 1 ] = 25
    VLMZ2 [ 1 ] = 25
    VLMON [ 1 ] = 2
    G91 G01 Z-100 F500 G94
    G90
[/COLOR][/SIZE][/FONT][COLOR=#008000][SIZE=1][FONT=courier new][SIZE=2]    VLMON [ 1 ] = 0[/SIZE][/FONT]
[/SIZE][/COLOR]


here, have another fresh sample :

Code:
[COLOR=#008000]    G00         Z+V7[/COLOR]
[COLOR=#008000]    G29 PZ=60[/COLOR]
[COLOR=#008000]    G23 PZ=25   Z-V7    F+100*5 G94 D+V7*2[/COLOR]
[COLOR=#008000]    G28[/COLOR]


it delivers same behaviour as the last one from the quote, that uses LM, without the worries of forgetting to switch LM on :)

beside using VORD, you may check a hot zone on the W axis, circa 5-10mm where an interference may occur ... now you are fully protected :) maybe too much :)
 
Hello guys,

I want to share what i eventually used and worked for me:


OSUBR (SUB SPINDLE REMOVE PART ALARM)

G140
IF [VORD[1147] EQ 0] GOTO NEND
NTOP
M00 (REMOVE PART FROM SUB SPINDLE)
IF [VORD[1147] EQ 1] NALARM
NALRM VUACM[1]='REMOVE PART SP2'
VDOUT[990]=100

GOTO NTOP

NEND
RTS

Now there is an alarm which can not be overridden unless part is removed and reset is clicked.
So thank you for your help! especially 'Tskinner' and 'Deadlykittn'
 
Code:
[COLOR=#008000]
    NBACK IF [ VORD [ 1147 ] EQ 0 ] NDONE
[/COLOR][COLOR=#008000]          M0 ( go for it !!! crash the latheeee / now or never )
[/COLOR][COLOR=#008000]          GOTO NBACK
[/COLOR][COLOR=#008000]    NDONE M0 ( i wouldn't thought you will manage it )
[/COLOR]

 
Last edited:
hey multus, there is another guy also from Israel / Tel Aviv : chat with Probe :)

far as i can say, he knows ( okuma ) things ... thats all :)
 
Last edited:








 
Back
Top