Profibus Ausfall -> letzte Daten vom Slave behalten

Xplosion

Level-1
Beiträge
202
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein Problem bei der Programmierung eines Profibus-Systems. (Funkübertragung)

CPU 315 als Profibus Master
Frequenzumrichter als Profibus Slave

Ich möchte bei einer Unterbrechung des Profibusses zum Slave die letzten Daten in der CPU behalten. Es klappt aber nicht so richtig.
Folgendes habe ich gemacht:

OB86:
bei DP-Ausfall wird ein Merker gesetzt

OB1:
Wenn der Merker aus ist schreibe ich die Daten in einen DB:

UN "Merker Profibusausfall"
SPBNB _pb

L EW400
T DB.....

_pb: NOP 0


Wenn ich jetzt den Profibus-Slave immer wieder aus und einstecke, dann bleiben die Daten häufig erhalten. Es passiert aber auch immer wieder, dass die Werte alle auf 0 gehen.

Könnt ihr mir sagen, warum die Werte trotzdem hin und wieder auf 0 gehen?
 
Vielleicht wenn der Profibusteilnehmer ausfällt und der OB86 aufgerufen wird, während dein OB1-Programm gerade dabei ist die Daten umzukopieren.

Vielleicht lässt sich das mit dem SFC DP_RECV anstelle des Zugriffs auf das Prozessabbild lösen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht wenn der Profibusteilnehmer ausfällt und der OB86 aufgerufen wird, während dein OB1-Programm gerade dabei ist die Daten umzukopieren.

Vielleicht lässt sich das mit dem SFC DP_RECV anstelle des Zugriffs auf das Prozessabbild lösen.


Das hab ich mir auch schon gedacht. Da ich aber ca. 10 EW´s übertrage, müsste doch nur ein Teil der Daten auf 0 gehen.

Hab auch schon folgendes probiert:


l EW...
dann Abfrage ob Merker Profibusausfall aus ist
T DB....

Und das hab ich bei jedem Wort einzeln gemacht. Bringt aber auch nichts. Es gehen trotzdem alle Wörter auf 0
 
Du kannst mal probieren und noch einen Zwischenschritt beim Umkopieren einfügen, ob das Verhalten dann immer noch auftritt.
Also von EW nach DB1, wenn kein Ausfall dann von DB1->DB2.

Oder eben konsistent mit dem SFC einlesen und dann den Rückgabewert der Funktion auswerten.
 
Wobei es durch deinen Zugriff über EW und nicht PEW eigentlich schon in einem OB1-Zyklus konsistent sein sollte.
Zumindest sollte nach meinem Verständnis wenn der Teilnehmer mitten im OB1-Zyklus ausfällt, das Prozessabbild noch vom letzten Start vorhanden sein.
Seltsam, so einen Anwendungsfall hatte ich auch noch nicht.
 
Wenn ein DP-Slave ausfällt, dann werden im DP-Master alle Eingangsdaten des DP-Slave auf 0 gesetzt. Du brauchst nicht in Alarm-OBs ein "ausgefallen"-Bit setzen (das funktioniert sowieso nicht 100% zuverlässig). Du brauchst nur im OB1 prüfen, ob alle Eingangs-Bits = 0 sind und die Eingangsdaten nur dann zur Weiterverwendung kopieren, wenn das nicht zutrifft (also mindestens ein Bit = 1 ist).

Falls unüblicherweise auch im normalen Betrieb alle Eingangs-Bits vom FU auf 0 gehen können, dann könntest Du z.B. eine freie Eingangsklemme des FU fest mit 24V verbinden und den Klemmenstatus in ein PZW legen, oder irgendeinen anderen Wert der garantiert nicht 0 ist. Nachtrag: Und zur Vereinfachung nur ein Bit dieses PZW auswerten.

PS: DP_RECV gibt es nur bei Profibus-CP. Vermutlich ist der SFC14 DPRD_DAT gemeint.

Harald
 
Zuletzt bearbeitet:
Zurück
Oben