In the event of an application crash, or communications session failure we occasionally get the situation where we cannot reestablish communications with the meter after a restart.
The only way we have been able to rectify this situation has been to power cycle the meter, which is not ideal for a deployed hard wired meter.
Having access to L+G dMAP software we can see that they issue what looks like a forced disconnect (s->6200, R<-6300) at the start of every session, and that is what we have been attempting to emulate.
Issuing a gxclient.DisconnectRequest(true) appears to be the way, but if this is the first operation we perform we find the HDLC setting reset to their boot values of 0 as they are only populated with something meaningful on an SNRMRequest(), followed by excception. So without the SNRMRequest we are unable to perform the initial Disconnect without commenting out the HDLC reload values in the GXDLMSClient class.
Is there another preferred way to kill a previously broken communications session?
Hi, There is an inactive…
Hi,
There is an inactive timeout after the meter should close the active connection if the client hasn't sent anything. So if you wait about 2 mins the connection is closed and you can start a new connection.
You can try to invoke Release. It doesn't close the HDLC layer connection.
I have to say that after the connection is closed the new connection is established by sending SNRM messages. Is there a reason why you don't want to do so?
BR,
Mikko
We simply don't want to rely…
We simply don't want to rely/wait the 2 minutes or so for the meter to close the last active connection in the event of an application failure.
Our application is for field technicians who are typically impatient and will constantly retry to connect to the meter, regardless of the state of the communications with the the meter, hence the question about being able to issue a force disconnect to the meter at the start of every communications session.
Hi, Have you tried to use…
Hi,
Have you tried to use ReleaseRequest? I believe that will solve your problem.
client.ReleaseRequest(true);
BR,
Mikko