Modbus Tcp/Ip Protokoll vs Socket Tcp/Ip Protokoll

#5762435
Lesenswert?

Hallo Leute ;)

Ich musste feststellen dass man beim Modbus-Protokoll die MBAP-Header 
nicht ändern kann. Oder gibts hierzu ein Zaubertrick?

Modbus Verbindungsaufbau:
modbus_t *ctx = modbus_new_tcp(IP, Port);
modbus_connect(ctx);

Bsp Modbus Request: 00 01 00 00 00 06 FF 03 00 10 00 08
00 01 => Transaction ID (MBAP-Header)
00 00 => Protocol ID (MBAP-Header)
00 06 => Anzahl nachfolgende Bytes im Frame
FF    => Device-ID ... 0xFF ist TCP/IP standard
03    => Functionscode
00 10 => Startadresse
00 07 => Länge(ausgehend von der Startadresse zum Lesen bzw. Schreiben)


Bsp. mein Ziel Request: 40 02 AA BB 00 06 FF 03 00 10 00 08


Socket Verbindungsaufbau(C#):
int socketctx = socket(AF_INET, SOCK_STREAM, 0);
connect(socketctx,(struct sockaddr *)&server, sizeof(server));

MEINE FRAGE:
Kann ich mein Ziel Request über Socket so abschicken,dass der 
Server(Microcontroller) den Befehl identisch bearbeitet als sei es ein 
Modbus Request ?
Anders ausgedrückt, kann Socket den gewünschten Frame darstellen ?

Mit freundlichen Grüßen
#5765057
Lesenswert?

Oemer S. schrieb:
>> Was ist Dein Ziel?
>
>
> Ich möchte den µC fernsteuern.

Modbus ist erstmal einfach nur ein Protokoll, mit dem man Daten zwischen 
verschiedenen Geräten austauschen kann.

Was der Mikrocontroller in Deinem Fall mit den empfagenen Daten 
anstellt, hat mit Modbus direkt nichts zu tun. Die Schnittstelle könnte 
auch CAN oder Ethernet oder sonstwas sein.

Auf dem Mikroncontroller muss es dann entsprechenden Code geben, der die 
über Modbus empfangenen Kommandos umsetzt.
Gast #5765080
Lesenswert?

> Was der Mikrocontroller in Deinem Fall mit den empfagenen Daten
> anstellt, hat mit Modbus direkt nichts zu tun. Die Schnittstelle könnte
> auch CAN oder Ethernet oder sonstwas sein.

hat nur Ethernet als Schnittstelle.


> Auf dem Mikroncontroller muss es dann entsprechenden Code geben, der die
> über Modbus empfangenen Kommandos umsetzt.

µC reagiert nur auf Paket, wenn dieser im MBAP-Header(ADU) einen 
bestimmten Wert/Zertifikat besitzt.
Bsp.:
Transaction ID (MBAP-Header) = 0x40 0x02
Protocol ID (MBAP-Header)    = 0x20 0xAB

ansonsten wird der Paket verworfen.
Wie kann Ich so ein Paket nachbilden?
#5765277
Lesenswert?

Ömer S schrieb:
> µC reagiert nur auf Paket, wenn dieser im MBAP-Header(ADU) einen
> bestimmten Wert/Zertifikat besitzt.
> Bsp.:
> Transaction ID (MBAP-Header) = 0x40 0x02
> Protocol ID (MBAP-Header)    = 0x20 0xAB
>
> ansonsten wird der Paket verworfen.
> Wie kann Ich so ein Paket nachbilden?

Verstehe ich das richtig, dass die Software auf dem Mikrocontroller fest 
vorgegeben ist und von Dir nicht geändert werden kann?

Dann baust Du eben auf dem anderen Gerät von Hand ein solches Telegramm 
zusammen, wie Du es brauchst, und schickst es ab.

Wenn der Mikrocontroller allerdings bestimmte Werte im Header erwartet, 
die im Modbus-Protokoll so nicht definiert sind, dann ist es eben 
irgendein anderes Protokoll und nicht Modbus. So wie Rufus es schon 
gesagt hat. Vielleicht ist es an Modbus angelehnt, das mag sein.
Gast #5766654
Lesenswert?

> Verstehe ich das richtig, dass die Software auf dem Mikrocontroller fest
> vorgegeben ist und von Dir nicht geändert werden kann?

Ja.

> Dann baust Du eben auf dem anderen Gerät von Hand ein solches Telegramm
> zusammen, wie Du es brauchst, und schickst es ab.

Genau das versuche Ich umzusetzen. Ich weiss nur nicht wie.

> Wenn der Mikrocontroller allerdings bestimmte Werte im Header erwartet,
> die im Modbus-Protokoll so nicht definiert sind, dann ist es eben
> irgendein anderes Protokoll und nicht Modbus. So wie Rufus es schon
> gesagt hat. Vielleicht ist es an Modbus angelehnt, das mag sein.

Ja, ihr habt Recht. Müsste "erweiterte/modifizierte" Modbus-Protokoll 
sein.

Habe leider kein Weg gefunden, solch ein Telegramm zu basteln.
Haben Sie ein paar Tipps für mich, wie Ich das umsetzen kann.


Ich danke Ihnen und Herr Rufus sehr =)

mit freundlichen Grüßen.
Gast #5766752
Lesenswert?

> Frag' den Hersteller nach besserem Support bzw. nach besserer
> Dokumentation.

Der Hersteller aus China antwortet nicht :( , kein Chance.

> Du stocherst in undokumentiertem Nebel.

Wieso? Das ganze ist möglich, Ich kanns auch testen.
Ich weiss was zu tun ist...Ich kanns nur(noch) nicht.



Anscheinend kennt sich hier keiner aus, wie man es umsetzen kann. Ist ja 
auch nicht schlimm..


Dankeschön Rufus, hast wirklich versucht zu Helfen :)
Persönliche Seite #5766775
Lesenswert?

Ömer S schrieb:
> Wieso?

Na, Du hast offensichtlich keine Dokumentation, sondern nur eine sehr 
vage und unvollständige Beschreibung (wenn ich an Dein 
"Firmwareupdate"-Ding denke, das Du im anderen Thread angesprochen 
hattest).

Was sind denn das überhaupt für Geräte, mit denen Du da versuchst, 
Kontakt aufzunehmen? Gibt es von denen denn überhaupt keine 
Dokumentation, keine Webseite, kein gar nichts?
Gast #5766850
Lesenswert?

> Was sind denn das überhaupt für Geräte, mit denen Du da versuchst,
> Kontakt aufzunehmen?

"Solax" - Wechselrichter (X-3)

> Gibt es von denen denn überhaupt keine
> Dokumentation, keine Webseite, kein gar nichts?

"Solaxpower" .. ist die Webseite.

Für die Firmware-Update gibts halt nur diese eine PDF_Datei.
Habe schon zig-male geschrieben, es kommt halt kein antwort.
Persönliche Seite #5766885
Lesenswert?

Bei der Quellenlage halte ich es für mutig, an das Ding irgendwelche 
Netzwerkpakete zu senden.

Ohne eine genaue Dokumentation würde ich auch mit normalem 
Modbus-Protokoll nur sehr vorsichtig damit hantieren, d.h. nur Register 
auslesen, niemals aber schreiben (denn es ist schließlich unbekannt, 
welche Auswirkung die haben).


Vor allem:
Was willst Du jetzt eigentlich erreichen? Willst Du das Firmwareupdate 
per Netzwerk einspielen (statt per USB), oder willst Du irgendwas 
anderes an dem Ding steuern?

Du wirst ohne technische Unterstützung des Herstellers oder genauer 
Analyse eines etwaigen Werkzeuges, das genau das macht, was Du selbst 
machen willst, nicht weiterkommen.
Gast #5766964
Lesenswert?

> Ohne eine genaue Dokumentation würde ich auch mit normalem
> Modbus-Protokoll nur sehr vorsichtig damit hantieren, d.h. nur Register
> auslesen, niemals aber schreiben (denn es ist schließlich unbekannt,
> welche Auswirkung die haben).

Ich habe eine ausführliche Modbus-Dokumentation. Register auslesen und 
bzw. schreiben ist kein Problem. Hier steht jedoch nichts über 
Firmwareupdate.

> Vor allem:
> Was willst Du jetzt eigentlich erreichen? Willst Du das Firmwareupdate
> per Netzwerk einspielen (statt per USB),

ja, genau. Anstatt USB über Netzwerk.
(Mit USB kann ich den Update problemlos abspielen.)

> Du wirst ohne technische Unterstützung des Herstellers oder genauer
> Analyse eines etwaigen Werkzeuges, das genau das macht, was Du selbst
> machen willst, nicht weiterkommen.

Habe die Firmwareupdate als Intel-Hex-Datei vorliegen.
Das sollte doch reichen ?

Ich meine, wenn das ganze über USB funktioniert..MUSS es ja auch über 
Netzwerk funktionieren. So müsste ich nicht pendeln und jedes Gerät 
einzel updaten.
Persönliche Seite #5767050
Lesenswert?

Ömer S schrieb:
> Ich habe eine ausführliche Modbus-Dokumentation.

Woher? Auf der Webseite wird Modbus mit keinem Wort erwähnt.

> Das sollte doch reichen ?

Nein. Das reicht offensichtlich nicht.

> Ich meine, wenn das ganze über USB funktioniert..MUSS es ja auch über
> Netzwerk funktionieren

Nein. Da "muss" gar nichts funktionieren.

Zwar scheint der Hersteller so etwas vorgesehen zu haben (wie man Deinem 
sehr unvollständigen Dokument entnehmen kann), aber er hat es so 
grottenmiserabel und unvollständig beschrieben, daß damit nichts 
anzufangen ist.

Auch wenn man Modbus/TCP kennt (was ich mir einbilde, zu tun).
Gast #5767134
Lesenswert?

>> Ich meine, wenn das ganze über USB funktioniert..MUSS es ja auch über
>> Netzwerk funktionieren
>
> Nein. Da "muss" gar nichts funktionieren.


Natürlich! Ob man mit dem Zug nach Bayern fährt oder mit Auto hat 
natürlich unterschiede. Jedoch ist es offentsichtlich, dass es mit dem 
Auto auch klappen sollte, wenns mit Zug schonmal geklappt hat.


> Auch wenn man Modbus/TCP kennt (was ich mir einbilde, zu tun).

Wie du es schon vorausgesagt hast... Das ganze hat wirklich nix mehr mit 
Modbus zu tun.

Ich habe den Support-Dienst nochmal eine E-mail geschickt. Vielleicht 
gibts ja endlich eine Erklärung, was ich mir irgendwie nicht mehr 
vorstellen kann(dass die antworten).


freundliche Grüße und vielen dank Rufus :)
Persönliche Seite #5767250
Lesenswert?

Ömer S schrieb:
> Natürlich!

Wirklich nicht. Das eine (USB) hat mit dem anderen (Netzwerk) exakt gar 
nichts zu tun, und die verwendeten Protokolle (USB: Lesen einer Datei 
von einem Massenspeicher, Netzwerk: Undefiniert, möglicherweise 
umgefrickelter Modbus) haben auch nichts miteinander zu tun.

Ömer S schrieb:
> Ich habe den Support-Dienst nochmal eine E-mail geschickt.

Ich drück' Dir die Daumen.


BTW: Meine Frage nach Deiner Modbus-Dokumentation hast Du noch nicht 
beantwortet. Wo hast Du die her?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren