LabVIEWForum.de
Snap7 / Problem mit DBWrite - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Snap7 / Problem mit DBWrite (/Thread-Snap7-Problem-mit-DBWrite)



Snap7 / Problem mit DBWrite - stefan1312 - 15.12.2017 19:27

Hallo!

Ich verwende Snap7 um Daten aus einer S7-300 PLC auszulesen und zu schreiben. Das Lesen funktioniert ziemlich gut aber leider
habe ich beim Schreiben mit der Funktion "DBWrite" folgendes Problem:

Die Funktion benötigt als Eingabe einen String.
Übergebe ich nun eine Zahl wird diese zunächst als Hex interpretiert und anschließend übertragen.
Meine Überlegung war die Dezimalzahl zunächst selbst als Hex-Code darzustellen und diese Zeichenfolge nun als String zu übergeben.

Ich bräuchte nun die Einstellung das dieser erstellte String bereits als "Hex" dargestellt ist.
Ich kenne es leider nur bei den Eingabefeldern- Rechte Maus - "Hex-Display"

Kann mir vielleicht jemand helfen?
Mein Ziel ist es float Zahlen in den Datenbaustein zu schreiben


Möchte ich zum Beispiel : 12,6 übertragen so wird diese Zahl in Data In als "3431 3439 3939 3941 "interpretiert und auch so übertragen.
Hoffe das Problem ist verständlich.

Danke für eure Hilfe! Smile

LG Stefan


RE: Snap7 / Problem mit DBWrite - IchSelbst - 16.12.2017 13:44

(15.12.2017 19:27 )stefan1312 schrieb:  Die Funktion benötigt als Eingabe einen String.
Ich sag zwar lieber Stream, kommt aber meist auf das selbe heraus.

Zitat:Möchte ich zum Beispiel : 12,6 übertragen so wird diese Zahl in Data In als "3431 3439 3939 3941" interpretiert und auch so übertragen.
Ist das eine Tatsache oder soll das eine Frage sein?

Wenn "3431 3439 3939 3941" herauskommen soll, dann ist 12.6 eine Dezimalzahl im Single-Format. "3431 3439 3939 3941" ist die hexadezimale Darstellungsform des (lesbaren) Wertes "4149999A". Wobei "4149999A" die hexadezimale Darstellungsform der 4-Byte-Single-Zahl 12.6 ist. Wenn ich mich recht entsinne, habe ich bisher immer eher "4149999A" für 12.6 übertragen. Für eine 4-Byte-Sigle Zahl habe ich also immer einen 4-Byte-Stream übertragen (allerdings über einen eigenen TCP/IP-Treiber, nicht über Snap7).

Eigentlich kann ich dein Problem nicht genau nachvollziehen - es sein denn du kommst mit der Ausdrucksweise "Darstellung" und "Speicherformat" durcheinander.

"12.6" ist die dezimale Darstellung eines 4-Byte-Speicherinhaltes, der hexadezimal "41 49 99 9A" dargestellt wird. Ich denke dein DBWrite will nichts weiter als den original Speicherinhalt - das allerdings als Stream - und der heißt in Hex-Darstellung "41 49 99 9A".