Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Can we find home position without limit switches?

We are operating a linear stage with a piezoceramic motor (servo) and an optical quadrature encoder. The encoder produces a signal when we pass the home position. Unfortunately we don't have limit switches on either end of the stage, but we have written a crude home VI in LabVIEW that moves the stage in one direction until a following error is detected (because the stage is at the end of travel) or the home position is detected. If the end of travel condition is detected, the stage reverses until home is detected. In essence we have replaced the limit switch with a following error condition. We are having some issues porting this over to C++. Is there any reason to believe this can't be done in C++? Alternatively, are there more clever ways to accomplish what we are trying to do without adding additional limit switches? Thanks, RC
0 Kudos
Message 1 of 2
(3,357 Views)
Hi RC,

What you have described sounds a lot like a Software Limit.  You can set these up in MAX, and save it as part of the axis configuration.  Then you can use that configuration setting in LabVIEW or C++ (or any C development).  To set software limits, go to MAX, and expand Devices and Interfaces»NI-Motion Devices»PCI-73xx»Test»Axis X»Motion I/O settings Here you can setup your Software Limits.  Be sure to save your settings when you are finished configuring.  Basically, this will stop any move when the encoder moves past the limit in the correct direction.  It will not inhibit the move when passing the limit in the negative direction.  This might be a simpler approach to what you are trying to do.
Wes Pierce
Principal Engineer
Pierce Controls
0 Kudos
Message 2 of 2
(3,340 Views)