Hallo, ich hoffe mir kann jemand bei folgendem Problem helfen:
Ich muss vorweg schicken, dass ich mit Modbus noch nicht so viel gemacht habe und bisher ging es immer irgendwie (vielleicht auch zufällig)
Eine S7 1214 soll als Modbus client einen Stromzähler auslesen.
Der Zähler hat die Modbus ID1 und liefert 72DW Daten
An meinem client Baustein bekomme ich bei Status die Meldungen 7005 dann 7006 (Daten senden / lesen)
und dann 8383
in den Datenbaustein wird nichts geschrieben.
Weiß jemand was das Problem sein könnte?
Viele Grüße
Matthias
Hi, das Modem heißt energy2scada und kommt von H &IT Berlin. Einen Auszug aus der Anleitung in dem der Modbus beschrieben ist, sende ich in der Anlage.
Startwerte und Beobachtungswerte sind ungleich weil ich rumprobiert habe...
...das frag ich mich auch: der Status wechselt immer zwischen 7005, 7006 und 8383 der screenshot hat grad 7005 erwischt - die dürfte doch aber gar nicht da sein
wenn ich auf 103 stelle oder...?
Ja, ich neige dazu Dinge zu verschlucken die ich für mich als selbstverständlich erachte, Harald schreibt lieber ausführlich. Er ist schon länger hier im Forum dabei und hat einiges gelernt wie man es besser ausschreiben sollte, bzw. wann.Ich habe den Modbus "MB_Client" Baustein genommen der im TIA standartmäßig unter - weitere - Modbus tcp - zu finden ist..
Der Baustein ist im OB1 aufgerufen und mit einem DB Parametriert aus dem auch der screenshot stammt.
Das Modem ist Slave - also Server - PN/DP hat den richtigen Hinweis gegeben - hier muss es natürlich nicht Master/Slave sondern Client/Server heißen
sorry für diese Vermischung...
Also, wir reden hier vom Server und die S7 ist client.
Lesedaten "Siemens PAC4200 Lesedaten" 16.0 True True True False
[...] // Alles hiervor ist wie Offset 119 deklariert
Offset 119: Maximaler THD Spannung L2-L3, Einheit %, Wertebereich 0 … 100 Real 252.0 0.0 True True True False
Offset 121: Maximaler THD Spannung L3-L1, Einheit %, Wertebereich 0 … 100 Real 256.0 0.0 True True True False
Offset 123: Reserve, Einheit -, Wertebereich - Word 260.0 16#0 True True True False
Offset 125: Reserve, Einheit -, Wertebereich - Word 262.0 16#0 True True True False
Offset 127: Reserve, Einheit -, Wertebereich - Word 264.0 16#0 True True True False
Offset 129: Maximale Netzfrequenz, Einheit Hz, Wertebereich 45 … 65 Real 266.0 0.0 True True True False
Offset 131: Maximaler 3-Phasen Durchschnitt Spannung L-N, Einheit V, Wertebereich - Real 270.0 0.0 True True True False
Offset 133: Maximaler 3-Phasen Durchschnitt Spannung L-L, Einheit V, Wertebereich - Real 274.0 0.0 True True True False
[...] // Alles hiernach ist wie Offset 133 deklariert
REGION Leseauftrag
//Lesen
#DB_MB_Client(CONNECT := #Adressierung,
REQ := #"Kommunikation aufbauen" AND NOT #MBClient_Busy,
DISCONNECT := #MBCLient_Done OR NOT #"Kommunikation aufbauen",
MB_MODE := 103,
MB_DATA_ADDR := 1,
MB_DATA_LEN := 101,
MB_DATA_PTR := #Lesedaten,
DONE => #MBCLient_Done,
BUSY => #MBClient_Busy,
ERROR => #MBClient_Error,
STATUS => #MBClient_Status);
END_REGION
72DW sind doch 144 Worte (Register). Das ist doch mehr als in einem Durchgang gelesen werden kann, oder täusche ich mich da?
nachdem ich hier nicht rauslesen konnte ob und wie das Problem gelöst wurde hänge ich meine Frage einfach daran. Bei mir kommt immer der Status 8383 und ich weiß nicht warum. Ich hab hoffentlich alle relevanten Screenshots angehängt. Die Registerbeschreibung soweit ich das erkennen kann ist ja schon in einem Thread weiter oben.
Kenn mich allerdings nicht gut aus mit Modbus.
Vielen Dank für eure Hilfe.
Christoph
Im MB_Mode 0 unterscheidet Siemens die Modbus-Funktion indem Du 30001 als erstes Register, was im Gerät dann 1 wäre, angibst um Eingangs-Worte zu lesen, Modbus-Funktion 04.Hallo,
Scheinbar gibt es gar kein Register. Ich habe mir jetzt einen Ablauf einprogrammiert der das Register immer weiter schiebt. Aber ich erhalte Grundsätzlich die Antwort 8383. Was hat das eigentlich mit den Adressen ab 30001 und 40001 zu sagen?
Grüße
Christoph
Von 7000 auf 7004 und 7006 ist ja okay.Hallo escride1,
ich habs ausprobiert aber er meldet mir auch dann den Status 8383. Das Array ist jetzt 0..9 of Word und LEN ist bei 10. Steuerung wurde neu gestartet. Bringt mir dann auch erst den Status 7000 bis ich den REQ aktiviere. Dann kommt 7004. Kurzzeitig hab ich auch schon mal die 7006 als Status gesehen aber in meinem Array steht immer null.
Solltet ihr mehr Informationen benötigen um mir bei dem Fehler helfen zu können gebt mir bescheid.
Gruß
Und danke schon mal.
Hallo,
Scheinbar gibt es gar kein Register. Ich habe mir jetzt einen Ablauf einprogrammiert der das Register immer weiter schiebt. Aber ich erhalte Grundsätzlich die Antwort 8383. Was hat das eigentlich mit den Adressen ab 30001 und 40001 zu sagen?
Grüße
Christoph
Gibt es in dem Modbus-Gerät ein Register 0? Versuche mal ein einzelnes Register zu lesen, was es garantiert gibt und wo es auch die Registernummer + 1 und Registernummer - 1 gibt.
Harald
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?