Using MODBUS with P2000-T meter

I am trying to interface with a P2000-t Meter using modbus and Arduino (Pro Micro).
I have a controller with pins
R0 (RX), RE, DE, DI (TX) (on Arduino side) and VCC, A, B, GND (on meter side)

A and B are connected to ports A and B on the meter. RO(RX) is connected to Arduino TX and DI (RX) is connected to Arduino RX. Both RE and DE are connected to Arduino Pin 3.

I am trying to send a handshake code to the meter and have it respond.
The code i am sending should be "/?!" with relevant headers.
The problem is i cant figure out what headers i should be sending.

my code to send the header currently looks like

digitalWrite(PollPin, HIGH);
Serial1.write(char(0x06) + char(0x01) +"/?!" + char(0x0D) + char(0x0A) + char(0x04) + char(0x06));
digitalWrite(PollPin, LOW);


There have been many variants so this is just my latest. I have also tried (SOH R 1 STX "/?!" ETX CR LF EOT)

I can see the RX symbol on the meter meaning it has received the code however it fails to respond.

this is being based off a python code which uses optical transmission to receive data.

#Python 2.7
ser.write("/?!" + chr(13) + chr(10)) # "/ R 1 CR LF"
#get data()
code = "1-"

There is an additional write function in the python that enters EIC mode (don't know what that is).

Any help with this would be greatly appreciated.

AFIK normally MODBUS uses differential serial at voltages above 5V, so you cant normally just connect the MODBUS A and B connections to TX and RX, or even to 2 gpio pins.

The best solution is to buy a convert module, to convert from differential to normal serial, as it also handles the voltage level conversion.

Have a look on eBay, I think they only cost a few dollars.

When your device uses RS-485, I’d try the ASCII protocol, starting with ‘:’ and ending with CR/LF (according to wikipedia). This may generate readable output. Just an idea, I have no Modbus experience…