4 Servo Axis Issue

Critt

Member
Join Date
Apr 2006
Location
Ontario
Posts
153
Hello All and happy New Year.

I'm working on a job with 5 saws for cutting aluminum. The saw on the far right is stationary and the other 4 heads can move via servo motors. The saws can get as close as 24" and can be up/down for different material lengths. With all fix heads up the machine can cut 4 lengths of material.

The operator inputs the material lengths and the saw heads move to position. This works well, however the material lengths are starting to vary and some heads are moving fwd while other rev and I have been having some heads crash when the saw requires a head to move before the one required can get into position. I'm trying to come up with a good way to program this to keep all functionality. Is it unreasonable to move the saw to saw "min" positions so the heads are all 24" apart and then move to the customers needed position?

I'm using a mits L series plc with mits servo drives
 
That depends on how important set-up speed is to you. That really is all you are sacrificing.

I guess I am a bit confused as to how you are crashing unless your head selection software has an issue. If none of the heads are in contact to begin with and you command them all to start moving at the same time with the same move parameters (max velocity, accel/decel and jerk rates), how can they crash unless their target positions would cause them to overlap?

This is similar to head selection software in auto positioning slitters. Dienes is one company that provides this type of slitter and they implement their control program in a ControlLogix PLC. Head selection and target position definition are two of the few routines that are password protected in that program. Optimal head selection is not necessarily a trivial process.

Keith
 
The head selection program for me works without an issue but the positioning was the issue. I am adding logic to check target positions and changed how the servo completion and moves are started.
 
Been working away... here is the issue
At times I have all heads going fwd or all heads going revs but others I have head 4 fwd head 3 rev head 2 rev head 1 fwd or any other combination under the moon.
I started in logic but was getting to be a mess so I switched to ST but was wondering if anyone has done this in before?
 
You need some code to play traffic cop. You know current position and the required (new) position for each saw. Instead of starting all of the saws at once put some code in to be sure the saw has clearance before it starts the move. Start the saws that already have clearance to move to their final positions then start the remaining saws as their clearance becomes available. Or loop through, moving the first saw that has clearance then moving the remaining ones in the order that clearance become available.


Cheers

Ken
 
Last edited:
I agree with Peter. It doesn't matter if adjacent heads are moving toward each other. As long as their position selections are such that they don't try to pass each other you should be fine.

IF none of the heads are touching when you start
AND IF you use identical motion parameter for each head (velocity/accel/jerk)
AND IF you start them at the same time
AND IF your position selection doesn't have them crossing (which is an invalid position selection anyway)
I can't see how they would hit each other unless the position controller for each head is so sloppy that a given head is not where it is supposed to be in its profile at all times. If that is the case spend some time tuning the position loop for each head to minimize its error during the move, not only at the end of the move.

Keith
 
The issue with crashing was because the one head started before the next did.
I like the idea of starting them at the same time. All heads have the save servo parameters and travel and the same speed, jerk, torque, acc etc.
 
You must check current positions
at that moment two possibilities, or live check if a head comes close to another, (meaning you have to stop the motion immediate, that is involving direct access while moving.
or check if a heads destination is further as the neigbourhead, meaning if destination < neignour position wait until it is free.
 
You must check current positions
Why?
You shouldn't need to do continual checking if the motion controller is any good and use the same parameters for acceleration, constant velocity and deceleration on all axes.

I am very familiar with the saw mill industry. Saw mill edgers must make the same checks but the saw mill industry is very competitive and manufacturers are always trying to maximize piece count.

Here is where things get tricky. Some times the outside saw needs to make much longer move than the inside saws. If all the saws use the same parameters then the whole process must wait for the out side saw to get into position. This waiting slows production. The next trick is to find how to move all the saws to get into position in a minimum amount of time. Now the outside saw must move faster than the inside saws so all the saws get to position at the same minimum time. Continual checking isn't required if you do it right.
 
Originally posted by Peter Nachtwey:

Now the outside saw must move faster than the inside saws so all the saws get to position at the same minimum time.

Why must the inside saws get to position at the same time as the outside saw? Why not use the outside saw move parameters on the inside saw? The inside saw will just get to position before the outside saw.

Keith
 
Originally quoted by Peter Nachtwey:

You are looking at it backwards.

I don't know that I am looking at it backward as much as looking at something else entirely.

I assume, as the OP is, that we are talking about multiple independent motion axes occupying a single linear rail space. We will further assume that the axis selection and and target position generator software is written correctly and will not select positions that will cause two axes to attempt to cross each other (an "inside" head given a target position "outside" of the "outside" head target position). Finally we assume that they are starting out not touching each other.

If all the axes are "equally capable" (that is, either identical or at least able to achieve the same motion profiles through sizing) then I don't see a case where, given the same motion capability and profile components, you couldn't simply tell them all to move at the same time and have that work.

Your point seems to assume that either the axes are not equally capable or that there is a specific reason that you want the axes to arrive at their target positions concurrently. If neither of those is true you can't get an axis to arrive any faster than it is physically capable of arriving. That said, moving all axes as fast as they can move results in the lowest total move time, that time being defined by the axis moving the farthest.

Keith
 

Similar Topics

I have to rollout a common CLX PLC program to a dozen or more installations, but each installation uses a different HMI front end. Some WW, some...
Replies
8
Views
851
Dear All: I have the flashing red light on the FDBK indicator. The manual said that it means: The axis servo loop error tolerance has been...
Replies
2
Views
612
Hi PLC experts :) I’m working on a project in studio 5000 Logix designer with several servo motors, I'm trying to set the properties for them...
Replies
1
Views
811
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
I have a virtual master that drives all servos. How do I make Virtual Master or any Servo to follow regular encoder which is driven by Regular...
Replies
5
Views
3,111
Back
Top Bottom