-> Hier kostenlos registrieren
Hallo zusammen,
zur Koordination unserer Bestücklinie gibt es ein übergeordnetes Leitsystem welches auf C# und Snap7 arbeitet. Das Anlagennetzwerk besteht idR. aus mind. 15 SPS' (1200er oder 1500er) welche alle beim Leitsystem nach der Richtung fragen.
Erster Ansatz/DB Aufbau:
DBX0.0 - Start
DBD2.0 - ErrorCode
1. CPU setzt Bit 0.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf false
Problem - sporadisch: Die CPU überschreibt (mit true) den vom PC geschriebenen Wert (false) und wartet dadurch endlos (bis zum Timeout) auf Rückmeldung vom PC.
Die Variablen werden dabei als INOUT an die FBs gehängt.
Beim Aufruf des FBs werden die Werte in einen I-DB zwischengespeichert und anschließend über diesen wieder zurück geschrieben. Dadurch kann es passieren, dass ein Wert/eine Variable die während einem FB Aufruf (vom PC) geschrieben wurde, von der CPU wieder zurück überschrieben wird und diese/r somit verloren geht.
Zweiter Ansatz:
DBX0.0 - Done
DBD2.0 - ErrorCode
DBX6.0 - Start
1. CPU setzt Bit 6.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf true
3. CPU setzt Bit 6.0 auf false
4. PC setzt Bit 0.0 auf false
Dadurch konnte dieses Problem vermieden werden.
Meine Frage, gibt es jdn. der einen ähnlichen Anwendungsfall hat und dieses Problem kennt oder anders gelöst hat?
Danke!
zur Koordination unserer Bestücklinie gibt es ein übergeordnetes Leitsystem welches auf C# und Snap7 arbeitet. Das Anlagennetzwerk besteht idR. aus mind. 15 SPS' (1200er oder 1500er) welche alle beim Leitsystem nach der Richtung fragen.
Erster Ansatz/DB Aufbau:
DBX0.0 - Start
DBD2.0 - ErrorCode
1. CPU setzt Bit 0.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf false
Problem - sporadisch: Die CPU überschreibt (mit true) den vom PC geschriebenen Wert (false) und wartet dadurch endlos (bis zum Timeout) auf Rückmeldung vom PC.
Die Variablen werden dabei als INOUT an die FBs gehängt.
Beim Aufruf des FBs werden die Werte in einen I-DB zwischengespeichert und anschließend über diesen wieder zurück geschrieben. Dadurch kann es passieren, dass ein Wert/eine Variable die während einem FB Aufruf (vom PC) geschrieben wurde, von der CPU wieder zurück überschrieben wird und diese/r somit verloren geht.
Zweiter Ansatz:
DBX0.0 - Done
DBD2.0 - ErrorCode
DBX6.0 - Start
1. CPU setzt Bit 6.0 auf true
2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf true
3. CPU setzt Bit 6.0 auf false
4. PC setzt Bit 0.0 auf false
Dadurch konnte dieses Problem vermieden werden.
Meine Frage, gibt es jdn. der einen ähnlichen Anwendungsfall hat und dieses Problem kennt oder anders gelöst hat?
Danke!
Zuletzt bearbeitet: