Don't comment the topic if you have a new question.
You can create a new topic selecting correct category from Gurux Forum and then create a new topic selecting "New Topic" from the top left.
By Marcin Glowacki, 10 August, 2012
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.
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?
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); - I've change to .SerialNumber to use proper GXServerAddress from lgz.ogx
serv.setPhysicalAddress(96443079); - My device serial number
val = GXManufacturer.CountServerAddress(serv.getHDLCAddress(), serv.getFormula(), serv.getPhysicalAddress(), serv.getLogicalAddress()); - how does this method works? It is not mentioned in Java Docs
dlms.setServerID(val); - in what form that Object attribute should be?
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?
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.
Addressing single meter on rs485 bus
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.
Ok, i know the serial number
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?
Ok, i've made some progress
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); - I've change to .SerialNumber to use proper GXServerAddress from lgz.ogx
serv.setPhysicalAddress(96443079); - My device serial number
val = GXManufacturer.CountServerAddress(serv.getHDLCAddress(), serv.getFormula(), serv.getPhysicalAddress(), serv.getLogicalAddress()); - how does this method works? It is not mentioned in Java Docs
dlms.setServerID(val); - in what form that Object attribute should be?
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:
-7EA00A00000FEF2193507A7E
And no reply :-(
Marcin Glowacki
Hi Marcin,
We found a bug here. We are testing it right now and we are releasing new version during this month.
BR,
Mikko
Communicating with More than 2 meter | GXDLMS Client
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.
Communicating with More than 2 meter | GXDLMS Client
Hi,
Please create new topic if you have more questions.
client.ServerAddress = GXDLMSClient.GetServerAddress(serial number);
BR,
Mikko