# Modbus RTU PFC200 mit 652er serieller Schnittstelle RS485



## luluhühü (1 August 2020)

*Gelöst Modbus RTU PFC200 mit 652er serieller Schnittstelle RS485*

Guten Tag,

ich versuche über Modbus RTU mittels 750-652er Klemme auf einem PFC200 Controller Register auszulesen.
Jedoch kann mein Slave nur eine gewissen anzahl von Registern gleichzeitig ausgeben.
wie kann ich aber alle Werte auslesen?

ich habe mir überlegt
z.B.:

wert 1-10 als erstes zu lesen und im Programm zu speichern,
nach 2 Sekunden sollen die werte 11-20 ausgelesen werden
...
und so weiter
...
und wenn alle Werte ausgelesen sind, dies von vorne zu wiederholen.

aber wie kann ich das realisieren, dass im Programm trotzdem alle Werte angezeigt werden?

mit mehreren Funktionsbausteinen oder mehrere Programmen ?

Ich bin auf dem Gebiet noch ein Neuling.

Vielen Dank für jede Beteiligung an diesem Thema.


----------



## KLM (2 August 2020)

Moin, Dein Problem wird nicht sein, dass das Programm die Werte nicht hält, sondern dass bei Modbus immer alle Register gepollt werden. Mit den Konfiguratoren wirst Du daher nicht arbeiten können. Du wirst daher den Modbus als Funktionsbaustein aus der e!COCKPIT Bibliothek WagoAppPlcModbus realisieren müssen (bei CODESYS 2.3 gibt es auch eine Bibliothek, aber da fällt mir der Name grad nicht ein). Dort kannst Du dann die einzelnen Gruppen in einer Queue definieren und in einer Schrittkette zeitversetzt abfragen. Der Support hat auf Anfrage sicherlich ein Bsp. für Dich. In der Firma hab ich auch eines, aber das dauert aktuell etwas.


----------



## luluhühü (2 August 2020)

KLM schrieb:


> Moin, Dein Problem wird nicht sein, dass das Programm die Werte nicht hält, sondern dass bei Modbus immer alle Register gepollt werden. Mit den Konfiguratoren wirst Du daher nicht arbeiten können. Du wirst daher den Modbus als Funktionsbaustein aus der e!COCKPIT Bibliothek WagoAppPlcModbus realisieren müssen (bei CODESYS 2.3 gibt es auch eine Bibliothek, aber da fällt mir der Name grad nicht ein). Dort kannst Du dann die einzelnen Gruppen in einer Queue definieren und in einer Schrittkette zeitversetzt abfragen. Der Support hat auf Anfrage sicherlich ein Bsp. für Dich. In der Firma hab ich auch eines, aber das dauert aktuell etwas.




Guten Abend,
ja ich mach das NICHT mit dem Konfigurator.
Ich mache das mit dem MyserialMaster FB über die Bibliothek wie Sie schon sagten.
Jedoch weis ich nicht wie ich das realisieren kann mit dem Programm, dass nur 6 Register gleichzeitig ausgelesen werden.
Ich möchte in etwas 30 Register auslesen und programmiere in ST.
jetzt habe ich es mit einer Jobliste und einer wResponselist versucht, aber irgendwie mag das so nicht wirklich...


----------



## KLM (2 August 2020)

Das ist genau der richtige Weg. Die einzelnen Jobs einfach nur noch in einer Schrittkette/Statemaschine einbinden. Ich hab da ein gutes Bsp. vom Support, komm nur kurzfristig nicht dran. Frag da mal, das beschleunigt Deine Arbeit sicher.


----------



## holgermaik (3 August 2020)

Bibliotheksverwalter -> WagoAppPlcModbus -> FbMbMasterSerial -> Dokumentation

da ist ein Beispiel


----------



## strgalt (8 August 2020)

KLM schrieb:


> Mit den Konfiguratoren wirst Du daher nicht arbeiten können.



Der Konfigurator ist in eCockpit nach wie vor nicht in der Lage mit den Wago eigenen Klemmen umzugehen, und wird es laut Wago vermutlich auch so schnell nicht.
Die supporten Ihre eigene Hardware nichtmal mehr!!!


----------



## KLM (9 August 2020)

@strgalt
Wenn Du schon keinen konstruktiven Mehrwert beibringst, dann zitier mich wenigstens richtig. Meine Aussage bezog sich auf das sequenzielle Lessen von Registergruppen, da der Slave nicht alle Register gleichzeitig bereitstellen kann.


----------



## luluhühü (9 August 2020)

habe eine Lösung gefunden:
nach langer Recherche habe das einfach mit einer Jobliste gemacht dann ging das wunderbar 
Problem ich konnte bisher nur in C und Java PRogrammieren dieser ST war mir noch etwas neu, geht jetzt aber auch ohne probleme 
Vielen Dank an alle.


----------



## strgalt (10 August 2020)

@KLM
Was wird das denn?
Ich habe lediglich deine Aussage korrigiert, da diese ganz einfach nicht stimmen kann, egal auf was du dich beziehst.
Der Konfigurator funktioniert nicht mit den Klemmen, egal ob lesen, schreiben oder sonstwas. Fertig!
Und eine Falschaussage zu korrigieren empfinde ich schon als Mehrwert, wenn es Dir nicht gefällt, einfach woanders weiterlesen...


----------



## TomWe (6 Dezember 2021)

luluhühü schrieb:


> habe eine Lösung gefunden:
> nach langer Recherche habe das einfach mit einer Jobliste gemacht dann ging das wunderbar
> Problem ich konnte bisher nur in C und Java PRogrammieren dieser ST war mir noch etwas neu, geht jetzt aber auch ohne probleme
> Vielen Dank an alle.


Hallo,
wie hast du die Jobliste erstellt?
Gruß Thomas


----------



## bbm1995 (9 Dezember 2021)

@TomWe 


Spoiler: Query/Job Liste



Die Jobliste habe ich aufgetrennt in mehrere Kategorien (siehe Kommentare im Bild),
um unwichtigere Daten seltener abzufragen (Joblist Configuration).
	

		
			
		

		
	






Achtung, der Aufwand, die Programmierung einigermassen sauber zu schreiben könnte überwältigend sein für Neulinge.
Es empfiehlt sich auch, Read und Write Variablen abzutrennen um nachvollziehen zu können ob die Werte auch in den Modbus Slave geschrieben und dann korrekt abgelesen werden.


Spoiler: Read/Write getrennt in einer Struktur








Auf Wunsch kann ich eine Exportdatei hochladen, garantiere aber nicht dass sie funktioniert.


----------



## TomWe (9 Dezember 2021)

bbm1995 schrieb:


> @TomWe
> 
> 
> Spoiler: Query/Job Liste
> ...


Vielen Dank. Das hilft mir sehr ein besseres Verständnis zu bekommen wie sowas zu schreiben ist.


----------



## TomWe (9 Dezember 2021)

_


----------

