AB Power Flex 70 Drive and Modbus TCP 20comm-m Adapter

B

Thread Starter

Basscat

Hi to all,

This is my first time to post. I am a little new to the modbus application. So here is my problem i have 2 Allen Bradley Power Flex 70 AC Drives that i have put a 20comm-m modbus tcp adapters in and i am using a Direct Logic 06 PLC from Automation Direct with a ECOMM100 modbus TCP module in that PLC. and i can't get the PF 70 (slave) to communicate with the ECOMM100 (master)or vica versa. The user manual to the 20comm-m tcp adapter in the PF 70 drive is not being very user friendly when it comes to knowing what registers are for what. And what i mean by that is it talks about using the 10000 range for some of the registers but others it gives me the ranges in a chart that neither of these areas corresponds to the modbus standard.

So if i wanted to read my output frequency or output amperages from these drives in my plc, the address in the user manual says they start at 10001 with possibly offsetting the register address by -1. but those address ranges don't correspond to the modbus standard of the 40000's which is supposed to be holding registers using function code 3. Am i not understanding the modbus standard correctly? If someone could tell me how my combo works here i would greatly appreciate it.

Also i have the modbus tool called (Modbus Poll) and i can't get the drive to respond by using AB's register addresses. i keep getting error messages on the screen saying (SLAVE DEVICE FAILED). i am not sure what particular problem is making it fail. If anyone would like to contact me so we could get together on the phone my E-mail address is [email protected]. Sorry for the long post but i don't know how to explain it all any other way.

Thank You to all that responds.
 
The Modbus *protocol* (what gets sent over the wire) always starts numbering at 0. However, the *data model* (how your software looks at things) may start from 1. That is, some programming software may call the first register "1" (because of historical reasons behind the design of certain popular PLCs). That software then has to turn the "1" into a "0" before sending the actual Modbus message. So, the Modbus protocol consistently uses "0" as the first register. What can be inconsistent is the programming software running on your PC and the manuals which document it.

From what little I know about the Modbus/TCP adapter for the AB PowerFlex drives, a "10000" register address actually means holding register "10000" (with "1" as the first address). They aren't putting a numerical prefix in front of the address to indicate the address type (another thing which has to do with PC software, and nothing to do with the actual Modbus protocol itself).

What AB have done is they have assigned certain blocks of addresses for "direct" and "indirect" addressing of different parts of the drive. That means they may refer to the same register via two different addresses. I'm going to admit that I don't understand everything about that, but that is to do with how their drive works, not a Modbus question per say.

They also do strange things like store one bit per register spread over 16 registers, rather than packing all 16 bits in one register. I don't understand the rational behind that (probably something to do with their drive). It means though that you have to read the manual quite closely because the "logical" way of doing something isn't necessarily the way that AB actually implemented it.

Something else to look at is the "unit ID". "Unit ID" is a hold-over from RS-485 serial networks where it was used as the node address. In Modbus/TCP the "unit ID" is still there, but most systems either seem to ignore it, or else want it set to a specific value (it appears to have its main use in tunneling TCP messages to serial networks). AB however have decided to use the "unit ID" to indicate what part of the drive you want access to. Make sure you are using the correct "unit ID" parameters (and make sure your client can actually set the "unit ID" to what is required). I've never seen a "unit ID" used quite this way before, so again this seems to be another AB peculiarity.

The first thing you really need to do though is to make sure you can actually talk to the drive adapter at all via Ethernet. If you are getting message claiming the slave device has failed, I would suspect your software can't even contact the drive.

You need to set the IP address and port number. You may need to set these via the drive menus. Make sure you aren't using the same IP address for anything else on the network. Also, check that you are using the correct "port" number for Modbus/TCP (the port number is a code that tells the TCP/IP stack what part of the software to route the message to). The "standard" port number for this is 502. Some servers and clients may allow other port numbers to be used, but for many this parameter is fixed and can't be changed.

I believe the drive has a built in web server for configuration, so you can use that feature to see if you have communications working (I think you may have to enable the web server however). Alternatively, you may want to see if you can "ping" the address ("ping" is a common Ethernet TCP/IP utility program).

Modbus itself is probably the simplest of all the industrial protocols. This drive however seems to have the most convoluted and complicated implementation that I have ever seen.
 
R

Robert Willis

The AB documentation is only showing you the offset within the 4x Modbus Register range. The Automation Direct PLC will need to support the Modbus 6 Digit Addressing format if it requires the leading 4 reference. Example: AB Reference is 10001. The actual Modbus Reference is 410001

Hope this helps
 
Top