Profibus-DP-Zyklus mit OB1-Zyklus synchronisieren?

Supervisor

Level-1
Beiträge
93
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS-Experten,
ich hab mal wieder ein RIESEN Problem!

Folgendes:
Projektiert ist ein Profibus-DP-Netz mit einer S7-300 SPS (CPU 313C-2 DP) als Master. Angeschlossen als Slave ist noch ein spezielles Interface, welches Profibus-Daten auf ein CAN-BUS-System überträgt. Es existieren also im Profibus-DP-Netz nur die SPS als Master und das Slave-Gerät.
Der Slave hat in der SPS einen 80 Byte breiten E/A-Bereich. Durch einen speziell erstellten Baustein, welcher im OB1 aufgerufen wird, werden Daten in den Ausgangsbereich des Slaves geschrieben. Pro Zyklus des OB1 werden immer 13 Byte in den Ausgangsbereich des Slaves geschrieben, bis alle 80 Byte bzw. 78 Byte (die zwei restlichen Byte haben immer den Wert 0x00) beschrieben worden sind. Das heißt also, nach 6 Zyklen des OB1 sind alle 80 Byte des Ausgangsbereiches des Slaves 1 mal beschrieben worden.
Nun folgendes Problem:
Wenn Daten, wie oben beschrieben, ausgegeben wurden und nun sich die Daten ändern, kommt es öfters mal vor, dass sich unter den neuen Daten ein oder mehrere Byte der vorherghenden Daten eingeschlichen haben.

Beispiel:

6 Durchläufe von OB1
Byte-Nummer: 0...79
1. Daten (HEX, Byte 0 bis 12): F1 F2 F3 ...
2. Daten (HEX, Byte 13 bis 25): F1 F2 F3 ...
...
6. Daten (HEX, Byte 65 bis 77): F1 F2 F3 ...

Nun haben sich Daten geändert (C1, C2, etc.) und werden wieder nacheinander in die Ausgangsbytes geschrieben, bis der gesamte Bereich aufgefüllt ist. Hierbei schleichen sich nun öfters Datenbytes (F1, F2, etc.) der vorhergehenden Zyklen ein.

nachfolgende Durchläufe von OB1
Byte-Nummer: 0...79
7. Daten (HEX, Byte 0 bis 12): C1 C2 C3 ...
8. Daten (HEX, Byte 13 bis 25): F1 F2 F3 C1 C2 C3 ...
...
12. Daten (HEX, Byte 65 bis 77): C1 C2 C3 ...

Das beschriebene Problem tritt auch auf, wenn die SPS von STOP in START geschaltet wird. Hier kommt es ebenfalls öfters vor, dass sich Daten aus vorhergehenden Zyklen unter die neuen Daten eingeschlichen haben.
Kann es vielleicht daran liegen, dass Daten, die während der Bearbeitung von OB1 in den Ausgangsbereich vom Profibus gechrieben werden, schon teilweise zu den Slaves übertragen werden?
Gibt es die Möglichkeit, den Zyklus von OB1 mit dem Profibus-Zyklus zu synchronisieren und ist dann damit das oben beschriebene Problem behoben?

Ich bin für jede Hilfe dankbar!
 
da pro zyklus nur 13 byte geschrieben werden, ist es eigentlich logisch, das auch alte daten im a-bereich liegen.

schreibe die daten in einen db. wenn alle daten aktualisiert sind (also alle 6 zyklen) überträgst du diesen bereich mit der sfc20 in den a-bereich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Volker,

danke für die Antwort, aber so logisch ist das für mich aber nicht.
Ich beschreibe in den ersten 6 Zyklen den kompletten Ausgangsbereich und dann wird in den weiteren Zyklen der selbe Bereich mit neuen Daten überschrieben. Wo kommen dann bitte schön die alten Daten her? Außerdem ist dieses Phänomen nicht ständig. Es tritt sporadisch auf.
Überseh ich hier vieleicht was?

PS: Aber das mit dem DB und SFC20 is ne gute Idee. Das werd ich mal probieren. Danke!

Für weitere Hilfe bin ich sehr dankbar!
 
Zurück
Oben