I am working on an application that requires me to accurately monitor the position of a rotary load, which is connected to an AC motor through a reducer. The motor is equipped with an encoder and is controlled via an ABB ACS880 drive, interfacing through Ethernet/IP with an AB CompactLogix PLC. Most of the time, the load continuously rotates. However, during each operational cycle, I need to ascertain the load's position for two distinct purposes. The first is to ensure that the load rotates a specific number of degrees, which will always be less than a full rotation. The second task involves tracking the number of complete revolutions made by the load, typically fewer than ten. Each cycle lasts about ten minutes, but the actual position detection only takes roughly three seconds. In my previous experience with an AB PowerFlex 755 drive, I accomplished this by reading the raw encoder counts from the interface card, which provides a free-running 32-bit integer. The Logix family processors enable accurate integer math, allowing me to track changes across rollover thresholds without complications. Consequently, I could simply add or subtract to determine the position, regardless of proximity to a rollover point. Given that my detection cycle is relatively brief, I don't need to account for multiple rollover instances during position tracking. It appears that the ACS880 doesn’t offer a straightforward solution similar to my prior setup. However, it does provide position data in several formats—some scaled and others not. Considering my requirements, I would appreciate any recommendations on which position value would be the most effective for my needs. I have come to terms with the necessity of implementing rollover detection and data conditioning, but guidance on whether one value is preferable over others would be beneficial. Additionally, I want to point out that Logix processors can accurately manage deltas across the rollover boundaries of 16-bit integers as well. If there happens to be a 16-bit free-running position register available within the ACS880, that could work perfectly for my application. Thank you for your assistance. Best, Keith
Keith, I recommend taking a closer look at Parameter Group 90, specifically the Feedback Selection section on Page 200. For more details, you can visit the following link: [Parameter Group 90 Documentation](http://search-ext.abb.com/library/D...anguageCode=en&DocumentPartId=1&Action=Launch). Here's a brief overview of the relevant parameters: - **90.11 Encoder 1 Position**: This parameter shows the actual position of Encoder 1 within a full revolution. It has a real value range from -21474836.48 to 21474836.47. - **90.14 Encoder 1 Position Raw**: This parameter displays the position of Encoder 1 during one revolution as a 24-bit unsigned integer received directly from the encoder interface, ranging from 0.00 to 65536.00. Additionally, Parameters 90.12 and 90.15 contribute to the total count of revolutions. You can either send an Explicit Message READ or utilize the ABB RA UDT, which supports User Defined entries within exchanged data packets, pointing specifically to the parameters mentioned above. If you need further assistance, feel free to reach out!
Thank you for your response, dmargineau. After reviewing the ACS880 manual, I've discovered that I might be able to utilize parameter 90.07 to achieve my desired outcome, provided the manual provides accurate guidance. Specifically, I’m examining page 568 of the ACS880 documentation. If I shift the value of parameter 90.13 left by 15 bits before performing the addition, it appears that 90.07 will yield a continuously increasing 32-bit value. This should increment at a rate of 32,767 counts per revolution and ideally reset smoothly at the 2^31 and 2^32 thresholds. Unless I receive contrary information, I plan to proceed with this approach and see how it performs. Best, Keith.
Here's a brief update on my recent findings. I currently have the drives in my possession and have started experimenting with them. It appears that parameter 90.04 is likely to meet my needs. Although I need to test it further to confirm, it seems to be a continuously incrementing value that changes at a rate of 65,536 counts per load revolution. With my motor set to a 1:1 load scaling, this essentially translates to motor revolutions. I’m utilizing a 2048 PPR encoder, and while I haven't been able to rotate the motor shaft by a single encoder edge, I suspect this value increments in steps of either 8 or 32. This behavior likely depends on whether the load position is adjusted by the leading edges of the encoder's A channel or by every edge of both channels A and B. Parameter 90.07 offers a viable alternative, though it increments by 1,000 counts per motor revolution. While I'm unsure of its necessity, 90.04 provides superior resolution, which is critical for accuracy in motor control applications. Both parameters support bidirectional movement and correctly roll over at the DINT boundaries. Best, Keith
✅ Work Order Management
✅ Asset Tracking
✅ Preventive Maintenance
✅ Inspection Report
We have received your information. We will share Schedule Demo details on your Mail Id.
Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.