2017-08-09 1 views
1

Ich habe ein Actaris Stromzähler System und ich habe nur wenige Informationen darüber. Ich muss ein neues Programm schreiben, um das aktuelle zu ersetzen, das Daten vom Meter liest. Ich versuche, die aktuelle Kommunikation über die serielle Schnittstelle zu hören, und ich sehe, dass die SNRM Anfrage ist wie folgt: 7E A0 0A 00 22 00 CB 03 93 69 CE 7EGurux DLMS Kommunikation Adressierung

Ich habe festgestellt, dass die Client-Adresse 1 ist die logische Geräteadresse ist 17 und die physikalische Adresse des Zählers ist 101.

ich möchte Gurux GXDLMSClient verwenden, um Daten von den Zählern zu lesen, aber wenn ich die Parameter wie folgt aus:

`GXDLMSClient client = new GXDLMSClient(); 
client.UseLogicalNameReferencing = true; 
client.InterfaceType = InterfaceType.HDLC; 
client.ClientAddress = 1; 
client.ServerAddress = GXDLMSClient.GetServerAddress(17, 101); 
client.ServerAddressSize = 4;` 

Ich sende die SNRM Anfrage so: 7E A0 0A 00 00 22 CB 03 93 55 0E 7E

Warum ist der 22-Wert der 4-dimensionalen Serveradresse in einer anderen Position als in der aktuellen Kommunikation? Was ist der richtige Weg, um dieses Problem zu lösen?

HorCsa

Antwort

1

nie die Gurux Libs verwendet aber auf der Suche @ Quellen:

public static int GetServerAddress(int logicalAddress, 
            int physicalAddreess) 
{ 
    return GetServerAddress(logicalAddress, physicalAddress, 0); 
} 


public static int GetServerAddress(int logicalAddress, 
            int physicalAddreess, 
            int addressSize) 
{ 
/* ... packs it with less bytes as possible */ 
} 

in Ihrem Fall also eine Adresse von zwei Bytes erzeugt.

Später weisen Sie an, als 4-Byte-Adresse zu packen. Es wird also angenommen, dass die zuvor erstellte 2-Byte-Adresse die physikalische Adresse einer 4-Byte-Adresse ist.

SC

Verwandte Themen