Addressing single meter on rs485 bus

1 viestiä / 0 new
Uusin kirjoitus
Marcin Glowacki
Addressing single meter on rs485 bus

Hi,

1. i'm starting my adventure with DLMS using your Java class. It works great for a single device on the wire. How can I address device when there are multiple meters connected to on rs485 bus (IP connection to GSM RS485 modem).

I want to achieve sth like IEC /?ADDRESS! command.

2. Where i can find some information how to create obx files and how they are processed? I see the SN%10000+1000 field in LGZ.obx which stands for the formula of creating HDLC address from serial number of meter. But where do i need to enter that serial number? I've tried setting the dlms.setServerID(hdlcAddressString) but with no results.

Administrator
Käyttäjän Administrator kuva

Hi,

1. You must use address that is counted from serial number of meter.

2. At this moment best way to create them is import data from device.
That will create them automatically.

We improve the documentations as soon as we have some time.
We are relly busy at this moment with DLMS/COSEM server and Linux version from GuruxAMI.

Gurux Administrator

Marcin Glowacki

Ok, i know the serial number of the meter but don't know what piece of Java code need to be used to connect to single meter.

Let serial number be 96441234, according to LGZ documents, the HDLC address will be last 4 digits + 1000 = 2234. What method / property of Gurux DLMS Java classes should i use to enter that number?

Marcin Glowacki

Ok, i've made some progress (for you it can be obvious ;-) but it is nowhere clearly written. In your Gurux Java DLMS Sample app in GXCommunication class there is a fragment:

gurux.dlms.manufacturerSettings.GXServerAddress serv = manufacturer.getServerSettings(HDLCAddressType.SerialNumber);

serv.setPhysicalAddress(96443079);

val = GXManufacturer.CountServerAddress(serv.getHDLCAddress(), serv.getFormula(), serv.getPhysicalAddress(), serv.getLogicalAddress());

dlms.setServerID(val);

but:
System.out.println(serv.getHDLCAddress()); -> SerialNumber
System.out.println(serv.getLogicalAddress()); -> 1
System.out.println(serv.getPhysicalAddress()); -> 96443079
System.out.println(serv.getFormula()); -> SN%10000+1000
System.out.println(val.toString()); -> 158351 - how it is calculated?

First request:

And no reply :-(

Kurumi
Käyttäjän Kurumi kuva

Hi Marcin,

We found a bug here. We are testing it right now and we are releasing new version during this month.

BR,

Mikko

________________________________________
Mikko Kurunsaari
Gurux Ltd
http://www.gurux.fi

deepakdabas

I also tried to use SERIAL_NUMBER as physical but it's throwing Invalid Logical or Physical address.
The example is working with DEFAULT address type and server address set as 1.

Can any one suggest how to communicate with more than 1 meter connected through RS485 daisy chaining.

Regards,
Deepak Dabas

Kurumi
Käyttäjän Kurumi kuva

Hi,

Please create new topic if you have more questions.

client.ServerAddress = GXDLMSClient.GetServerAddress(serial number);

BR,

Mikko

________________________________________
Mikko Kurunsaari
Gurux Ltd
http://www.gurux.fi