My DIY LCNC + Mesa machine - sanity check please!

More
15 Feb 2013 06:03 #30073 by andypugh

You and PCW really do trust your software! I'm a software engineer by trade, so I don't.

I work on vehicle software, and drive the cars…

I tend to trust the HAL/Mesa combination. A HAL lockup will trigger the hardware watchdog on the FPGA card.

Please Log in or Create an account to join the conversation.

More
15 Feb 2013 06:48 #30074 by LAIR82
We have a CNC lathe running with a limit switch at the end of travel on each axis for the overtravel. I have it set up to share the limit in the positive direction (direction going away from the chuck) for the homing sequence. The way I got around what I think your wondering about is to install a momentary pushbutton that actuates the main contactor powering the slide drives. They have to push the button and perform a 1 inch incremental jog in the opposite direction to get it safely off of the limit should it overtravel. The button is only operable in the event of an overtravel. Of course they could go the wrong direction and do mechanical damage to the ball screws, but that was the only way to make it work.

Thanks

Rick

Please Log in or Create an account to join the conversation.

More
15 Feb 2013 07:45 #30076 by arvidb

I work on vehicle software, and drive the cars…

Yes, but then you know that there are many layers of safety surrounding the software in that car. Nothing safety critical in there is up to a single piece of software alone.

Still, if you work on (safety critical) vehicle software and trust the HAL/Mesa combination like you do then that speaks highly of HAL & Mesa!

A HAL lockup will trigger the hardware watchdog on the FPGA card.

That won't do much good when a bug, or a cosmic ray, flips a bit somewhere in the computer RAM which directly or indirectly activates the servo enable... Or when my cat walks over the keyboard. Neither is very likely, but not impossible either.

Please Log in or Create an account to join the conversation.

More
15 Feb 2013 07:54 #30077 by arvidb
LAIR82: So your limit switches also inhibit further travel (electrically, outside LinuxCNC)? So that your homing procedure is like this:

* Initiate homing. The axis moves to its positive limit and is zeroed, and its drive power is cut.
* Press the limit override pushbutton and jog off.
* Done!

If so, then I think that what I had in mind should work fine. My limits doesn't cut power, they just make the servo amp refuse to move any further in the same direction.

Please Log in or Create an account to join the conversation.

More
15 Feb 2013 08:10 #30079 by LAIR82
I don't remember right off hand but a certain line in each AXIS section of the INI file will acknowledge that your limits are for homing as well so it will not cut the power during the homing operation, it will set it as the home position and depending on what value you enter it will move back off the limit and then call that its zero point. I will have to refresh my memory tomorrow, but it is explained in good detail in the integrator manual under the INI setup section for each individual axis about homing and what each line does, and how linux interperets it and operates.

Rick

Please Log in or Create an account to join the conversation.

More
15 Feb 2013 08:34 #30081 by PCW
You should consider that the drive limit inputs are software as well...
(the drive enable may also be a software polled input bit )

If you are concerned about servo motion safety (not protecting the mechanics), interlocks must remove primary servo drive power.

Please Log in or Create an account to join the conversation.

More
16 Feb 2013 10:18 #30165 by arvidb
PCW: That's a comment more in line with what I expected when I wrote the original post. :)

I'd like to have an interlock that cuts the servo drive power, but then I would loose the encoder position on each tool change, since the encoders are powered by, and their signals are fed directly into the servo drives. (These then have outputs that I can connect to LinuxCNC.)

Also, the servo amps just rectify the line power and charges a capacitor bank, so the inrush current is big enough that I can only start one amp at a time (I will use a "staggered" start with individual power on buttons on each amp).

So a power interlock, while probably the "correct" way to do it, would be a major hassle. On the other hand, a switch to force servo enable to off is almost no hassle at all. And at least then I only have to trust the servo amp's (very stable and hopefully very well tested) firmware, and not the servo amp firmware + LinuxCNC + any hardware in between.

That's my thinking. Could it be a reasonable compromise?

Please Log in or Create an account to join the conversation.

More
16 Feb 2013 10:26 #30166 by andypugh

I will use a "staggered" start with individual power on buttons on each amp).


I am going to say "HAL" again.

I have a similar problem, I need to wait until the caps have discharged in my PSU before I can turn it on again after an e-stop or f-error. I have a timer in HAL which disables the power-on button for 10 seconds after an on-to-off transition.

You can relatively easily have the power-on GUI button bring the amps up in sequence.
The following user(s) said Thank You: arvidb

Please Log in or Create an account to join the conversation.

More
17 Feb 2013 04:20 #30204 by arvidb
That's a really cool idea! Thanks!

Please Log in or Create an account to join the conversation.

More
20 Feb 2013 00:59 #30327 by arvidb
I think I need some help with using HAL for staggered power on.

This is my idea of the external power connections:


I've come this far with the HAL code, but I need help on how to integrate this functionality to the Axis user interface:
loadrt timedelay names=Y,Z,A,S

timedelay.Y.on-delay = 1
timedelay.Y.off-delay = 0.1
timedelay.Z.on-delay = 2
timedelay.Z.off-delay = 0.2
timedelay.A.on-delay = 3
timedelay.A.off-delay = 0.3
timedelay.S.on-delay = 4
timedelay.S.off-delay = 0.4

# This net connected to latched user-machine-power-button status ANDed
# with external ESTOP state. 
net machine-power timedelay.Y.in timedelay.Z.in timedelay.A.in timedelay.S.in <= ???

net X-power hm2_5i25.0.7i77.0.0.output-00 <= X.out
net Y-power hm2_5i25.0.7i77.0.0.output-01 <= timedelay.Y.out
net Z-power hm2_5i25.0.7i77.0.0.output-02 <= timedelay.Z.out
net A-power hm2_5i25.0.7i77.0.0.output-03 <= timedelay.A.out
net S-power hm2_5i25.0.7i77.0.0.output-04 <= timedelay.S.out

# External ESTOP input. Should turn machine power off (and prevent
# machine-power-on) if active.
net estop <???> <= hm2_5i25.0.7i77.0.0.input-00
I have found the and2 component, but I'm not sure if that is the right thing to use here. Perhaps I need flip-flop to toggle the machine power button?
Attachments:

Please Log in or Create an account to join the conversation.

Moderators: cncbasher
Time to create page: 0.142 seconds
Powered by Kunena Forum