TIA Modbus TCP 2 Word in Real

Zuviel Werbung?
-> Hier kostenlos registrieren
ja, das habe ich auch probiert, leider ohne Erfolg.
Das ist Janitza MPA-3-668 (Modbus RTU) aber über Bender COM465IP (MOdbusTCP). Ich habe Mappigtabelle und die Adresse passen
 
Eigentlich sollte das mit MB_MODE=104, DATA_ADDR=4880 und LEN=4 für 2 Real-Werte passen.

Stell das doch so nochmal ein, und dann setz dazwischen Request auf false und wieder auf true, und auch mal die Statusausgänge beachten ob Done oder Error kommt, und wenn Error dann den Statuswert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst dir mal die einzelnen Bytes ansehen wie das mit der Real-Zahl zusammenpasst, ob da etwas gedreht werden muss. Bei einigen Janitza lassen sich die Werte mit einem entsprechenden Registeroffset auch in anderer Endianess lesen. Kann aktuell nicht bei mir ins Programm schauen welche Register ich da gelesen habe.
 
soll ich für Datapuffer Array of real einstellen oder?

ich kann evtl. Array of Byte nutzen, aber wie kann ich dann byte umdrehen, falls nötig?
 
Ich habe mit dem MB_CLIENT keine Erfahrung, ein paar Sachen kommen mir aber komisch vor:
- müsstest Du nicht MB_MODE 103 verwenden? Halteregister lesen
- müsste MB_DATA_LEN nicht eine gerade Zahl sein?

Ich würde es mal mit MB_MODE = 103 und MB_DATA_LEN = 2 versuchen und schauen was kommt.
Viele Datenpunkte auf einmal lesen kann man später immer noch versuchen, wenn es erstmal grundsätzlich mit 1 oder 2 Datenpunkten funktioniert.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
soll ich für Datapuffer Array of real einstellen oder?

ich kann evtl. Array of Byte nutzen, aber wie kann ich dann byte umdrehen, falls nötig?
Es wurde Dir doch schon ein paarmal geschrieben, daß Du direkt in einen Empfangspuffer lesen sollst, der aus REAL oder Array of REAL besteht, und dann erhältst Du auch direkt REAL, wenn Du ein Doppelregister ausliest, was einen REAL (Float) enthält.
Was schreibt denn die TIA-Hilfe zu MB_CLIENT zum Parameter MB_DATA_PTR
Parameter MB_DATA_PTR schrieb:
• Wenn man einen Global-DB mit optimiertem Zugriff verwendet, kann MB_DATA_PTR auf eine Variable mit elementarem Datentyp oder ein Array von elementaren Datentypen verweisen. Folgende Datentypen werden unterstützt:
(...) DWord, DInt, UDInt, Real

• Wenn man als Speicherbereich einen Merkerbereich oder einen Global-DB mit Standardzugriff verwendet, besteht für MB_DATA_PTR keine Einschränkung mehr auf die elementaren Datentypen; MB_DATA_PTR kann dann auch auf komplexe Datenstrukturen wie PLC-Datentypen (UDTs) und Systemdatentypen (SDTs) verweisen.

Harald
 
wie muss ich Modbus Client parametrieren, damit ich folgende Register abfrage:
FC 04
Adresse: 4880
Datatyp: Float
LEN: 2
Wenn es mit Modbus Poll mit Function 04 korrekt funktioniert, dann ist die mögliche Auswahl ja nicht so groß. Ich glaube, es müsste so passen:

MB_MODE = 0, MB_DATA_ADDR = 34881, MB_DATA_LEN = 2 (oder 4 für 2 REAL-Werte)
oder
MB_MODE = 104, MB_DATA_ADDR = 4880, MB_DATA_LEN = 2 (oder 4 für 2 REAL-Werte - das hat Thomas auch so geschrieben)

Bei MB_DATA_PTR gib ein Array of REAL an

Harald
 
Ich denke auch dass die Parameter richtig sind, aber ich bekomme leider noch keine richtige Werte, obwohl mit Modbus Poll mit gleichen Parameter richtige Werte kommen.
ich habe auch keine Kommunikation Probleme, bei Status immer 7005/7006, und Busy/Done. alles i.O

Gibt vieleicht noch etwas in Konfiguration, was zu berücksichtigen ist, HW Konfig oder so was ä.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast weiter oben geschrieben, dass Du nicht mit dem Janitza-Gerät, sondern mit einem anderen kommunizierst.
1. Eventuell musst Du doch swappen. Probiere dazu alle Varianten in Deinem Poll-Tool aus (byte- und wortweise) und notiere die dann falschen Werte. Ist einer davon der, den Du in der SPS empfängst?

2. Manche Tools zählen ab 0, andere ab 1 als Startadresse. Wenn Du deine Adresse um ein Wort verschiebst?
 
Du hast weiter oben geschrieben, dass Du nicht mit dem Janitza-Gerät, sondern mit einem anderen kommunizierst.
1. Eventuell musst Du doch swappen. Probiere dazu alle Varianten in Deinem Poll-Tool aus (byte- und wortweise) und notiere die dann falschen Werte. Ist einer davon der, den Du in der SPS empfängst?

2. Manche Tools zählen ab 0, andere ab 1 als Startadresse. Wenn Du deine Adresse um ein Wort verschiebst?


leider nicht.
in ModbusPoll:
ID=1 , F=04, Adress: 4880
Ergebnis: 231,975

in TIA Modbus Client
Interfaceid: 64
ID: 16#0001
Connectiontyp: 16#0B
IP Adresse: gleiche
RemotePort:502
LocalPort:0
MB_Mode: 104
MB_Adresse: 4880
MB_Len: 4

Ergebnis: 1.492878E-36

mit Swap in Modbuspoll habe probiert, bekomme nicht diese Wert aus TIA

jemand eine Idee?
 
Die beiden Werte haben mal nichts mit einander zu tun:

Temp.JPG

Da hilft kein Schieben oder tauschen...
 
Kann ich mal fragen wer hier mit wem kommuniziert?

Wovon ich ausgehe was am Ende laufen soll:
Janitza <RTU> Bender <TCP> S7-1200

zum Testen:
Janitza <RTU> Bender <TCP> ModBus Poll

Ist das so richtig oder sieht das irgendwie anders aus?
Mittlerweile wurde soviel getestet, das müsste schon längst laufen. Aber die Adresse 4880 sieht mir irgendwie nicht korrekt aus, vielmehr 4881 oder 0. Aber die Konfiguration vom Bender-Gerät (Modbus-Master) steht hier auch nirgends, nur ModBus Poll, was eigentlich ein ModBus-Master sein sollte, und kein Slave wie wir es ja brauchen oder wird nun versucht die 1200 mit dem ModBus Poll zu verbinden?!

Wie oben schon geschrieben, alles verwirrend und nicht zusammenhängend hier.
 
es ist GELÖST

der Wert für den Modbus Unit Identifier, denn der ist bei Siemens in dem MB-Client FB standardmäßig auf die ID 255 (0xff) gesetzt. ich habe ID bei Instanz Daten angepasst (auf 1) und jetzt funktioniert.

Vielen Dank für eure Unterstützung
 
Zurück
Oben