-> Hier kostenlos registrieren
Hallo liebe Gemeinde !
Ich bin derzeit dabei, in einem Verbund von 4 S5-CPUs einen Slave gegen eine S7 auszutauschen. Alle vier S5-CPUs sind mittels L1-Bus miteinander verbunden und besonders schlecht dokumentiert.
Nachdem ich das S5-Programm nun eigentlich fast komplett analysiert habe, habe ich auch herausgefunden, was an welcher Stelle im DB stehen muss, um es an die richtige Station zu senden, bzw. was an welcher Stelle im Empfangs-DB liegt.
Jedoch sind zwei Fragen offen geblieben:
1. Laut diesem S5-Programm werden ausschließlich Zustände der einzelnen Aggregate in Form von HEX-Zahlen sowie Steuerbits und Sollwerte übertragen. Was gänzlich fehlt sind Analogwerte. Diese sind jedoch definitiv in allen Anlagenteilen vorhanden, wo sie relevant sind. Deshalb nun die Frage: Wie war es denn früher üblich, Analogwerte per Bus zu übertragen ?
Ich habe für den Master und meinen Slave fast das komplette Programm zur Verfügung. Nur eine OBs fehlen mir jeweils.
Im Großen und Ganzen läuft es so ab, dass alle Daten in 2 verschiedenen DBs im Slave gesammelt werden und zyklisch an den Master gesendet werden - außer Analogwerte. Die sind offensichtlich einfach so im Master vorhanden und lassen sich in keinster Weise zurückverfolgen. Auch im Slave gibts keinerlei Hinweise auf die Analogwerte.
2. Die Daten, die vom Slave zum Master gesendet werden, sind insgesamt so viel, dass man diese in mehreren Zyklen senden muss. Ich wollte diese Daten nun genau so senden. Ein Zähler zählt bei jedem Senden um eins höher und zeigt so auf das erste zu sendende Wort im DB. Die Länge ist fest vorgegeben (28 Byte) und gesendet wird 13 mal, bis alle Daten dort sind. Wie kann jedoch nun sicher stellen, dass auch die Master-CPU im korrekten Sendezyklus ist und die Daten an der richtigen Stelle im Empfangsfach ablegt ? Ich denke da so an eine Art Syncronisation, die jedoch aus beiden Programmen nicht hervorgeht. Es ist mir dabei nicht möglich, das Programm der Master-CPU zu verändern, jedoch muss es ja schon irgendwie gegangen sein. Wie war das nun also üblich ?
Zur Hardware:
- Master und Slave je CPU928B
- Kommunikationsprozessor ist jeweils CP530
Vielen Dank für Eure Unterstützung.
Ich bin derzeit dabei, in einem Verbund von 4 S5-CPUs einen Slave gegen eine S7 auszutauschen. Alle vier S5-CPUs sind mittels L1-Bus miteinander verbunden und besonders schlecht dokumentiert.
Nachdem ich das S5-Programm nun eigentlich fast komplett analysiert habe, habe ich auch herausgefunden, was an welcher Stelle im DB stehen muss, um es an die richtige Station zu senden, bzw. was an welcher Stelle im Empfangs-DB liegt.
Jedoch sind zwei Fragen offen geblieben:
1. Laut diesem S5-Programm werden ausschließlich Zustände der einzelnen Aggregate in Form von HEX-Zahlen sowie Steuerbits und Sollwerte übertragen. Was gänzlich fehlt sind Analogwerte. Diese sind jedoch definitiv in allen Anlagenteilen vorhanden, wo sie relevant sind. Deshalb nun die Frage: Wie war es denn früher üblich, Analogwerte per Bus zu übertragen ?
Ich habe für den Master und meinen Slave fast das komplette Programm zur Verfügung. Nur eine OBs fehlen mir jeweils.
Im Großen und Ganzen läuft es so ab, dass alle Daten in 2 verschiedenen DBs im Slave gesammelt werden und zyklisch an den Master gesendet werden - außer Analogwerte. Die sind offensichtlich einfach so im Master vorhanden und lassen sich in keinster Weise zurückverfolgen. Auch im Slave gibts keinerlei Hinweise auf die Analogwerte.
2. Die Daten, die vom Slave zum Master gesendet werden, sind insgesamt so viel, dass man diese in mehreren Zyklen senden muss. Ich wollte diese Daten nun genau so senden. Ein Zähler zählt bei jedem Senden um eins höher und zeigt so auf das erste zu sendende Wort im DB. Die Länge ist fest vorgegeben (28 Byte) und gesendet wird 13 mal, bis alle Daten dort sind. Wie kann jedoch nun sicher stellen, dass auch die Master-CPU im korrekten Sendezyklus ist und die Daten an der richtigen Stelle im Empfangsfach ablegt ? Ich denke da so an eine Art Syncronisation, die jedoch aus beiden Programmen nicht hervorgeht. Es ist mir dabei nicht möglich, das Programm der Master-CPU zu verändern, jedoch muss es ja schon irgendwie gegangen sein. Wie war das nun also üblich ?
Zur Hardware:
- Master und Slave je CPU928B
- Kommunikationsprozessor ist jeweils CP530
Vielen Dank für Eure Unterstützung.