Sonstiges Logo: Modbus:Float -> wie Word Swap ?

Space

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung ich bin neu in dem Thema Logo. ;)

Themenstellung
Ich frage Werte mittels Modbus TCP von einem Smartmeter ab (Eastron DCM230). Empfangen werden Float Werte (2 Word) . In der Logo werden die empfangene Werte durch den Float2Int Konverter "empfangen".
Problem
Problem ist, die angezeigten Werte (Lupe am Konverter) entsprechen nicht den mittels Modbus gesendeten Werten und sind völlig "neben der Spur".
Verdacht ist, dass die via Modbus empfangenen Words in verdrehter Reihenfolge gesendet, bzw. empfangen werden (gleiche Ursache😁 )
Gegenprobe mittels USB2RS485 Konverter und Modbus Master Simulation am PC zeigt, dass "Float Reverse" gesetzt werden muss, um sinnvolle Werte zu sehen.
Lösung?/Frage
Ausser dem Float2Int Konverter habe ich keine Möglichkeit gefunden, die mittels Modbus empfangenen Werte in der Logo zu verarbeiten. Gibt es da nichts anderes, also z.B. einen 2fach Word-Buffer, den ich shiften kann?

Seht ihr eine andere Ursache oder Lösung, das die Werte sinnvoller werden?
 
Solche Blöcke wie "Word Swap" oder ähnliches kennt die LOGO! nicht. Das müsstes du manuell über den VM Speicher machen. Die Frage ist aber, ob byteweise getauscht werden muss (ABCD zu DCBA) oder wordweise (ABCD zu CDAB).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, VM Speicher scheint das Zauberwort zu sein :) Tips dazu nehme ich gerne entgegen ;)
Ich werde mal gezielt danach forschen ...
Gefordert ist ein Worswap. Also aus ABCD 》 CDAB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lade doch mal dein Programm hoch ...
Immo geht es nicht mit hochladen. Bin grad unterwegs.
Hier ein Screenshot der Werteausgabe.
Der erste Spannungswert stimmt übrigens (Modbus Adresse 0). Der Wert für den Strom (Modbus Adresse 6) flippt will zwischen "0" und (z.B) 32767.

Realer Wert ( am Smartmeter angezeigt) für den Strom ist 0,676A und für die Spannung 23,6V. Und diese Werte bekomme ich am PC mit USB Stick und Modbus Master Software auch ausgelesen.
 

Anhänge

  • 20230726_001820.jpg
    20230726_001820.jpg
    4,1 MB · Aufrufe: 14
Dein Screenshot ist durch deine blauen Kringel "suboptimal" wie es ein ehemaliger Bundeskanzler nennen würde.
Beim F/I-Konverter gibt es keine Modbus-Adressen, sondern nur Adressen des VM-Speichers.
Außerdem sieht es so aus so aus, als wenn du bei der Spannung (vermutlich) VM0 adressiert hast und beim Strom VM2.
Das zeigt, dass du dich mit der Adressierung der Logo nicht auskennst.

Du willst doch Floatwerte einlesen, also 4 Byte Werte. Das entspricht einem Double Word. Bei der Angabe im F/I-Konverter gibst du die Adresse des ersten Bytes an.
VM0 = VD0 = VB0 bis VB3
VM2 = VD2 = VB2 bis VB5
Siehst du die Überlappung? Beide VMs nutzen die Bytes VB2 und VB3.

Wenn du neu bei der Logo bist, solltest du dich vielleicht erst mit den Grundlagen der Logo auseinandersetzen ...
 
Danke Gunsams für den Hinweis, dass es sich nicht um echte Variablen handelt in denen die Modbuswerte landen, sondern um ein Byte Array.
So funktioniert es jetzt :)

Danke für eure (deine) Hilfe !!!
 

Anhänge

  • Works.png
    Works.png
    7,1 KB · Aufrufe: 13
Zuletzt bearbeitet:
Zurück
Oben