LabVIEWForum.de
Modbus Register ändern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Modbus Register ändern (/Thread-Modbus-Register-aendern)



Modbus Register ändern - jan_1 - 15.01.2016 08:21

Moin zusammen,

ich möchte ein Register auslesen, einzelne Bits ändern und wieder schreiben. Eigentlich funktioniert es soweit, allerdings mit unerwünschten Nebeneffekten.
Das Register besteht aus vier 16-Bit-Integers, ich möchte lediglich beim Ersten die Bits 8 und 9 ändern. Bei dem was ich jetzt gebastelt habe, passiert es auch so, aber bei weiteren Durchläufen werden auch die Bits der restlichen drei Integers geändert, aber ich will ja nur den Ersten ändern.
Könnt ihr mir sagen, was ich verkehrt gemacht habe?

Beste Grüße
Jan


RE: Modbus Register ändern - Nordvestlys - 15.01.2016 09:58

Du fügst das geänderte Arrayelement an erster Stelle ein. Damit verschieben sich die übrigen Arrayelemente nach hinten. Das Array wird also immer länger. Und bei Durchgang zwei und drei siehst Du das ehemals "erste" Element auch auf den hinteren Plätzen.

=> "Replace Subset" anstatt "Insert into Array" verwenden.

Übrigens kannst Du die verschiedenen Bits auch anders setzen/löschen:

[attachment=55069]

Bei "nur" einem zu setzendem Bit hat es keinen großen Vorteil gegenüber Deiner Methode. Aber wenn Du mal mehrere Bits gleichzeitig oder flexibel setzen/löschen willst, wird es übersichtlicher. Ob die Zahlen / Bitkombinationen binär oder dezimal dargestellt werden, ist egal. (Auch ein "umschalten" einzelner Bits ist möglich mit "XOR".)

Hth


RE: Modbus Register ändern - jan_1 - 15.01.2016 10:06

Danke für den Hinweis! Ich will ja ersetzen und nicht anhängen...
Und danke für den anderen Vorschlag, über XOR hab ich an anderer Stelle auch schon nachgedacht, mal gucken ob ich das hinkriege Smile