LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

1. Ist es möglich mit Hilfe der Bibliothek "NI Modbus.llb" negative Werte zu senden?, 2. Weshalb wird der Datentyp U16 verwendet?

Sie brauchen nur eine I16 zu U16 Umwandlung zu machen. Bei negativen Werten rechnet dann LabVIEW das Zweierkomplement.
0 Kudos
Message 2 of 6
(3,146 Views)
Wenn Werte vom Typ I16 verwendet werden, so castet LabView automatisch in U16, da die "NI Modbus.llb" offensichtlich nur U16 verarbeitet.
Dadurch entsteht ein Zahlenüberlauf, d.h. der negative Wert wird von 65535 abgezogen und dann weiterverarbeitet.
Das ist doch kein Zweier-Komplement, oder?
Was würde denn passieren, wenn man die "NI Modbus.llb" auf I16 umstrickt? Funktioniert dann die CRC16-Berechnung und das Senden
des Befehls?

Gruss
Patrick

0 Kudos
Message 3 of 6
(3,129 Views)
Hi Patrick,

wenn du Bedenken bzgl. der Umrechnung in U16 hast, kannst du ja die I16-Werte per TypeCast selbst in U16 umwandeln - dann bleiben garantiert alle Bits unverändert!


Message Edited by GerdW on 04-03-2008 05:19 PM
Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 4 of 6
(3,125 Views)
Hallo Patrick
 
Doch, bei einem I16 ist das abziehen von 65536 das gleiche wie das Zweierkomplement. -1 (dez) ist 1111 1111 1111 1111 (bin). Dies entspricht bei einem ganzzahligen Typen 65535 (dez).
Das Versenden von I16 ist also kein Problem, ein Umstricken nicht nötig.
 
Gruss
shb
 
0 Kudos
Message 5 of 6
(3,113 Views)
Vielen Dank für Euere Unterstützung.
Mein Problem konnte tatsächlich durch einen Cast von I16 auf U16 behoben werden.
Die "NI Modbus.llb" musste somit nicht auf I16 umstricken.
Danke.

Bis zum nächsten Mal.

Gruss
Patrick
0 Kudos
Message 6 of 6
(3,085 Views)