Step 7 Synchronisation eines Datenbausteins zwischen zwei Steuerungen

User_78

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich suche nach einer Lösung bei der ich von zwei Steuerungen auf einen Datenbaustein zugreifen kann (lesend und schreibend). Die eine Steuerung ist in Step7 projektiert (416F-2) und die andere unter TIA V16 (1515F-2PN). Eine Kommunikation zwischen den Steuerungen ist über Profinet möglich. Der Datenbaustein enthält mehrere Datenworte die von beiden Steuerungen synchronisiert werden sollen. Hat einer einen Tipp wie man das am einfachsten bewerkstelligen kann? Vielen Dank schonmal vorab!
 
Ok, dann braucht es ja eine Vorfahrtsregel.
Zum Besipiel könnte man das schreiben der Daten über ein Lock-Bit oder Token-Bit sicherstellen.

Jeder Datenpunkt bekommt zwei Bool-Werte zur Seite gestellt, das anzeigt ob geschrieben werden darf oder nicht.

Will nun SPS A die Daten schreiben schaut es zunächst auf dieses Schreibschutz-Bit von SPS B.
Ist es false darf sie schreiben und setzt ihrerseites ihr Schreibschutzbit auf true.
Dann wartet sie 1-2 Zyklen ab, ob die SPS B nicht zufällig im gleichen Moment schreiben will.
Ist das nicht der Fall schreibt sie die Daten in den Baustein und setzt ihr Schreibschutzbit auf false.

Alternativ könnte es auch ein Token-Integer sein.

SPS A schreibt: Token = 10
SPS B schreibt: Token = 20
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte das ganze auch über einen Empfangspufferlösen. Also nicht direkt in den Ziel-DB schreiben, sondern erst in einen Zwischen DB und nach dem eintragen der Daten im Programm von dort in den gewünschten Ziel-DB kopieren, hierbei kannst du dann auch eine Vorrangregel welche SPS wann darf einfach einprogrammieren. Das hat auch den Charm, dass du nicht blind hoffen musst, dass dir die zweite SPS nicht rein kopiert (je nachdem wie du die Kommunikation aufgebaut hast), falls du azyklische Kommunikation nutzen solltest.
 
Wenn von beiden Seiten die selben Daten eingegeben werden können, so müssen diese in der Regel auch synchronisiert werden, damit auf beiden Seiten auch der selbe aktuelle Wert angezeigt werden kann. Das bedeutet, in beide Richtungen übertragen, jeden einzelnen Wert oder ganze Datenblöcke auf Änderungen überwachen und entsprechend synchronisieren.
 
Hallo User78,

Welche Art der Verbindung wird den genutzt? OUC, oder arbeitest du mit einer S7 Connection mit Put / Get? Bei beiden geht es mit etwas Workaround.

"edit"
OUC geht meiner Erfahrung mit einer 416 nicht.

Falls du einen anderen Weg eingeschlagen hast, bin ich ebenfalls sehr interessiert, wie du einen DB mit mehreren CPU`s Synchron haltest :).

Gruß,
Molker
 
Zuletzt bearbeitet:
Zurück
Oben