Friday, November 23, 2012

Setting up the limits and interlocks with Kflop

After the machine was wired I started looking into making sure I could avoid hitting the axis limits as well as being able to halt movement asap.

The basic concept I wanted to follow is that of normally closed or safe IO. Basically the concept is that the machine will only function is power can flow through the control circuit. If anything goes wrong (wire break, estop, equipment failure) the machine will open the main contractors and bring the machine to a safe state.

Concept:
In order to pull this off I need to make sure the 3 things can kill power: Operator, Limits and Servo Failures.

Limits:
Everything needs to let power flow in a normal state. For the limits, this means that they need to be normally closed (and open the circuit when something goes wrong).

Operator (Estop Switch):
Again, this has to be normally closed

Servo Failure:
The servos are equipped with a fault circuit that remains energized until a fault occurs. Then power is pulled to ground. Since Kflop can identify a servo failure from a position output/encoder input mismatch, I will leave this one out for now.

Implementation Strategy:
When the machine is powered on, I don't want the machine to enable simply because there is no limit or estop being triggered. So, the operator will have to press an enable button on the screen. This will be the link in the limit switch circuit that allows power to finally flow when we're ready to cut some metal!

If a trip occurs, the Kflop should disable the axis in the software as well as release the "Enable" output I mentioned. This way once a trip occurs, we are back to where we started requiring the operator to acknowledged that things are ok (and press the Enable button) before the machine will reinitialize.

Not the software hitch: Because there is a delay between when the user pressed the Enable button, the circuit allowing power to the main contractor and the Kflop receiving confirmation that things are ok(and therefore allowing the circuit to remain closed). I need to add a delay in the Kflop whenever the system is being initialized. (I will post the code for this if anyone is interested).


1 comment:

  1. Hello Bryan,

    I've been following your work and I know that this could be a Very long shot, but do you still have the code used to accomplish the button integration?

    It could be very handy for me right now.
    Thanks in advance

    ReplyDelete