Suchergebnisse
Suchergebnisse 1-14 von insgesamt 14.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
@VaporiZed Warum so kompliziert? @dive26 Bedenke das das 0 basiert ist. Also BitField1 wäre index 0 oder 31, je nachdem ob Big oder Little Endian. VB.NET-Quellcode (38 Zeilen) Gibt das hier aus: Quellcode (4 Zeilen) hier noch ein toller Link mit genialen Bitwise Operations:graphics.stanford.edu/~seander/bithacks.html
-
Zitat von dive26: „Und die zweite Sache sind noch die Strings. Wenn ich z.B. die Modellbezeichnung ab Register 30000 mit 15 Int16 Werten auslese. Wie wandle ich die einzelnen Werte dann in einen String?“ Wie sollte denn das Ergebnis aussehen? Hätte eine Idee, kommt aber das raus(mit deinen Beispiel Werten), und google hat 0 ergebnisse, wird es also vermutlich nicht sein. US2N00-001TK-L1M Nein ich habs, dein Model ist SUN2000-10KTL-M1 Beim schreiben des Post noch die Idee gehabt, die Bytes zu dre…
-
Danke dir. Auf sowas kann man sehr schnell kommen(auch du). Hängt aber davon ab, wie man IT sieht. Bei mir ist das eine Art Lebenseinstellung vllt. auch Sucht. Alles nur als Datenstrom zu sehen der sich beliebig manipulieren lässt, hilft mir oft so einige Problemchen zu lösen. Also wie gesagt, einfach die 30 Bytes als byte-Array und dann mit GetString testen, evtl. paarweise die Bytes tauschen(Little Endian Big Endian Geschichte), dann sollte es passe. Schau auch mal beim Hersteller ob ein Encod…
-
Ah ja, das ist dann wohl hinter dem sichtbaren Text noch irgendwas wodurch der Rest nicht sichtbar ist, z.B. ein Byte mit dem Wert 0, bzw. ein VbNullChar. Hier mal ein wenig Messagebox-Debugging, du solltest besser auf Debug.Write(Line) setzen oder auch mal Haltepunkte nutzen. Nervt doch irgendwann mit den Messageboxen. VB.NET-Quellcode (9 Zeilen) Wenn das bei dir jetzt nicht hilft, schreibe mal die Bytes woraus der String erzeugt wird in eine Datei und häng das mal an, oder schau mit einem Hex-…
-
@dive26 Mit Modbus-TCP hatte ich bisher noch keinerlei Kontakt. Erster Eindruck nach einer kleinen Recherche, scheint was feines zu sein dieses Protokoll, fein deshalb, weil das was einheitliches ist und auch in der Industrie Akzeptanz gefunden hat. Besser als wenn jeder Hersteller mal wieder sein eigenes Süppchen kocht. Ich suche noch weitere Informationen, aktuell kann ich dazu noch keine wirklichen Einschätzungen machen. Könnte aber sein, das man nur was an den Modbus Server schreiben muss. I…
-
So, @dive26 ich habe erste Informationen sammeln können, aber habe noch keinen 100% Überblick. Tu mich grad auch schwer weil schon spät. Was ich jetzt schon dazu sagen kann: Die EasyModbusTCP ist für diesen Zweck unbrauchbar, weil die nur die Funktionscodes 1, 2, 3, 4, 5, 6, 15, 16 und 23 unterstützt sind, um einen Upload zu starten wird der Funktionscode 0x41, was in Dezimal 65 ist verwendet. Eigene Funktionscodes ist nichts implementiert. Die WSMBT könnte möglichweise auch unbrauchbar sein, da…
-
Ich habe auch noch was, wo man mal gucken kann. das fehlte mir bei dem Src auf Github. gitlab.com/Emilv2/huawei-solar/-/tree/master Ich kann erst am Wochenende weiter schauen. Aber etwas was mich irritiert. Warum muss man was Uploaden? Kann es nicht sein , das die Daten doch schon irgendwo in einem Register sind? Ich hatte irgendwo auch etwas mit Register über 30000 gesehen, finde es gerade nicht wieder. Ich habe den Verdacht, das man damit nur ein Update auslöst, ab diesem wird dann alle 5 Minu…
-
Ah ja, also das ist dann schon mal etwas klarer. Denn ich war am Rätseln, was und weshalb man da etwas hochzuladen hat, wenn da eh was anderes kommt. Ich werde am Wochenende mal selbst eine Implementation von Modbus anlegen, das ist durchaus etwas was ich auch für RaspBerry PIs, Arduinos oder STM32 nutzen könnte. Testen kann ich das ja ganz einfach mit den EasyModbus-Emulator. Danach kann ich zumindest weitere Empfehlungen geben, bzw. eine Sub vorbereiten und du kannst das dann bei dir testen. W…
-
Mir kommt die 3 komisch vor, probier auch mal mit datalength 0 und 1 Und ja, die 4 Zeile wo du die Bytes erneut zuweist sind unnötig. Sieh mal in der FC03Form, das Projekt das du hochgeladen hast, in dem Projekt schreib mal die Bytes Also allein verbinden und die 4 BYtes können nicht reichen, beim Lesen, wird mehr geschrieben, VB.NET-Quellcode (12 Zeilen) Oder auch mal Je Feld je HIGH und LOW. Wenn ich das so sehe, denke ich mir, meine Güte mehr ist das nicht? Hatte am Wochenende was zu knobeln …
-
Zitat von dive26: „'65 ergibt eine Response mit C1 (Fehler) und den Fehlercode 3 "Illegal data value"“ Das muss nicht bedeuten, das der Sub-FunktionsCode reicht oder das der Funktionscode falsch ist. Eine Antwort ist gut, besser als keine. Denn das heißt da funktioniert schon was. Kommt keine ist Grundsätzlich was falsch. 0x03 Illegal Data Value Zitat: „The value contained in the query data field is notan allowable value for the server (or slave). Thevalue indicates a fault in the structure of t…
-
Nächste Anfrage irritiert mich. Hast du daraus 2 Anfragen gemacht? Eine war gedacht. Also beide Arrays schreiben und dann eine Antwort auswerten. IGut ich weiß nicht wie die gegenstelle liest, evtl. ist das so besser. Der unterschied bei den beiden Anworten könnte die Request ID sein, falls du 2 Request gemacht hast. Du könntest mal mit id = 6 starten, wenn dann 6 und danach 7 drin ist, ist das die TransactionId. VB.NET-Quellcode (14 Zeilen)
-
Ah ja, da war ein Missverständnis, daher siehe meinen letzten Post. Gedacht war schreibe den mbap, nächste Zeile schreibe den frame, dann die Antwort lesen. Edit @dive26 Weil wir im MBAP die Länge angeben, wird die Gegenseite versuchen so viele Bytes zu lesen, da du den frame nicht geschrieben hast, konnte auch nichts kommen. Kombiniere meine beiden Codes. Und probier es dann noch einmal.
-
Noch kurz zu den Antworten, die bei deinem Versuch kamen, die gegenstelle hat dir das zurückgeschrieben was du geschrieben hast. 00-00-00-00-00-05-03 2 Bytes TranactionId 2 Bytes Protokoll ID 2 Bytes Datalenght 1 Byte Device ID Den Frame hattest du ja nicht geschrieben Also wie ich sagte, entweder 1->MBap schreiben 2->Frame schreiben 3->Antwort lesen oder 1->Mbap und Frame verketten 2->buffer schreiben 3->Antowrt lesen mit folgenden Code sehen die Requests dann so aus, wie ich mir das vorstelle:…
-
@dive26 Für heute habe ich aber noch was, weis nicht ob das jetzt Zufall ist. Ich sehe 03 80 Das ist eine Zahl die ich zuordnen kann. Du hast 34 Optimierer V101 4 Bytes FileVersion 8 Bytes Reserved N Bytes Data, 12 + NumberOfOptimizers * 26 Rechnen wir mal... 12 + 34 * 26 = 896 896 sind in Hex-Darstellung 0x380 oder auch mit führender 0 0x0380 Möglicherweise fehlt dann noch der Request zum "Complete Upload Data", die Antwort darauf würde mich mal interessieren.