LabVIEWForum.de
eine SGL-Variable in zwei 16Bit Int wandeln.. - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: eine SGL-Variable in zwei 16Bit Int wandeln.. (/Thread-eine-SGL-Variable-in-zwei-16Bit-Int-wandeln)



eine SGL-Variable in zwei 16Bit Int wandeln.. - LV-Stu - 24.11.2010 23:38

Hallo, ich hab im Studium ein LV-Projekt, und befasse mich deshalb zum ersten mal mit LV;)Deswegen habe ich auch eine sehr simple Frage, für die ich aber noch keine Lösung finde.. Es geht darum, dass eine Anlage über MODBUS angesteuert werden soll, diese hat dafür mehrere Variablen vorgesehen, welche aus 16 Bit Integern bestehn. Ein Wert jedoch muss so übertragen werden, dass er sozusagen auf 2 16 Bit-Blöcke verteilt ist. Umgekehrt geht es, weil uns ein Laboringenieur sehr gut geholfen hat und ein Beispiel programmiert hat (siehe erstes Bild) [attachment=30842]. Ich muss es jetzt genau andersherum machen, also ein Bedienelement ist verbunden mit zwei Umgebungsvariablen (siehe Bild 2)[attachment=30843].

ich hoffe es ist verständlich was gemeint ist, und es is sicher sehr einfach, aber ich komme mit den Strukturen von LV noch nicht so zurecht!


also schonmal vielen Dank im Voraus!


eine SGL-Variable in zwei 16Bit Int wandeln.. - jg - 24.11.2010 23:46

Dann mach es doch genau umgekehrt:
Typecast nach einem Array of I16, und dann Element 1 und 2 per Index Array entnehmen:
[attachment=30865]
Gruß, Jens


eine SGL-Variable in zwei 16Bit Int wandeln.. - LV-Stu - 24.11.2010 23:58

Danke, das ging ja schnell:)aber wie erstelle ich das Teil oben über der Typumwandlung? das mit der 0?


eine SGL-Variable in zwei 16Bit Int wandeln.. - jg - 25.11.2010 00:11

Lange Variante:
Leere Array-Konstante im BD erzeugen:
[attachment=30848]
Eine Numeric Konstante in das leere Array einfügen:
[attachment=30849]
Datentyp der Numeric Konstante im Array auf I16 ändern (erreichbar über Kontext-Menü). Das kann auch vor Schritt 2 erfolgen.
[attachment=30850]

---

Kurze Variante: In deinem oberen Screenshot an der richtigen Stelle auf den Draht zwischen Build-Array und Typecast das Kontext-Menü aufrufen -> Create -> Constant
[attachment=30847]

Gruß, Jens


eine SGL-Variable in zwei 16Bit Int wandeln.. - LV-Stu - 25.11.2010 00:15

wow danke :=) hoffe es klappt!


eine SGL-Variable in zwei 16Bit Int wandeln.. - unicorn - 25.11.2010 11:34

@ Jens: Fließkommazahl sollte doch SGL und nicht DBL sein. Das 0. und das erste 1. I16-Arrayelement beschreiben nicht die ganze Fließkommazahl (8 Bytes lang). Außerdem erscheint mir die Verwendung von U16 besser geeignet zu sein, da negative I16-Werte irritieren könnten.

Vielleicht noch eine Idee einfacher:


eine SGL-Variable in zwei 16Bit Int wandeln.. - Lucki - 25.11.2010 14:14

@unicorn
Wollte auch so ähnlich schreiben. Die Ungereimtheit (8 bytes --> DBL) hat allerdings schon im Titel des Threads und im Beispiel des sehr gut geholfen habenden Laboringenieurs seinen Ursprung.

Kann mir mal jemand erklären, was das in dem Beispiel für komische Konstanten oder Variablen sind? Noch nie gesehen.


eine SGL-Variable in zwei 16Bit Int wandeln.. - jg - 25.11.2010 15:57

' schrieb:@ Jens: Fließkommazahl sollte doch SGL und nicht DBL sein.
Du hast natürlich vollkommen recht! War mein Fehler...
' schrieb:Das 0. und das erste 1. I16-Arrayelement beschreiben nicht die ganze Fließkommazahl (8 Bytes lang). Außerdem erscheint mir die Verwendung von U16 besser geeignet zu sein, da negative I16-Werte irritieren könnten.
Ob U16 oder I16, das ist bei Modbus eigentlich ziemlich egal. Wichtig ist nur, was in den 2 Bytes binär übertragen wird.

Gruß, Jens


eine SGL-Variable in zwei 16Bit Int wandeln.. - LV-Stu - 25.11.2010 16:00

Hallo nochmal, also wenn ich im Titel was falsch geschrieben habe, tut mir das leid, aber das liegt dann wohl daran, dass ich noch nicht komplett durchgeblickt habe was ich da genau macheWink

Die Variablen sind Umgebungsvariablen, die über Modbus übers Netzwerk über OPC übertragen werden, in jeder Variablen sind 16 Bits, manche schalten nur einen Zustand, manche sind eben zu Analogwerten zusammengefasst..Leider kann ich das ganze im Moment nicht testen, weil ich natürlich nur im Labor Zugriff auf die Anlage habe..


eine SGL-Variable in zwei 16Bit Int wandeln.. - jg - 25.11.2010 16:22

' schrieb:Hallo nochmal, also wenn ich im Titel was falsch geschrieben habe, tut mir das leid, aber das liegt dann wohl daran, dass ich noch nicht komplett durchgeblickt habe was ich da genau macheWink
Thementitel geändert! Damit sollten in Zukunft Missverständnisse ausgeschlossen sein.

Gruß, Jens