TIA S7-1200 Modbus RTU Fragen zur Kommunikation

Das heisst aber, dass du am richten Ort die Daten bereitstellst. Wenn der DB von19006 bis 19046 geht wie in deinem Screenshot gesehen wären es ja auch 41 ich würde die Obergrenze auf 19045 stellen oder alternativ 41 als länge dann nehmen.

Siemens Hilfe:

Fehlermeldungen (S7-1200, S7-1500)
16#8389Ungültige Datenbereich-Definition:
  • Unzulässiger Wert von data_type
  • DB-Nummer unzulässig oder nicht vorhanden:
    • Unzulässiger Wert von db
    • DB-Nummer existiert nicht
    • DB-Nummer wird bereits von einem anderen Datenbereich verwendet
    • DB mit optimiertem Zugriff
    • DB liegt nicht im Arbeitsspeicher
  • Unzulässiger Wert von length
  • Überlappung von MODBUS-Adressbereichen, die zu demselben MODBUS-Datentyp gehören
Überprüfen Sie die Definition der Datenbereiche.
Siehe Kapitel Zugriff auf Datenbereiche in DBs anstelle des direkten Zugriffs auf MODBUS-Adressen ab Version V4.0
 
also hab meinen DB folgendermaßen gemacht:
von 19006
bis 19045

ergibt bei mir 38 Worte

also folgendes eingestellt:
data_type: 3
db: 1
start: 19006
length: 38

ergibt für mich Sinn und müsste richtig sein.

Leider wieder Fehler 8383.
 
Hallo Chris,
ich habe mich damit auch mal versucht.
Habe mit einer 1214C inkl. RS485 Modul CB 1241 mit 3 ABB Frequenzumrichter gesprochen.
Wir haben das für uns intern dann aber entschlossen, das nie wieder so zu machen.
Was nicht wirklich Normiert ist, highbyte, lowbyte, middle endian, big endian, was auch immer ......
.... ist einfach mit viel zu viel Try an Error verbunden.


Ich hatte das Beispiel von Siemens verwendet,
zuerst Schnittstelle definieren..
Dort Deine Baudrate, etc. eintragen.
1728666433742.png

Dann die entsprechenden Register lesen bzw. Schreiben.
Ich denke Du bist Master....


1728666607347.png
Hier hat Siemens mal wieder das Rad neu erfunden, statt den genormten Functioncodes FC3/4/10/16
sind da Stolpersteine drin. Das kann in der Doku nachgelesen werden, ist aber für Modbus Ersttäter übel....
Den Funktioncode hast Du oben nicht genannt.
1728666977714.png

Wenn Du an den Modbus Einstellungen schraubst,
dann muss die SPS immer ein coldstart machen.
Zumindest war das im TIA V14 so.

Sollten dann die ersten Werte kommen,
dann ist zu bedenken, dass die Realzahl als 2 Wörter kommt,
diese dann highword, low word verdreht sein können.

Ist es ein PQ Plus Messgerät?
Dann versuch die Standard Janitza Modbus Register, FC4, ab Startadresse 19000
Viel Erfolg....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nein meine Steuerung bildet sozusagen ein Messgerät nach. Eingestellt ist auf der Gegenseite (Master) dass er auf einem Janiza UMG96 die Daten abholt, daher kommen auch die Modbus-Adressen von 19006 usw.

Was ich noch sagen wollte. Der Fehler 8383 steht nicht dauerhaft an. Jedoch kommt er immer wieder mal. Jetzt ist die Frage ob grundsätzlich kein Fehler anliegen darf oder ob die Kommunikation evtl sogar funktioniert (konnte ich heute leider nicht mehr testen, da die Kollegen auf der Gegenseite schon um 12Uhr Feierabend gemacht haben).

Wenn der Fehler 8389 jedoch kommt, steht dieser dauerhaft an. Geht auch erst wieder weg, wenn man die length auf einen niedrigeren Wert ändert.
 
Hi Chris,

ich denke da die von Siemens ins Handbuch schreiben.....
"Halteregister des Slaves. Der Parameter MB_HOLD_REG muss auf einen globalen
Datenbaustein verweisen, bei dem das Attribut "Optimierter Bausteinzugriff"
deaktiviert ist.""


Dann hast Du Pech, Du kannst keine Variablen mit so hohen Registernummern in einen DB schreiben.
Da ist bei Siemens zweicks 16 bit Adressierung dann der Baustein zu klein.

Ein Fall für den Siemens Support.
Schuld ist Janitza, die können erst ab 19000, oder wer auch schuld ist,
der hat Feierabend seit 12:00Uhr.


Vielleicht einfach ein UMG nachrüsten....

Viel Erfolg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja damit scheint es aber leider nicht zu funktionieren. Welche Adresse würde er den grundsätzlich abfragen müssen, wenn ich den DB1 ab Wort 1 als Modbus Adresse nehme? Oder in welchen Merkerbereich sollte ich die Werte legen, damit es mit den grundsätzlichen Adressen funktioniert und welche wären das?
 
Der Fehler 8383 steht nicht dauerhaft an. Jedoch kommt er immer wieder mal.
Vielleicht adressiert der Modbus-Master falsch oder anders als erwartet? Oder liest manchmal zusätzliche nicht vereinbarte Register z.B. für Verbindungstest?

laut Aussage des Gegenüber möchte er die Daten nun folgendermaßen abholen:
L1-L2 -> 19006
L2-L3 -> 19008
L3-L1 -> 19010
P Gesamt -> 19026
Q Gesamt: -> 19042

Aber was muss ich da jetzt im HR_Start_Offset einstellen, damit es klappt?
Bei Modbus muss man immer damit rechnen, dass der Partner die Register +/-1 anders zählt als vereinbart/dokumentiert. Deshalb würde ich den Holdregister-DB zunächst vorsichtshalber mit mindestens 1 Reserve-Registerpaar davor und danach deklarieren. Ich würde auch nicht einfach Array[19006..19043] of Word deklarieren, sondern eine Struktur mit den richtigen Datentypen deklarieren, umso einfacher wird dann das kopieren der Aktualwerte in die Holdregister:
DB_mbHoldRegs.png

Dementsprechend beim Aufruf vom Modbus_Slave angeben:
MB_ADDR = 1
MB_HOLD_REG = P#DB1.DBX0.0 BYTE 84

und HR_Start_Offset: 19004
 
Zuletzt bearbeitet:
Zurück
Oben