Moin.
Ich habe eine Lichtsteuerung, welche ich über den Modbus steuere.
Aber den DALI will ich nicht immer alle 200ms sagen, dass er die Scene neu anfahren soll.
Es gibt doch sicher eine möglichkeit zu erfassen, wann sich Modbus Werte ändern oder?
also um Änderungen mitzubekommen muß man eigenlich bei Modbus pollen. z.B. alle 200ms. Ich sehe da keine andere Möglichkeit. Wo ist das Problem, öfter mal zu pollen ?
Kostet ja eigenlich nichts...
Die Modbus Werte kommen problemlos an. Die Wago SPS arbeitet da als passiver Client.
Mein Anliegen ist , dass ich gerne eine Variable auf TRUE schalten würde, wenn sich in meinem
Speicherbereich, der über Modbus geschrieben wird, die WORD Werte ändern, damit ich auf
die Änderung reagieren kann.
Tja und genau deshalb mein Frage, da ich bisher nur Bausteine verwendet habe und davon (noch) wenig Ahnung habe.
Einen passenden Baustein habe ich aber auch in der OSCAT leider nicht gefunden
Also:
bei Neustart den aktuellen Wert im FB merken
dann bei jedem Zyklus den neuen Wert mit dem alten vergleichen:
.. ist der Wert anders dann den Wert wieder merken und ein Flanke schalten...
Fertig...
Das ist wohl eines der einfachsten "Programme" überhaupt. Vieleicht in Zukunft nicht so viel mit OSCAT arbeiten sonder mal einen Lösungsansatz selbst erarbeiten.
Ach ja... was machen wir nur, wenn keiner mehr LIB`s schreibt?
In welcher Sprache programmierst Du?
Deiner Aussage entnehme ich, dass Du ein "Anfänger" bist?
Schau Dir mal zu dem von CAS genannten Ablauf den Baustein "EQ" und die Funktion von Sprungmarken an!
F1 ist dazu eine prima Taste... nur mal so als Hinweis!
Ablauf:
1. Vergleich auf Änderung
2. Änderung nicht vorhanden? Dann Sprung in letztes Netzwerk
3. Startbit für kommunikation rücksetzen
4. Änderung vorhanden? Dann zyklisch weiter
5. Eingangswort in Speicher kopieren
6. Startbit für kommunikation setzen
7. Bausteinaufruf des Kommunikationsbaustein
8. siehe Punkt 3.
Versuch das mal... und poste deine Zwischergebnisse, wenn du nicht weiter kommst!