Int64 Modbus

Moin,

gibt es eine möglichkeit Int64 Werte vom Modbus in eine Variable zu schreiben ?
Weder mit der Einheit Real32 noch mit Word / Dword oder Integer 32 kommt bei mir was an.

Grüßle

71 Hits und keiner ne Idee :frowning: ?

Okay ^^ nu hab ichs kapiert.

Ich habe die Register Nummer 3204 für die Wh, davon -1 ( Warum hab ich immer noch nicht kapiert ).
Also habe ich 4 Registernummern mit je 16 bit.

[3203] = 0 ( Int16 )
[3204] = 0 ( Int16 )
[3205] = 1333 ( Int16 )
[3206] = 22152 ( Int16 )

Die Formel sieht dann so aus :

(( 1333 * 65536 ) + 22152 ) / 10 = 87381,64 kWh

stimmt das so in etwa ? :slight_smile:

2^16 sind 65.536 - Stimmt. Wenn das das ganze Problem war, dann sind deine anderen beiden Offsets 4.294.967.296 (2^32) und 281.474.976.710.656 (2^48)

Klingt plausibel :slight_smile:

Gruß,

Toni

Servus,

was mir noch aufgefallen ist das ich ab und zu mal im Register 4 werte wie -19057 bekomme.
Gibts da ne Erklärung für ? Das bringt mir meine Werte etwas durcheinander.

Kannst du nicht einfach auf Register 3205 ein DWORD auslesen? Anscheinend werden die oberen 2 Register bei dir eh nicht ausgenutzt. Problem ist, dass intern IP-Symcon nur Integer beherrscht, sodass es einen Int64 gar nicht korrekt abbilden könnte.

paresy

Hi paresy,

danke dir für die Unterstützung, hab es mal mit nem Int32 getestet und siehe da nu klappts auch mit dem Nachbarn :slight_smile:
Wenn ich es nun richtig Interpretiere klappt das allerdings nur bis einem Zählerstand bis 2.147.483.647 Wh oder ? Dann müsste er ja die Variable 3204 beschreiben.

21.474.836,47 Wenn ich das richtig verfolgt hab. Sind es wirklich Wh oder doch kWh? Weil 21.000 kWh wäre ja in der Tat nicht die Welt.

Toni

Hi Toni,

sind definitiv Wh. Ich glaube ich muss einfach bei 2 Mio KWh den Zähler zurücksetzen :slight_smile:
Aber da is ja noch etwas hin bei ca. 1000 KWh pro tag.

Das sind 2 Mrd :wink: Und wenn du laut Formel durch 10 teilst, sind es immer noch 200 Mio. Du hast also noch einiges an Zeit. :smiley:

paresy

Mooment… 2Mrd durch 10 sind 200 Mio Wattstunden. Stimmt. Also 20 Tausend Kilowattstunden. Ich schaff das in 6 Jahren. Oder hab ich verkehrt? :confused:

Hä nun haben wir nen Zahlendreher drinnen oder ? :slight_smile:

Also Maximaler Wert für Int32 : 2.147.483.647
Die Angabe ist bei mir in Wh

Das wäre dann ein Maximaler Wert von 2.147.483.647 Wh.
1 kWh = 1000 Wh

ergo : Maximal 2.147.483,647 kWh
Bei dem Stromverbrauch von ca. 1000 kWh pro Tag / Anlage die ich Auslese sind das ca. 2100 Tage.
Also kann ich in 5 Jahren neue Stromzähler verkaufen xD

Warum teilst du dann in Beitrag 3 durch 100? (hast 10 geschrieben)

Mein Fehler :slight_smile: … hatte nen Denkknoten drinnen.
Hat sich aber nun gelöst.

Hallo Leute,

dieser Thread ist zwar schon etwas Älter, passt aber zu meinem anliegen.

Ich habe 3 Stromzähler die ich per ModBus abfrage (Fa.Schneider)
leider konnte ich nie den Gesamtverbrauch abfragen. Da bin ich auf diesen Thread gestoßen und die Wunder Formel zur Berechnung gefunden. (Danke Flobo :))

Laut Datenblatt ist die ModBus Adresse 3204 Int64.

Im Symcon habe ich auch Int64 zu Auswahl. Bekomme aber ganz komische Werte ausgelesen.
Real64 geht auch nicht.

Ist das noch ein IPS fehler? Oder ist es nur ein Zufall das es mit Schneider Zähler nicht geht?

Gruß

Schau mal im Modbus Gateway - Dort kannst du MSW/LSW umdrehen.

paresy

Hallo paresy,

ich hatte alle Möglichkeiten ausprobiert und keine brach erfolg.

Wenn ich über den Rechen weg gehe, bekomme genau diesen Wert was auch auf dem Zähler im Display steht.

Wenn ich versuche den Werte direkt abzufragen, bekomme ich folgende Werte:

Richtiger Wert: 2,63kW

Swap LSW/MSW AN

Int64 = 11308648890368
Real64 = 5,58721491761156E-311

Swap LSW/MSW AUS

Int64 = 172556288
Real64 = 8,52541338746881E-316

Ich bin ja schon zufrieden das ich über die Formel zu meinem Wert komme.
Trotzdem würde ich gerne wissen wieso ich den Wert nicht direkt auslesen kann:D

Gruß