This seemed the best place for my topic but pls let me know if it belongs elsewhere.
I have a Kaifa MB310H4BNL digital (electricity) meter (in Netherlands). Please note I don't have prior experience reading meter(s), I am learning as I go and objective is to read my meter.
It does not have a P1 port (as a Dutch "slimme" meter would) but it does have an optical port an I am able to read out using Mode C. Meter returns:
<== -- STX --
<== F.F(00000000)
<== 0.0.0(000000xxx) (redacted)
<== 0.0.1(001C8104)
<== 1.8.0(026392.0*kWh)
<== 1.8.1(000000.0*kWh)
<== 1.8.2(026392.0*kWh)
<== 2.8.0(009293.7*kWh)
<== 2.8.1(000000.0*kWh)
<== 2.8.2(009293.7*kWh)
<== 0.2.0(01.03-21)
<== C.90.2(239b1249)
<== 0.2.1(01.02-19)
<== C.91.2(7bed5b2f)
<== -- ETX --
<== -- BCC --
As you can see it is useful but doesn't return P or phases in which I'm also interested.
I'm hoping that mode E returns more data.
Attempt to switch to mode E:
Initial communication at 300E1, then meter identifies as:
/KFM5\2Kaifa MA309M
Per protocol it supports 9600 baud and mode 2 (HDLC, mode E), if I send the sequences manually I get this:
-> /?! CR LF
<- /KFM5\2Kaifa MA309M
-> ACK 2 5 2 CR LF
<- ACK 252
Next would be Send SNRM request, but I don't know what to send for it so I tried GXDLMSDirector. But it seems to stall at same point:
01:49:22 Initializing serial connection.
01:49:23 IEC Sending:/?!<CR><LF>
01:49:24 HDLC received: /KFM5\2Kaifa MA309M<CR><LF>
01:49:24 BaudRate is : 9600
01:49:24 Moving to mode E.
06 32 35 32 0D 0A
01:49:27 Send SNRM request.
7E A0 07 03 03 93 8C 11 7E
01:49:32 Data send failed. Try to resend 1/3
01:49:37 Data send failed. Try to resend 2/3
01:49:42 Failed to receive reply from the device in given time.
01:49:42 Disconnect request
01:49:42 Send Disconnect request.
7E A0 07 03 03 53 80 D7 7E
01:49:47 Data send failed. Try to resend 1/3
01:49:52 Data send failed. Try to resend 2/3
01:49:57 Failed to receive reply from the device in given time.
System.TimeoutException: Failed to receive reply from the device in given time.
at GXDLMSDirector.GXDLMSCommunicator.ReadDLMSPacket(Byte[] data, Int32 tryCount, GXReplyData reply)
at GXDLMSDirector.GXDLMSCommunicator.ReadDataBlock(Byte[] data, String text, Int32 multiplier, Int32 tryCount, GXReplyData reply)
at GXDLMSDirector.GXDLMSCommunicator.InitializeConnection(Boolean force)
at GXDLMSDirector.GXDLMSDevice.InitializeConnection()
at GXDLMSDirector.MainForm.Connect(Object sender, GXAsyncWork work, Object[] parameters)
I presume I need to know the correct server and client address, I tried tools -> HDLC address resolver but had no success.
I tried getting documentation from my grid operator but they insist it's not possible to read out my meter. Also tried to request from Kaifa but they don't answer.
Any ideas/thoughts?
I'm comfortable coding, C# preferred, if that helps.
Hi, The data that you added…
Hi,
The data that you added is IEC and not DLMS.
You should first check if your Kaifa MB310H4BN supports DLMS.
If it supports only IEC 62056-21, you need to ask the meter vendor if you can read anything from the meter or if it supports only readout.
https://gurux.fi/DLMSCOSEMFAQ
BR,
Mikko
Thanks for the quick reply!…
Thanks for the quick reply!
I can indeed read the meter throught IEC 62056-21 and read data using Mode C. But I thought the mode 2 means I can use IEC 62056-21 to move to Mode E.
In the faq it says: When the optical head is used, meter should use IEC 62056-21 to move Mode E that is binary protocol. This is done because in this way client can select what baud-rate is used. For this reason there is "Start Protocol" in GXDLMSDirector. GXDLMSDirector supports IEC 62056-21 only when communication is established.
Is this not what I should be able to use? (where is the start protocol option?).
Unfortunately I was not able to find any documentation for my meter :(
Hi, Moving to mode E goes…
Hi,
Moving to mode E goes exactly as you say. Check if there is DLMS label on the cover of the meter. It might be that your meter is supporting only IEC 62056-21 mode A and maybe Mode C.
BR,
Mikko