Motion Challenge/Problem

davidg68124

Member
Join Date
Feb 2005
Location
Omaha, NE
Posts
313
Okay guys,

I have a project where I am using the CompactLogix L43 processor with a SERCOS interface to an Ultra 3000. I also have a 1769-HSC card with 2 auxiliary encoders (Dynapar 1000ct/rev) for feedback in addition to the motor mounted encoder (I will explain why in a minute). The motor is a 1326AB-430E with an Alpha SK+ GB at 10:1. It is on a press/shear and it drives in angle bar stock to a length and then I drive the press to cycle. Easy, right?

The customer had an old existing press using a 1394 and the same motor and ratio gearbox. They had the 2 encoders on the old unit so that is why they wanted the 2 on the new unit. They were buying a new press and duplicating the tooling so they needed to stay with the same concept. They requested a direct upgrade to current technology and I obliged them.

I mimiced everything up to and including converting some of the GML to motion on the Compactlogix. Much of the GML was really bad, so I ignored it and wrote the program as a true indexing application with the Encoders as a backcheck to the Servo in terms of distance indexed. Well after seeing the thing run, I actually simplified the programming and removed all the old program limitations. What I did not realize is how they were utilizing the 2 encoders. They relied on the primary encoder (infeed) throughout the piece of barstock until the last piece was to be cut. There they used a relay to switch the encoders on the Auxiliary input and tried to copy the position back into it, back up, and then feed it out to length for the final cut. Well, as you can imagine, there are all sorts of problems with this.

I have all the system up and going. It cycles properly and everything moves as I would expect. They are extremely happy with the overall installation and operation with one exception, I cannot get the length to be right. WHy? The physical drive (not the Servo) slips on the barstock. That is why they need the auxiliary encoder. So just put the encoder on the auxiliary and call it good. What about the second encoder? WE (the customer and I) do not want to go back to the way the other press is doing it.

I have been in Rockwell's tech support on this and we can up with a way to create virtual axi out of the HSC's, but there is one caveat. I have geared the servo axis to the encoder virtual axis and it follows without any problem but the Move Axis(MAM instruction) command required to cause the system to move that I issue for the Virtual axis is being overwritten by the ones that I am using to aquire the encoder position with. So after a few calls we came up with creating another master virtual axis to follow to gear to, but that is not getting me there wither since it has no reference for an actual postion so I still do not get the proper lengths. I cannot gear the master to the encoder axis as I still run into the same problem as before. Rockwell says I should just change the drive to a Kinetix 6000 and hang another axis module on there and use it for a feedback only axis and then I could merge the encoder positions on the fly. That is not so easy as this is a bid project and that would mean additional costs.

In retrospect, I should have run all the motion calcualtions as I could have used a much smaller motor. I might have also caught the fact about how they are using the encoders and averted this. But now I need some ideas to make this work. I would welcome all suggestions right now. I am mulling it over this weekend so I can get a direction. If you have any suggestions, I would greatly appreciate it.

David
 
Hopefully I understand you correctly.

I would use a phasing command.
As program notices the friction encoder is different from the servo encoder the controller issues a phasing comand that adjusts the servo position by the difference between the friction encoder and the servo encoder. This adjustment happens over a period of time or distance. I don't know if the AB has such a command. Gerry would know.
 
I have worked on application with similar problems and ended up doing what I believe Peter calls a phasing command.

In one application, I waited until the move was over 75% complete before beginning to use the error from the surface encoder. I then executed another move on the same axis with the new end point calculated with the error from the friction encoder summed into the target. I did this in an S-Class (GML) program. In that platform, the new "move axis absolute command" had options to allow it to keep the present velocity and not re-trigger the accel ramp, it simply modified the decel ramp and end position. I ended up looping and repeating that adjusted motion at 1/2 second intervals to get my final position within our tight tolerance, and still get it done quickly and without too much disturbance to the decel ramp. Although there was on rare occasion a bit of a stair-stepped looking decel profile if the error changed a great deal toward the end of the movement.

In another application, we used a registration photocell placed as far toward the end of the motion as possible at a known (tuned) position. We then made a correction to the actual position when the registration position was strobed. This feature was built in to the older GML based controllers, but I don't know how you would do that in Logix.

I have no experience with Logix based motion control. I can remember when it was first pitched to us as a replacement for s-Class and 1394 systems (around ~1999), that it was not capable of replacing our application which required gearing to an external encoder and making adjustments on the fly based on the registration sensor, but they claimed to be working on a solution for both functions even then.
Paul
 
I don't understand the need for 2 auxiliary encoders, or what's being overwritten.
There are several types of dual loop configuration for the Ultra3K that presumably will compensate for the slip - I have no experience with that setup so am guessing.
Simple phasing is accomplished by an incremental move on the slave axis of a gearing operation.
There is another type of move called "master offset" that can be used for phasing - but that's another thing I've never used.
 
Gerry,


The physical tooling is set up such that the drive rollers are on either side of the Press/Shear. The only time I really need to use the exit encoder is on the last part. As it is feeding the last part, the front encoder will lose contact with the product, so I have to pick up what the exit encoder is reading in order to get the final position.

The Knowledge base article #23100 addresses how to use a High Speed Counter as a virtual axis. It requires toggling 2 Motion Axis Move commands in order to update the postion on the virtual axis. This, however, overwrites the Motion Axis Move command I issue during the cycle so the end result is no movement.

The phasing commands that are suggested, I do not know much about, but I will investigate that further. I am relatively new to the CL motion, so I am picking it up as I go.

What does phasing do for me? Can you describe it for me?

Okie, Your first suggestion sounds like the way I need to go. I have to look at giving that a try.

If you need more information from me, then ask. I am still looking for suggestions.

David
 
I never tried it, but changing your loop type might be possible for the Ultra3k.

I have an SERCOS tuning application note saved on my pc and this is what it says:

Position Servo – The default loop configuration, smoothest and most stable because it uses motor mounted feedback for position and velocity Feedback.

Auxiliary Position Servo – (Not applicable to Ultra 3000 drives) Tight position control, uses auxiliary(load) mounted feedback for position and velocity Feedback. Could prove troublesome if mechanics are not tight.

Dual Position Servo – (Not applicable to Ultra 3000 drives) Tight position control, uses the auxiliary (load) mounted feedback device for position feedback and the motor mounted feedback device to provide velocity feedback. Could prove troublesome if mechanics are not
tight.

Motor Dual Command Servo - Provides full position servo control using only the motor mounted feedback device to provide position and velocity feedback. Unlike the Motor Position Servo configuration, however, both command position and command velocity are applied to the loop.

Auxiliary Dual Command Servo - Uses only the auxiliary mounted feedback device to provide position and velocity feedback. Unlike the Motor Position Servo configuration, however, both command position and command velocity are applied to the loop

Velocity Servo – Pure velocity control, provides velocity servo control using the motor mounted feedback device.

Torque Servo – Pure torque control, provides torque servo control using only the motor mounted feedback device for commutation. This does not regard position at all, and can be adjusted with the Torque Offset value.
 
I don't understand why the MAM instructions on the HSC encoders would affect the other axis, but if you are doing it correctly and it does not work, I think you should not execute the MAM instructions on the encoder axes, rather, use regular old ladder logic to get the values from them. Then calculate the amount of error from them and incorporate that into your correction moves on the real axis. You will then have the flexibility to choose which one to use, and may even be able to automatically switch to the trailing encoder for the last cut...


My application required me to ignore the first portion of the surface driven encoder because of the nature of the process (rubber sheet material had to be jerked backward 20mm and then shoved forward very quickly to keep it from sticking to a cutoff plate).

In your case, you may want to take samples of the error much earlier in the move than at the 75% point, and then adjust the move command a limited number of times. You could do this based on time, or based on position.

Hope this helps.
 
Last edited:
Okie,


The reason for the effect is this. I am using the HSC Virtual axis as a master in a gearing set. WHen I issue the MAM for the Master of the gearing, it is overwritten immediately by the MAM that are updating the position on the virtual axis.
And I agree, what you are suggesting is probably the route to go. I am just exhausting my options before I give in and do this.

David
 
davidg68124 said:
The phasing commands that are suggested, I do not know much about, but I will investigate that further. I am relatively new to the CL motion, so I am picking it up as I go.

What does phasing do for me? Can you describe it for me?

In a gearing operation, if the slave axis is lagging, then an incremental move (MAM) can be used to add motion on the axis and bring it 'in-phase'.

davidg68124 said:
The physical tooling is set up such that the drive rollers are on either side of the Press/Shear. The only time I really need to use the exit encoder is on the last part. As it is feeding the last part, the front encoder will lose contact with the product, so I have to pick up what the exit encoder is reading in order to get the final position.

No doubt they free-wheel as they come off the part. And presumably the exit encoder doesn't make contact until the part is partially through. I think you need a registration system to work with the exit encoder and eliminate the infeed encoder.
i.e. a registration sensor at a calibrated distance from the shear point to sense the leading edge of the exiting part - then use the exit encoder feedback to control the remaining distance to move before cutting (encoder must be in contact with the part before the registration sensor sees the part).

davidg68124 said:
The Knowledge base article #23100 addresses how to use a High Speed Counter as a virtual axis. It requires toggling 2 Motion Axis Move commands in order to update the postion on the virtual axis. This, however, overwrites the Motion Axis Move command I issue during the cycle so the end result is no movement.

I can't seem to find that article - can you post a copy or perhaps the relevant section of your program?
 
Gerry,

Here is the information from the article

The following rungs will monitor the High Speed Counters associated with the encoders and update each Virtual Axis with their respective position once every 10ms.

The example included with this document shows how to interface an encoder connected to a 1756HSC, with a Control Logix Motion Module.

A Virtual Axis is used that will mimic the 1756HSC encoder. This virtual axis is configured as a rotary with a Conversion Constant of 1 and an Unwind that is equal to the number of count per revolution of the encoder. In a periodic task, the PresentValue from the 1756HSC encoder is used as the position of a MAM instruction. The move type is 2, Move Shortest Distance. Each execution of the MAM instructions will move the virtual axis to a position that mirrors the 1756HSC encoder. Two MAM instructions are used because the MAM will only execute on a False to True transition. The two MAM alternate, allowing one to execute, while the other one is false.

The maximum speed of the 1756HSC axis is limited to ½ revolution per read in your periodic task. For our purposes, if the periodic task is running every 10 ms, and the encoder is 4000 count per revolution(quadrature), the maximum speed is:

(4000 cnt/Rev * .5 rev) * (1Rev/4000cnt) / .01s = 50 rev/second

The registration eye may help my cause as well. I will have to consider that.
 
Peter Nachtwey said:
I would use a phasing command.
As program notices the friction encoder is different from the servo encoder the controller issues a phasing comand that adjusts the servo position by the difference between the friction encoder and the servo encoder. This adjustment happens over a period of time or distance. I don't know if the AB has such a command. Gerry would know.
Hi Peter. I'm not aware of any command AB has to do this. What exactly would phasing require?

There are several types of dual loop configuration for the Ultra3K that presumably will compensate for the slip - I have no experience with that setup so am guessing.

Now I'm definitely in the realm of amateurs when it comes to servo control, but as of version 12 or 13, Controllogix SERCOS was unable to close the loop on an auxiliary encoder with an Ultra 3000 according to Rockwell. There were plans to add this feature in 15 I think, but I don't know if it made it.

Now this is not the right way, but our solution was to not go to the SERCOS. We stuck with the analog servo module, which aren't available in the Compactlogix. But we "cheated" and did not connect the encoder cable in between the drive and the servo controller. We connected the auxiliary encoder to the servo controller.

I think Peter's phasing command would have solved our problem better. I don't get into motion much anymore but I would still be interested in learning a better way to solve this problem
 
from OkiePC
__________________
"The older I get, the better I was"


Rush is the greatest rock trio of all time, bar none...

Great band from the Toronto area
 
curlyandshemp said:
Great band from the Toronto area

I have been a fan of them since I was 14. I would not listen to rock music much at all until after I heard Exit Stage Left. I took my 3 sons to see them live in OKC last Saturday, and we were all blown away! (especially Craig, my aspiring rock drummer) I can't believe it too me so long to finally see them live...:geek:
 
TWControls said:
Hi Peter. I'm not aware of any command AB has to do this. What exactly would phasing require?
The 'phasing' command is defined by the PLC Open spec. It takes two parameters:
1. The distance to offset the master.
2. The distance over which the offset will occur. The distance over which the offset will occur determines how abrupt the offset is.
In this case the master is the friction encoder. Simple.

[OT]
"Nothing matters but the weekend, from a Tuesday point of view".
Lets see if any of the Canadian rockers know where that came from.
[/OT]
 
Last edited:
Originally posted by Peter Nachtwey:

[OT]
"Nothing matters but the weekend, from a Tuesday point of view".
Lets see if any of the Canadian rockers know where that came from.
[/OT]

"The Beat Goes On/Switch Into Glide" by The Kings.

I always kind of liked that one.

Keith
 

Similar Topics

Bom dia, Estou com uma máquina parada algum tempo, meu servo funciona em modo manual, porém não funciona em automático. Meu equipamento e...
Replies
0
Views
53
Hi currently my existing PLC using AB motor & driver to spin production, however customer want to another set, if this possible we use different...
Replies
1
Views
178
I have always controlled servos in Rockwell motion using position loop. I have an application where one process will push against a servo...
Replies
3
Views
244
Hello Experts, I'm wondering if this has been done before if possible to create an Emulate file that have motion control axis? I tried to...
Replies
0
Views
130
This is not a PLC question, but maybe one of you have seen a product like I am looking for. I have a portable pneumatic misting system that is...
Replies
7
Views
557
Back
Top Bottom