Beschreibung
Mit der Anweisung können Sie eine oder mehrere Gruppen von DP-Slaves synchronisieren.
Dazu schicken Sie eines der folgenden Steuerkommandos oder eine Kombination davon an die betroffenen Gruppen:
-
SYNC (gleichzeitiges Ausgeben und Einfrieren von Ausgangszuständen bei den DP-Slaves)
-
UNSYNC (hebt das Steuerkommando SYNC wieder auf)
-
FREEZE (Einfrieren von Eingangszuständen bei den DP-Slaves und Einlesen der eingefrorenen Eingänge)
-
UNFREEZE (hebt das Steuerkommando FREEZE wieder auf)
Bevor Sie die oben genannten Steuerkommandos abschicken, müssen Sie die DP-Slaves per Projektierung in Gruppen eingeteilt haben. Sie müssen wissen, welcher DP-Slave welcher Gruppe mit welcher Nummer zugeordnet ist und welche Eigenschaften hinsichtlich SYNC-/FREEZE-Verhalten die einzelnen Gruppen haben.
|
Hinweis Beachten Sie, dass die Steuerkommandos SYNC und FREEZE auch bei einem Neustart/Kaltstart ihre Gültigkeit behalten. Beachten Sie außerdem, dass zu einem Zeitpunkt nur ein SYNC-/UNSYNC-Auftrag bzw. nur ein FREEZE/UNFREEZE-Auftrag angestoßen sein darf. |
Arbeitsweise
"DPSYC_FR" ist eine asynchron arbeitende Anweisung, d. h. die Bearbeitung erstreckt sich über mehrere Aufrufe. Sie starten den Auftrag, indem Sie "DPSYC_FR" mit REQ=1 aufrufen.
Über die Ausgangsparameter RET_VAL und BUSY wird der Zustand des Auftrags angezeigt.
Siehe auch: Unterschied zwischen synchron und asynchron arbeitenden Anweisungen.
Identifikation eines Auftrags
Falls Sie einen SYNC-/FREEZE-Auftrag angestoßen haben und Sie "DPSYC_FR" erneut aufrufen, bevor dieser beendet wurde, dann hängt das weitere Verhalten der Anweisung entscheidend davon ab, ob es sich beim erneuten Aufruf um denselben Auftrag handelt. Stimmen die Eingangsparameter LADDR, GROUP und MODE überein, so gilt der Aufruf als Folgeaufruf.
Ausgänge von DP-Baugruppen beschreiben
Das Beschreiben der Ausgänge von DP-Baugruppen wird angestoßen durch
-
Transfer-Befehle auf DP-Peripherie,
-
das Schreiben des Prozessabbilds der Ausgänge in die Baugruppen (durch das Betriebssystem am Ende des OB 1 oder durch Aufruf der Anweisung "UPDAT_PO"),
-
Aufruf der Anweisung "DPWR_DAT".
Im Normalfall überträgt der DP-Master die Ausgangsdaten zyklisch (im Zyklus des Busses PROFIBUS DP) an die Ausgänge der DP-Slaves.
Wenn Sie bestimmte Ausgangsdaten, die über mehrere Slaves verteilt sein können, exakt gleichzeitig auf die Ausgänge an den Prozess ausgeben wollen, schicken Sie mit Hilfe der Anweisung "DPSYC_FR" das Steuerkommando SYNC an den zugehörigen DP-Master.
Was bewirkt SYNC?
Mit dem Steuerkommando SYNC werden die DP-Slaves der genannten Gruppen in den Sync-Modus geschaltet, d. h. der DP-Master überträgt die aktuellen Ausgangsdaten und veranlasst die betroffenen DP-Slaves, die Ausgänge einzufrieren. Bei den folgenden Ausgabetelegrammen speichern die DP-Slaves die Ausgangsdaten in einem internen Puffer; der Zustand der Ausgänge bleibt unverändert.
Nach jedem Steuerkommando SYNC legen die DP-Slaves der selektierten Gruppen die Ausgangsdaten ihres internen Puffers auf die Ausgänge an den Prozess.
Die Ausgänge werden erst dann wieder zyklisch aktualisiert, wenn Sie mit Hilfe der Anweisung "DPSYC_FR" das Steuerkommando UNSYNC absetzen.
|
Hinweis Falls sich DP-Slaves der ausgewählten Gruppe(n) zum Zeitpunkt des abgeschickten Steuerkommandos nicht am Netz befinden oder ausgefallen sind, werden diese auch nicht in den SYNC-Modus geschaltet. Es erfolgt keine Mitteilung dieses Sachverhalts über den Rückgabewert der Anweisung. |
Eingänge von DP-Baugruppen lesen
Die Eingangsdaten von DP-Baugruppen werden gelesen
-
mit Ladebefehlen auf DP-Peripherie,
-
bei der Aktualisierung des Prozessabbilds der Eingänge (durch das Betriebssystem am Anfang des OB 1 oder durch Aufruf der Anweisung "UPDAT_PI"),
-
durch Aufruf der Anweisung "DPRD_DAT".
Im Normalfall erhält der DP-Master diese Eingangsdaten zyklisch (im Zyklus des Busses PROFIBUS DP) von seinen DP-Slaves und stellt sie der CPU zur Verfügung.
Wenn Sie bestimmte Eingangsdaten, die über mehrere Slaves verteilt sein können, exakt gleichzeitig vom Prozess einlesen wollen, schicken Sie mit Hilfe der Anweisung "DPSYC_FR" das Steuerkommando FREEZE an den zugehörigen DP-Master.
Was bewirkt FREEZE?
Mit dem Steuerkommando FREEZE werden die betroffenen DP-Slaves in den Freeze-Modus geschaltet, d. h. der DP-Master veranlasst die betroffenen DP-Slaves, den aktuellen Zustand der Eingänge einzufrieren. Anschließend überträgt er die eingefrorenen Daten in den Eingangsbereich der CPU.
Nach jedem Steuerkommando FREEZE frieren die DP-Slaves den Zustand der Eingänge erneut ein.
Der DP-Master erhält erst dann wieder zyklisch den aktuellen Zustand der Eingänge, wenn Sie mit Hilfe der Anweisung "DPSYC_FR" das Steuerkommando UNFREEZE absetzen.
|
Hinweis Falls sich DP-Slaves der ausgewälten Gruppe(n) zum Zeitpunkt des abgeschickten Steuerkommandos nicht am Netz befinden oder ausgefallen sind, werden diese auch nicht in den Freeze-Modus geschaltet. Es erfolgt keine Mitteilung dieses Sachverhalts über den Rückgabewert der Anweisung. |
Datenkonsistenz
Aufgrund der asynchronen Arbeitsweise und der Unterbrechbarkeit durch höhere Prioritätsklassen sollten Sie bei Einsatz der Anweisung "DPSYC_FR" darauf achten, dass die Prozessabbilder konsistent zu den tatsächlichen Ein- und Ausgängen der Peripherie sind.
Dies ist gewährleistet, wenn Sie eine der im Folgenden genannten Konsistenzregeln beachten:
-
Definieren Sie für die "SYNC-Ausgänge" und die "FREEZE-Eingänge" geeignete Teilprozessabbilder (nur möglich bei S7-400). Rufen Sie die Anweisung "UPDAT_PO" unmittelbar vor dem jeweiligen Erstaufruf eines SYNC-Auftrags auf. Rufen Sie die Anweisung "UPDAT_PI" unmittelbar nach dem jeweiligen Letztaufruf eines FREEZE-Auftrags auf.
-
Alternativ dazu: Verwenden Sie für Ausgänge, die von einem SYNC-Auftrag betroffen sind, und für Eingänge, die von einem FREEZE-Auftrag betroffen sind, nur direkte Peripheriezugriffe. Sie dürfen bei einem laufenden SYNC-Auftrag die betroffenen Ausgänge nicht beschreiben und bei einem laufenden FREEZE-Auftrag die betroffenen Eingänge nicht einlesen.
Einsatz von DPWR_DAT und DPRD_DAT
Falls Sie die Anweisung "DPWR_DAT" einsetzen, muss diese Anweisung abgeschlossen sein, bevor Sie für die zugehörigen Ausgänge einen SYNC-Auftrag abschicken.
Falls Sie die Anweisung "DPRD_DAT" einsetzen, muss diese Anweisung abgeschlossen sein, bevor Sie für die zugehörigen Eingänge einen FREEZE-Auftrag abschicken.
Anlauf und "DPSYC_FR"
Das Absetzen der Steuerkommandos SYNC und FREEZE in den Anlauf-OBs liegt in alleiniger Verantwortung des Anwenders.
Falls die Ausgänge einer oder mehrerer Gruppen bereits beim Start des Anwenderprogramms im SYNC-Modus arbeiten sollen, müssen Sie im Anlauf diese Ausgänge initialisieren und die Anweisung "DPSYC_FR" mit dem Steuerkommando SYNC vollständig abarbeiten.
Falls die Eingänge einer oder mehrerer Gruppen bereits beim Start des Anwenderprogramms im FREEZE-Modus arbeiten sollen, müssen Sie im Anlauf für diese Eingänge die Anweisung "DPSYC_FR" mit dem Steuerkommando FREEZE vollständig abarbeiten.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "DPSYC_FR":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
REQ |
Input |
BOOL |
E, A, M, D, L |
Pegelgetriggerter Steuerparameter REQ=1: Anstoß des SYNC-/FREEZE-Auftrags |
|
LADDR |
Input |
WORD |
E, A, M, D, L oder Konstante |
Logische Adresse des DP-Masters |
|
GROUP |
Input |
BYTE |
E, A, M, D, L oder Konstante |
Gruppenauswahl Bit 0 = 1: Gruppe 1 ausgewählt Bit 1 = 1: Gruppe 2 ausgewählt : Bit 7 = 1: Gruppe 8 ausgewählt Pro Auftrag können Sie mehrere Gruppen auswählen. Der Wert B#16#0 ist nicht zugelassen. |
|
MODE |
Input |
BYTE |
E, A, M, D, L oder Konstante |
Auftragskennung (Codierung gemäß EN 50 170 Volume 2, PROFIBUS) Bit 0: reserviert (Wert 0) Bit 1: reserviert (Wert 0) Bit 2:
Bit 3:
Bit 4:
Bit 5:
Bit 6: reserviert (Wert 0) Bit 7: reserviert (Wert 0) Mögliche Werte:
|
|
RET_VAL |
Return |
INT |
E, A, M, D, L |
Tritt während der Bearbeitung der Anweisung ein Fehler auf, enthält der Rückgabewert einen Fehlercode. Sie müssen RET_VAL nach jedem Bausteindurchlauf auswerten. |
|
BUSY |
Output |
BOOL |
E, A, M, D, L |
BUSY=1: Der SYNC-/FREEZE-Auftrag ist noch nicht beendet. |
Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".
Parameter RET_VAL
|
Hinweis Falls Sie auf DPV1-Slaves zugreifen, können Fehlerinformationen dieser Slaves vom DP-Master an die Anweisung weitergereicht werden. Zur Beschreibung dieser Fehlerinformationen siehe STATUS[3], Parameter STATUS. |
|
Fehlercode |
Erläuterung |
|---|---|
|
0000 |
Der Auftrag wurde fehlerfrei durchgeführt. |
|
7000 |
Erstaufruf mit REQ=0. Der über LADDR, GROUP und MODE festgelegte Auftrag ist nicht aktiv; BUSY hat den Wert 0. |
|
7001 |
Erstaufruf mit REQ=1. Der über LADDR, GROUP und MODE festgelegte Auftrag wurde angestoßen; BUSY hat den Wert 1. |
|
7002 |
Zwischenaufruf (REQ irrelevant). Der aktivierte SYNC-/FREEZE-Auftrag läuft noch; BUSY hat den Wert 1. |
|
8090 |
Die über LADDR ausgewählte Baugruppe ist kein DP-Master. |
|
8093 |
Für die über LADDR ausgewählte Baugruppe ist diese Anweisung nicht zulässig (Projektierung oder Version des DP-Masters). |
|
8094 |
Parameter GROUP falsch |
|
8095 |
Parameter MODE falsch |
|
80B0 |
Die über GROUP ausgewählte Gruppe ist nicht projektiert. |
|
80B1 |
Die über GROUP ausgewählte Gruppe ist dieser CPU nicht zugeordnet. |
|
80B2 |
Der über MODE spezifizierte SYNC-Auftrag ist auf der über GROUP ausgewählten Gruppe nicht zulässig. |
|
80B3 |
Der über MODE spezifizierte FREEZE-Auftrag ist auf der über GROUP ausgewählten Gruppe nicht zulässig. |
|
80C2 |
Temporärer Ressourcenmangel des DP-Masters: Der DP-Master bearbeitet momentan das mögliche Maximum an Aufträgen für eine CPU. |
|
80C3 |
Dieser SYNC-/UNSYNC-Auftrag ist momentan nicht aktivierbar, da zu einem Zeitpunkt nur ein SYNC-/UNSYNC-Auftrag angestoßen sein darf. Bitte prüfen Sie Ihr Anwenderprogramm. |
|
80C4 |
Dieser FREEZE-/UNFREEZE-Auftrag ist momentan nicht aktivierbar, da zu einem Zeitpunkt nur ein FREEZE-/UNFREEZE-Auftrag angestoßen sein darf. Bitte prüfen Sie Ihr Anwenderprogramm. |
|
80C5 |
Kurzschluss unmittelbar an der DP-Schnittstelle |
|
80C6 |
Auftragsabbruch wegen Peripherieabwurf durch die CPU |
|
80C7 |
Auftragsabbruch wegen Neustart (Warmstart) oder Kaltstart des DP-Masters |
|
8xyy |
allgemeine Fehlerinformation Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL |