ABB ACS880 Position Values

kamenges

Member
Join Date
Nov 2002
Location
Green Bay, WI
Posts
4,332
I have an application where I have to roughly track the position of a rotary load connected through a reducer to an AC motor. The motor is equipped with an encoder and is driven from an ABB ACS880 drive. I am controlling the ACS880 via Ethernet/IP from an AB CompactLogix PLC.

Most of the time the load just spins. But once every "cycle" I need to track load position for two different purposes. In one case I need to know if the load has rotated a desired number of degrees, always less than a full revolution. In the other case I need to track if a desired number of revolutions of the load have occurred. This number of revolutions will be fairly small, always less than 10. Assume a cycle length is about 10 minutes and the position detection part of that only lasts about 3 seconds.

I have done this in the past with an AB Powerflex 755 drive by reading the encoder interface card raw encoder count. This is a free-running 32-bit integer. With the Logix family processors, integer math correctly handles deltas across the rollover boundaries. This means I could just perform simple adds and subtracts to figure out my position regardless of whether I was near a rollover point or not. My detection cycle is small enough that I don't need to worry about multiple rollovers during a position detection cycle.

It doesn't look like the ACS880 has anything like this, although it does look like it will give me position in about four different flavors; some of them scaled, some of them not. Given what I am trying to do can anyone give me a recommendation of the position value I want to use? I have pretty much resigned myself to the fact that I will need to perform rollover detection and conditioning. I just want to know if there is a better value to use than any others.

As an aside, the Logix processors will correctly handle deltas across the rollover boundaries of 16-bit integers also. If there is a 16-bit free-running position register in the ACS880, that would do the trick for me as well.

Thanks,
Keith
 
Keith, I'd take a look into Parameter Group 90 (Feedback Selection):

Page 200 Parameters

http://search-ext.abb.com/library/D...anguageCode=en&DocumentPartId=1&Action=Launch

90.11 Encoder 1 position = Displays the actual position of encoder 1 within one revolution. (REAL -21474836.48...21474836.47)

90.14 Encoder 1 position raw = Displays encoder 1 position within one revolution as an 24-bit unsigned integer received from the encoder interface. (REAL 0.00...65536.00)

Parameters 90.12 and 90.15 will add the revolutions count.

Either Explicit Message READ or use an ABB RA UDT which allows User Defined entries within the exchanged data packets and point to above mentioned parameters.
 
Last edited:
Thanks for the reply, dmargineau.

I did some digging through the manual and it looks like I may be able to use 90.07 to accomplish what I want, assuming the manual isn't misleading me. I'm looking at page 568 of the ACS880 manual and, assuming the value of 90.13 is shifted left 15 bits before the addition, 90.07 will give me a continually increasing 32-bit value that increases at a rate of 32767 counts/revolution and rolls over cleanly (I hope) at the 2^31 and 2^32 boundaries.

Unless someone tells me I'm looking at this all wrong I will probably give this a try and see how it goes.

Keith
 
Just a quick update on this. I have the drives here and have had a chance to play with them some. It looks like parameter 90.04 will give me what I want. I haven't played with it enough to know for sure yet but it looks like it is a continuously incrementing value that changes at the rate of 65536 counts per load revolution. I have my motor to load scaling set to 1:1 so this basically gets me motor revolutions. I am using a 2048 PPR encoder. I can't spin the motor shaft just one encoder edge but I suspect this value changes in steps of either 8 or 32 depending on whether the load position increments by encoder A-channel leading edges or if it increments on every edge of A and B.

90.07 would work pretty well also but it will increment by 1000 counts per motor revolution. Whether I need it or not, 90.04 gives me better resolution.

Both of these are bidirectional and correctly roll over at the DINT boundaries.

Keith
 

Similar Topics

Ok heres what Ive got I set the accel time for 300 seconds I selected option accel/deccel 1 I have torque control set to DTC with a minimum...
Replies
7
Views
2,253
Heres my question guys I have the quick start guide, but when I look at the display for my acceleration time parameter, I have four zeros to the...
Replies
0
Views
1,239
Dear Team, Im facing a continues problem whenever the time i push the emergency stop p/b on my machine. The machine is include of...
Replies
3
Views
3,695
I am trying to replace my power flex 753 drive with ABB ACS880 drive but i dont know the procedure to communicate ABB drive with RS logix 5000...
Replies
1
Views
7,034
Hello all, I need an example or some help to configure a few ACS880 Drives with a 1769-L36ERM PLC. I found this ABB website with examples but...
Replies
0
Views
2,562
Back
Top Bottom