TIA Hilfe bei Modbus TCP Verbindung

sochn0

Level-2
Beiträge
62
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich habe folgendes Problem: Ich muss Daten über Modbus TCP von einem Klimaschrank auslesen. Protokoll Mudbus Slave Modalität TCP.

Ich verwende TIA v16 und eine CPU 1510. Ich habe versucht dies mit dem Baustein Modbus TCP Server zu lösen jedoch ohne Erfolg. Ich habe nun den Baustein Modbus TCP Client genommen die Verbindung steht soweit nur ist mein Problem das ich nicht weiss was ich bei Modbus Mode , modbusdataadress bzw bei modbus datalen aufschalten muss. Ich will nur von Modbusadresse 100 bis 1923 Holding register lesen. Egal was ich eingebe es funktioniert nicht ich bekoome daten wenn ich 0, 40001, 10 eingebe jedoch sind diese Daten nicht plausiebel.

Ich habe mit dem Programm Ananas versucht auszulesen habe dort reading holding register eingestellt adresse 102 eingegeben und ich habe sofort den richtigen Wert bekommen.

Ich bin für jede Hilfe dankbar da ich ca 20 Klimaschränke auslesen müsste LG Alex
 
Du möchtest von 100 bis 1923 alle Halteregister lesen? Bissle viel, muss wohl aufgeteilt werden, da 125 max ist.

MB_MODE = 103 | maximal 125 Halteregister auf fremder Adresse 0 bis 65535 lesen
MB_DATA_LEN = 1 | 1 Halteregister lesen
MB_DATA_ADDR = 102 | Start bei Adresse 102

Versuch 1) MB_DATA_PTR = MD200 | erstmal gucken was kommt
Versuch 2) MB_DATA_PTR = MW200 | erstmal gucken was kommt

Damit würde ich nun erstmal beginnen und mit dem "Ananas"-Wert vergleichen.

Für weitere Informationen wären hier auch mehr Informationen hilfreich wie z.B. die Angabe wo die Adressregister zu finden sind das man sich das ansehen kann, das aktuelle Netzwerk vom MB_Client sowie seinen Datenbaustein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

und noch was zum Verständnis:

Modbus Master
fragt Daten von Modbus Slaves ab
fungiert als Client, da er keine Daten zur Verfügung stellt (hier MB_Client Baustein verwenden)
Modbus Slave
stellt Daten zur Verfügung
fungiert als Server, da er Daten zur Verfügung stellt (hier MB_Server Baustein verwenden)

Gruß
Move
 
Hi erstmal danke für deine Antwort ich will eigentlich nicht die ganzen adressen lesen ich brauch nur 4 Werte aber die bereiche sind soweit
1 Wert Wert 1.jpg
2 Wert Wert 2.jpg
3 Wert wert3.jpg

ich hoffe du kannst damit was anfangen
 
Gut, Du hast 3 Bereiche, ziemlich weit auseinander. Kann man an den Halteregistern der Klimageräte was ändern oder sind die fest? Wenn sie fest wären, dann hättest Du 3 Aufrufe pro Gerät, also 60 Stück. Und die müssten dann noch koordiniert werden.

Einfacher wäre es vielleicht wenn Du uns schreibst wo die Doku von den Geräten zu finden ist.

Ansonsten müsste MW200 den gleichen Wert einlesen wie "Ananas" bei den obigen Einstellungen.
 
Die Liste der Adressen im Handbuch ist ziemlich durcheinander. Sie wurde nicht nach den Adressen sondern Funktionen sortiert, war ein ganz Schlauer am Werk.

Du solltest versuchen ob von mir im ersten Beitrag die 2. Variante funktioniert und Du einen plausiblen Wert bekommst, evtl. mit Ananas vergleichen. Wenn dem so ist, dann wird Dir nichts anderes übrig bleiben als drei Aufrufe für die von Dir benötigten Daten zu erstellen.

Ich würde mir einen Datenbaustein mit allen Adressen der einzelnen Klimageräte anlegen. Diese müssen zwangsweise in ein array of struct. Hierdurch kann durch einen Index immer ein anderes Gerät adressiert werden. Dieser Index wird im FB verwaltet: Wenn alle drei Abfragen durch sind, dann den Index erhöhen, wenn am Ende angekommen, dann wieder auf 0(1) setzen.

So habe ich das auch mal mit 72 Ventilatoren gemacht. Das dauert zwar eine Weile aber das macht nichts. Du liest Daten aus die eh nicht zyklisch aktuell sein müssen bzw. können. Ich denke das ein Durchgang bei allen 20 Geräten etwa 2-3 Sekunden brauchen wird, sollte reichen.


Also zu Anfang nun: Funktioniert die Abfrage eines Wertes mit diesen Daten:

MB_MODE = 103
MB_DATA_LEN = 1
MB_DATA_ADDR = 102
MB_DATA_PTR = MW200

Wenn Dein MW200 belegt ist nimm halt ne andere Adresse. MW200 sollte als Word deklariert werden.
 
Vielen vielen Dank für die super Hilfe ich werde es morgen gleich versuchen und dann bescheid geben :D:D:D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi nochmals danke für deine Hilfe es hat alles funktioniert, habe das mit dem Array versucht leider ohne Erfolg was aber nicht so schlimm ist ich habe jetzt für jeden Schrank 4 Bausteine und arbeite diese einfach hintereinander ab. :):):)
 
Zurück
Oben