Moin!
Kann es vorkommen, dass beide Steuerungen zur gleichen Zeit die selben Daten schreiben?
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!
Moin!
Kann es vorkommen, dass beide Steuerungen zur gleichen Zeit die selben Daten schreiben?
Genau das ist mein Problem, das würde ich gerne verhindern.
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
Last edited by statix; 13.01.2021 at 16:45.
Klingt schon ganz gut, werde ich mal ausprobieren!
Danke für die schnelle Antwort!
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.
Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.
John Ruskin
Bookmarks