Help - Search - Members - Calendar
Full Version: Fastest method to retrieve encoder position from PF40P
Forums.MrPLC.com > PLCs and Supporting Devices > Allen Bradley
Donovanr
Hi All

I need to retrieve the encoder position from a PF40P drive as fast as possible

Currently i am sending an explicit message to the drive via SM2 module.

The message is continuously triggered inside a periodic task or 3ms, the position appears from the drive but is not fast enough to then control other devices inside the PLC

In the past i have used 22-COMM-E (bridge from Ethernet to Modbus RTU) but there is still time delays in receiving data from the drive,

What are you thoughts?
Gerry
There are times when you just have to have real motion control.

Kiwi Sparky
Are you trying to read D308 and D309 (Units travelled) or are you trying to read actual pulses from Encoder?
I didn't think you could get an actual position from The PowerFlex40P. I am interested how you are reading position, because I would like to utilize this for my current application. I have 22-COMM-E connection to my drive
Donovanr
QUOTE(Gerry @ Nov 26 2008, 04:09 PM) [snapback]76270[/snapback]
There are times when you just have to have real motion control.



Its always hard to convince mechanical personal


QUOTE(Kiwi Sparky @ Nov 26 2008, 04:58 PM) [snapback]76271[/snapback]
Are you trying to read D308 and D309 (Units travelled) or are you trying to read actual pulses from Encoder?


Yes i am messaging the hell out of D308

I have two current configurations

One using 22-COMM-E module and the other using an SM2 module.

They both react about the same speed... very slow!!
Kiwi Sparky
I will try the explicit MSG to read D308 in my application. My application does not need a really fast update, so should be OK for me. If I find a way to improve update time, I will post it here
paulengr
QUOTE(Donovanr @ Nov 26 2008, 01:30 PM) [snapback]76267[/snapback]

Hi All

I need to retrieve the encoder position from a PF40P drive as fast as possible

Currently i am sending an explicit message to the drive via SM2 module.

The message is continuously triggered inside a periodic task or 3ms, the position appears from the drive but is not fast enough to then control other devices inside the PLC

In the past i have used 22-COMM-E (bridge from Ethernet to Modbus RTU) but there is still time delays in receiving data from the drive,

What are you thoughts?


First off, the drive you are referring to is intended as a variable speed controller, not a real motion controller. There's a difference in how it's designed. The PF70 series or especially the Kinetix stuff is where you get into real motion control. Since you are already down to 3 ms, that tells me you are entering the realm of motion control and leaving just speed controls.

What you are doing is reading diagnostic/status entries. It's not really intended to be used for anything approaching servo grade control, but you're asking for servo grade control. Hence the reason that the drive is rather nonchalant about response times. It is most likely that the actual communication/IO stuff is running effectively as a background task and doesn't have the same priority in the drive ASIC as actually doing what it is intended to do (calculate vectors for drive control). The PLC is not really "in the loop" at all. The fact that it is a PF40P should tell you something. I believe P stands for pump controller, right?

So you should probably be looking at the motion instructions in the PLC and running a servo drive slaved to the PLC as the controller, not the other way around. The alternative is to have a real external motion controller (with it's own IO). The PLC supplies commands on what to do.

If you still insist on doing this, skip the PLC and read the encoder directly.

http://www.encoder.com/rxtx.html

Get yourself a "splitter". Add an encoder reading card to your CLX. Skip the drive altogether.
Ken Roach
The PowerFlex 40P is a "Positioner" variation of the PowerFlex 40 drive, but the Positioning feature is strictly an onboard indexer. It's not meant to be a high-bandwidth amplifier, and the communications subsystem is the same as its garden-variety PowerFlex 40 cousins.

In measured experiments, a PowerFlex 40 takes about 70 milliseconds to respond to a normal I/O data exchange with a 20-COMM-E, so it's my guess that's as fast as it could possibly respond to an explicit message requesting a parameter value coming from the SM2 module.

I genuinely don't think you are going to get the feedback across the communication channel very fast; certainly 3 milliseconds is impossible.

What is the application like ? Are you trying to coordinate multiple drives, or are you trying to perform discrete events based on the position of the motor ? Are you using CompactLogix or MicroLogix 1500 ?


Donovanr
QUOTE(paulengr @ Nov 28 2008, 09:26 PM) [snapback]76337[/snapback]

If you still insist on doing this, skip the PLC and read the encoder directly.

http://www.encoder.com/rxtx.html

Get yourself a "splitter". Add an encoder reading card to your CLX. Skip the drive altogether.



Hi Paul

Thanks for your reply

Yes another alternative was to split the encoder and run it in to a HSC card

Maybe 'P' is also for very basic positioning? another marketing tool

I already have K2K in place on this machine, but due to other restraints i couldn't add extra axis's

Its good to find the limits of a product but frustrating on the other hand




QUOTE(Ken Roach @ Nov 28 2008, 10:51 PM) [snapback]76338[/snapback]
The PowerFlex 40P is a "Positioner" variation of the PowerFlex 40 drive, but the Positioning feature is strictly an onboard indexer. It's not meant to be a high-bandwidth amplifier, and the communications subsystem is the same as its garden-variety PowerFlex 40 cousins.

In measured experiments, a PowerFlex 40 takes about 70 milliseconds to respond to a normal I/O data exchange with a 20-COMM-E, so it's my guess that's as fast as it could possibly respond to an explicit message requesting a parameter value coming from the SM2 module.

I genuinely don't think you are going to get the feedback across the communication channel very fast; certainly 3 milliseconds is impossible.

What is the application like ? Are you trying to coordinate multiple drives, or are you trying to perform discrete events based on the position of the motor ? Are you using CompactLogix or MicroLogix 1500 ?





Hi Ken

Thanks for your reply

I am trying to perform discrete events based on the position of the motor using Compactlogix using the positioning profile steps inside the PF40P

Step 1 - Travel to 400mm @ 20hz (Absolute move) Forward
Step 2 - Travel to 0mm @ 50hz (Absolute move) Reverse

During the travel i need to activate other devices based on encoder position

As i said to Paul i have found the limits of the PF40P





This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.