Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Limiting the range of stepper motors

Hi,

I have a "problem" with an assembly robot. There are numerous stepper motors controlling different axes, and if I drive the motors beyond a certain value (for example -12000 or +11000) then the motor loses it's tracking.

At the moment there's a function in the software (which I inherited with the robot) which limits the steps through software. Firstly, this seems overly complicated, and secondly, it's simply not well programmed.

Having updated various DIO functions to use channel names, I was hoping it might be possible to do one or two things within the driver software....

1) Can I name a specific axis so that it's no longer neccessary to specify board, axis and so on, but rather simply name the axis I want to control
? Similar to virtual channels in the DAQ software.

2) Can I limit the range of the stepper motor automatically in the driver software. In MAX there seems to be an option for this, but the fields are greyed out, and I can't input anything. It would be very nice to automatically have the driver software perform a range check before controlling the motors. This way, even if someone "forgets" to place the limiting function in the code, the motors don't lose their tracking.

The LV version I'm using is 6.1 on a Win98 machine (I know, I know), and the Motion control software version is Flexmotion 5.1.5 and valuemotion 5.0.5. I'm using a mix of 7314 and 7344 boards for motion control (Not all motors are stepper motors).

If anyone has tips or help for me, I'd be delighted.

Thanks in advance

Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
Message 1 of 6
(4,258 Views)
Hello,

first of all it would make sence to upgrate from your 7314 to a 7334 so you would be able to use only one driver(flexmotion). If there is any possibilty, please do so.
You also should use a newer version of NI-Motion (6.1.2):
http://digital.ni.com/softlib.nsf/websearch/57FA88D0FEC8439F86256C740024CE88?opendocument&node=132060_US

You can name your axis, but you will not be able to select them in LV, like you are used with Virtual Channels.

I know that you can set a range for your stepper motor in MAX working with FlexMotion. You just have to enable the Software Limit Settings. I don't know, if it is the same with ValueMotion.

Regards,
Michael Sallaberger
NI-Support
Message 2 of 6
(4,258 Views)
Thanks for your answer Michael,

I don't think we'll be changing the boards just for the comfort of a single driver (The machinery and software already exists, so re-writing everything isn't really practicable.

I'll check the driver settings and try to get the limiting working in MAX.

On a side note, I think virtual axes would be a great addition, and would make the whole motion programming a lot easier.

Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
0 Kudos
Message 3 of 6
(4,259 Views)
Well, I'm a few steps further down the road now, and have massively simplified the original code somewhat (And implemented the otherwise missing(!) hardware and software limit switching).

I've arrived at a point where I'm re-evaluating the possibility of exchanging the 7314 for the increased comfort. Having a SINGLE VI to control ALL Axes is something which would help keep the code very clean and tight.

I'll have a looka t prices, and then suggest it to my boss.

Michael, sorry it took me so long to get around to our point of view, but now I fully appreciate what you were advising.

Thanks again for the help

Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
0 Kudos
Message 4 of 6
(4,232 Views)
Shane,

just some additional comments on that.

1. You should check with your local NI branch about the possibility for a hardware upgrade. Normally NI concedes a remarkable discount to you if you exchange an older product with a new one.
2. Please don't expect that you can control all axes with a single vi after the exchange. Of course you will be able to use the same vis for both boards but as the second board gets a new board ID you will have to call all the vis seperately for each board.
Still this can simplify the code a lot if you place the vis in FOR loops. If you really want to control all axes with a single vi then you would have to choose a board like the PCI-7358 (8-axes on a single board).

Best regards,

Jochen Klier
National Instruments Germany
0 Kudos
Message 5 of 6
(4,226 Views)
Hi jochen,

thanks for the reply.

Yeah, a single VI to control multiple boards at the same time isn't realistic, I agree. But having a single VI in a loop (As correctly mentioned in your post) makes things a lot easier than scanning for the board type each time and using the appropriate VI. I've created an typed enum for choosing the board as an inoput to my single movement VI. This way I can indeed use a single VI for all axes (just not all axes simultaneously).

Since I'm using 2x7344 and 1x7314 (All fully connected - 12 Axes), even a single 8-axis board won't bring me to the point of controlling ALL axes simultaneously from a single VI either. This isn't really required anyway, since all axes which may need to be moved simultaneously are already assigned to a single board.

I'll check out the upgrade possibility, this sounds promising.

Thanks again

Shane.
Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)
0 Kudos
Message 6 of 6
(4,221 Views)