Modbus TCP, Et200SP kommunikation mit GE TOC-Messgerät

Flachschipp

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

bin totaler Modbus Neuling und stehe da auch noch Momentan etwas auf dem Schlauch. Leider beginnt mein erstes Problem schon bei der Registertabelle des GE-Messgerätes. TOC_Modbus_Register.PNG

Laut der Tabelle liegt z.B. der Leitfähigkeitswert Low Word auf der Adresse 3500 und ist vom Format 16 Bit unsigned.
Wie kann denn aber dann auf der Adresse 3501 schon das Leitfähigkeitswert High Word kommen? Müsste das dann nicht auf der Adresse 3502 kommen?

Oder habe ich ein Grundsätzliches Verständnis Problem?

Vielen Dank für eure Hilfe.

Gruß Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi...
vielen Dank für die Antwort.
Ich habe mal die ganze Registertabelle angehängt. Für mich sind die Paramater ab 3010 interessant. TOC_Modus_Register_komplett.PNG
Ich würde jetzt:
1. Den MB MODE auf 104 setzen.
2. Den MB DATA ADDR auf 3010
3. Den MB DATA LEN auf die Anzahl der Werte die ich lesen möchte (34)

Was ich nicht ganz verstehe ist, die Adressen laufen ja nicht durchnummeriert durch, sondern mit Sprüngen. (zb. von 3012 auf 3100)
reicht da die Angabe 3010 bei MB DATA ADDR? Oder muss ich erst von 3010 bis 3012 lesen, dann von 3100 bis 3105 usw.....

Vielen Dank für eure Hilfe. Irgendwie stehe ich da ein bissl aufm Schlauch... :confused::confused::confused::confused::confused:
 
Du könntest versuchen ob der Partner es erlaubt auch die Register dazwischen zu lesen.

Dann könntest du dir beispielsweise in einem Datenbaustein eine Variable wie MB_INPUTREG : Array [3010..3402] of Word anlegen, und dann DATA_ADDR auf 3010 und LEN auf die Anzahl Register, also 392. Dann liest du zwar viele nicht benötigte Daten mit und verbrauchst etwas Speicher, aber das macht die Programmierung einfacher. Dann hast du in MB_INPUTREG[3100] anschließen direkt das Jahr in deinem Fall.

Ansonsten müsst du dir eine kleine Schrittkette programmieren in der du nacheinander nur die benötigten Register ausliest. Zwischen dem Umschalten der Parameter würde ich den Modbus-Master FB einmal mit REQ:=false aufrufen. Also: Parameter setzen, Req setzen, Statusausgänge auswerten und Daten auswerten, Req zurücksetzen, neue Parameter setzen, Req setzen, usw.
 
Hey Thomas,
vielen Dank für deine Hilfe, jetzt habe ich das mit den Registern denke ich auch verstanden :rolleyes:.
Ich habe jetzt mal einen Baustein geschrieben und einen Testaufbau gemacht.
Bei der Kommunikation habe ich allerdings folgendes Problem.
Ich habe eine ET200SP mit TIAV15.1 programmiert.

Ich weiß nicht, ob das Messgerät als Master oder Client arbeitet und habe einfach mal die Bausteine MB_Master und MB_Client ausprobiert.

Mit der Konfiguration:

MB_Client_Mode: 104
MB_Client_DATA_ADDR: 3011
MB_Client_DATA_LEN: 1
MB_Client_CONNECT.ID: 4

Mein STATUS wechselt jetzt ständig zwischen:
7004
Verbindung hergestellt und überwacht. Keine Auftragsbearbeitung aktiv.

7006 Daten werden empfangen.


ohne Fehlermeldung aber auch ohne 0000 Anweisung fehlerfrei ausgeführt.
Der Parameter MB_CLIENT_Instance.Connected ist true aber ich bekomme keine Werte in meinen Array (GE_Daten_unsortiert : Array[0..34] of Word)

Kannst du mir hier auch helfen?
Vielen Dank und viele Grüße.
Daniel

 
Zurück
Oben