AB Servo Control Around Unwind Position

LiquidBoarder

Member
Join Date
Mar 2016
Location
Michigan
Posts
6
Hi All,

I am currently programming a rotational cycling machine that is meant to rotate parts one direction a predefined number of degrees and back to 0 again. Suddenly it hit me that if the user programs 360 as the first position, the drive may not move at all due to the unwind position.

Am I correct in thinking this? Does anyone have an elegant way to work around this?

I am using a Powerflex 527 drive which uses the motion axis commands of the Kinetix product family.

Thanks,
 
Welcome to the forum.... perhaps not elegant, but KISS;

IF setPos == 360 then:
index 180

InPos:
index 180

InPos2:

Rev 360
 
If using the MAM instruction, the "Move Type" operand will affect the behavior of movement for a rotary axis. There is shortest path, positive, and negative options. It may be possible that shortest path will be effective in this application.
 
Welcome to the forum.... perhaps not elegant, but KISS;

IF setPos == 360 then:
index 180

InPos:
index 180

InPos2:

Rev 360

This was kind of what I had it mind as well. I was going to check to see if the position was above 300 or something and if so start an initial move to the halfway point of the desired position. Then, while that move was executing, initiate a 'final' move to the desired location. I just wasn't sure if I was over thinking it. I want the whole motion process to seem like a single motion - no stopping at the mid point. Otherwise it isn't a true test per our requirements.
 
If using the MAM instruction, the "Move Type" operand will affect the behavior of movement for a rotary axis. There is shortest path, positive, and negative options. It may be possible that shortest path will be effective in this application.

I originally was planning on doing the rotary positive and negative types but then if there is a slight amount of overshoot I think the next move would only cover those few degrees of error rather than wrapping all the way around again.

Am I wrong about that?
 
Is you application just rotating 0-360 degree and back? Ie it never goes more than one revolution?

If so, you could program your servo to be a rotary axis that goes from 0-720 degrees (2 rotations) but you never command it to go more than 360. Thus avoid the overlap.

Or If you only go 0-360, you don't need to make it a rotary axis. Make it linear and then 0 and 360 are unique.

As already mentioned, you can also specify the direction of the move and shortest etc.

The more delicate side of rotary axis control is the use of compare instructions in your logic. Using a > or < statement as an axis goes from 359.9 to 0 degrees needs some real thought (and logic) put to it. Similarly as you do math to make moves, you need to be cognizant of the situations where you are crossing a reset boundary. If you end up developing such logic, I recommend making it into an add-on instruction - you will use it often.
 
The application can be set to rotate any number of degrees up to 360. It will cycle to that position and back to 0 a preset number of times and then wait for the operator to reset the system for the next test. So you are correct. It will never cycle more than one rotation at a time.

I didn't want to use the rotary shortest path because we expressly want to make the device swivel back and forth rather than have it possibly go twice in the same direction depending on the final resting position.

I like the idea of making the axis linear. That never occurred to me. Thanks!

I have seen math logic setup to handle the unwind position error which was complicated enough that I think I'll take your method and run with it.
 
I originally was planning on doing the rotary positive and negative types but then if there is a slight amount of overshoot I think the next move would only cover those few degrees of error rather than wrapping all the way around again.

Am I wrong about that?

Overshoot would only come into play if the Lock Tolerance is set to an unreasonably large value, such that the next move position is within that tolerance limit. In this situation, I guess the axis will not move at all with the next command, though it is something I have never experimented with.

Shortest path will be appropriate if rotation can freely go in both directions, and you do not care from which direction you approach the command position. After reading some other posts here, it sounds like shortest path might not work.
 
After thinking about this some more I'm disappointed I didn't think of it sooner but I can just make the travel of the drive unlimited and then run it like a linear axis.

This completely eliminates the need to handle the unwind. Agreed?
 
Yep - that will work. Your concern is the rollover point - that would eliminate it.

just make sure you home it before using it. If it thinks its position is currently 50000 degrees, it will rotate many times to get there. or put logic in to catch those situations
 

Similar Topics

Does any one know if its possible to jog a servo in control mode: torque mode(4). Im using the SSV to get a torque limit but when i do the change...
Replies
0
Views
201
Hi everyone. I try to using FB MC_MoveAbsolute, but Fb was error [1103 A value out of the range is set as a commanded position or travel...
Replies
7
Views
783
Hello automation experts, I'm trying to learn about servo axis control in AB ControlLogix PLCs (L33ERMS). Attached is an example of a servo...
Replies
4
Views
1,050
Hi; Normally if someone talks about SERVO, its refer to such a motor control system in which a motor, having permanent magnet on rooter, or a DC...
Replies
11
Views
2,337
Hello all, We have several Motoman DX200 robots. The servos run all day, everyday. I would like to turn the servos OFF on them after 10...
Replies
10
Views
2,367
Back
Top Bottom