using SLC 5/05 for position control


Thread Starter


Is the SLC 5/05 PID instruction of any use in a machine position control application? Controlling the velocity of a machine to move from the current position to the destination. I want to do the best possible without using a servo module.

The PID instruction is easy enough to use for a process control application (temperature control for example). I am trying to find a way to use the PID instruction to improve upon my current method of proportional only control of machine velocity for a horizontal or vertical axis of a storage/retrieval machine.

I use the SLC 5/05 with analog output (4-20ma) to control the speed of an inverter. The position data comes either from an absolute encoder or from a laser measurement device (usually DeviceNet).

I use just a few rungs and the CPT instruction to run max speed (using the inverters accel and decel) until the axis is within the "proportional" distance and then ramp down from 100% to some minimum speed based on the distance to the destination.

This works OK except for the expected problems of optimizing the speed control for short moves versus long moves and unloaded machine versus fully loaded machine.

Is there something useful that the PLC PID instruction could be doing for this application?

I normally have floating point position and destination values but could scale them if necessary.

In my PLC code I use the absolute value of the current machine position minus the destination as the distance or "error". Whether I must move forward or reverse to the destination, I use the same speed control math.

Thanks in advance for any help.

William Sturm

The biggest problem I think you will have is low performance due to the overall cycle time of reading position data, processing, and then updating the output. I would tend to stay with a custom P loop written in ladder. Maybe PI also. Do you have your logic inside of a timed interrupt routine. Also, try a "fuzzy" logic or rule based routine written in ladder instead of PID.

What you are trying to do is not that easy, you will spend plenty of development time getting it right.

Have you considered a vector drive with a built in position loop? If one exists, that is.