MODBUS RTU Communication between PLC and Endress Promag 53


Thread Starter


I am trying to setup a communication between the Endress Promag 53 flowmeter and a Unitronics PLC. The main problem is that I can't get the Endress alive. I have tried also with a connection Endress-Laptop via USB-RS485 converter and the CAS Scanner cannot locate the instrument. Does anyone have experience with the Endress Hauser flowmeter and its Modbus RTU 485 communication?

Thank you
1). All the serial parameters need to match identically on both ends.

- baud rate
- word size (8 bits)
- parity (even?)
- stop bit (1)

2) You need to know the slave node ID of the flow meter, its unique network bus address, an integer value from 1 to 247. E&H calls it the fieldbus address. It defaults to 247. Most master test programs default to one, not 247. It doesn't matter what it is, but your CAS program has to use the correct Fieldbus address. Page 90 in the manual covers fieldbus address and serial settings.

3). The Promag 53 is half duplex 2 wire. The negative and positive A and B driver lines connect to terminals 26 and 27. Unfortunately RS-485 terminology is not standardized, so some vendor A lines are the other vendor's B line. The A line should connect to A and B to B but if the labeled functions are reversed, comm won't work. If comm doesn't connect try reversing the wires on one end. Reversed leads will not damage the drivers, but they won't communicate/connect.

3). Try reading volumetric flow, a floating point value, at holding register (4)2009 from slave x.

Slave X is the flowmeter's slave ID number.

The Modbus function code for read holding registers is 03.

2009 is a decimal number, not hex. The leading (4) is conversational; it IDs the register as a holding register. It is not part of the Modbus message. The Modbus function code for read holding registers is 03.

4). I'm not familiar with the CAS master, but you'll have to determine whether CAS wants

- the indexed register value, 2009, or the conversational register value, 42008 (5 digit) or 402009 (6 digit).

- decimal or hexadecimal register numbers.

If CAS wants hex registers, be aware that hex registers frequently index from zero, decimal registers from one. So 2009 decimal might be 07D9 minus one; 07D8, 2008 decimal; the one offset issue. Sometimes decimal registers have the one offset issue, too.

Somewhere, CAS lets you pick the format for value, it needs to know whether it needs to fetch one (integer) or two (float or long integer) registers.

If you get a bizarre value, like -03.54772^10-17 for flow rate, the byte order is incorrect. CAS read the float registers, but interpreted the value according to a different byte order.

Page 94 shows selections for byte order (function 6305). The byte order can be changed in the slave or master, but both have to be the same to interpret the value properly.

The Promag 53 lets you map your registers-of-interest as contiguous values in a custom internal table they call "auto-scan buffer" so that a single read poll by the master can get them all in one transaction. Nice feature. Obviously the register addresses change since the auto-scan buffer starts at (4)5001.