BK9050 mit LabVIEW ansprechen - Probleme mit dem ModbusTCP-Protokoll
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
15.08.2014, 12:11 (Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2014 12:13 von Piranhaschaf.)
BK9050 mit LabVIEW ansprechen - Probleme mit dem ModbusTCP-Protokoll
Hallo,
ich bin der Luis und bin Student. Ich habe zur Zeit ein Projekt, bei dem ich mit Hilfe des BK9050 und zwei Klemmen einen Sortierer ansprechen soll, doch dazu eventuell später mehr. Im Moment bin ich noch beschäftigt damit, den Koppler selber anzusprechen. Ich verwende Labview 12.0 und ModbusTCP.
Aktuell habe ich das Problem, dass der Koppler mir keine Rückgabe gibt. Ich glaube, mein Eingabestring ist nicht korrekt. Daher habe ich ein paar Fragen.
Der Aufbau des ModbusTCP-Protokolls nach Handbuch von Beckhoff ist folgendermaßen (in der ersten Spalte das Byte, in der Zweiten der Name, in der dritten einen Erklärung)
0 |Transaction identifier | wird vom Slave zurückgesendet
1 |Transaction identifier |wird vom Slave zurückgesendet
2 |Protocol identifier |immer 0
3 |Protocol identifier |immer 0
4 |Length field |0 (wenn die Nachricht kleiner 256 Byte ist)
5 |Length field |Anzahl der folgenden Bytes
6 |UNIT identtifier |wird vom Slave zurückgegeben
7 |Modbus |es folgt das Modbus-Protokoll beginnend mit der Funktion
Als Eingangsstring ergibt sich nach meiner Ansicht daher ein String mit 8 Bytes in HEX:
00 00 00 00 00 00 FF + Byte für die Funktion (+ Daten).
Stimmt das?
Als eine Mögliche Funktion kann der Beckhoff 9050 die ersten zwei analogen Eingänge lesen. Dazu ist im Handbuch ein Beispiel gegeben. Die Anfrage lautet in diesem Beispiel, die ersetn zwei Register auszulesen:
Funktions-Code 4
Start-Adresse high 0
Start-Adresse low 0
Anzahl high 0
Anzahl low 2
Das bedeutet doch dann, dass mein Eingabestring folgendermaßen aussieht, wobei die letzten 4 Byte meine Daten sind:
00 00 00 00 00 00 FF 04 00 00 00 02
Stimm das?
Ebenfalls habe ich eine Frage zu dem Baustein TCP READ, speziell zu dem Parameter "Zu lesende Bytes". Dieser gibt an, wie viele Bytes die Rückgabe hat. Also wenn mein obiges Beispiel antwortet, dann habe ich doch sicher die 8 Bytes + Daten (z.B. 5) = 13 Bytes. Dann muss ich also bei "Zu lesende Bytes" 13 einstellen, oder?