DPSYC_FR: DP-Slaves synchronisieren / Eingänge einfrieren (S7-300, S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
DPSYC_FR: DP-Slaves synchronisieren / Eingänge einfrieren

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:

  • = 1: UNFREEZE wird ausgeführt

  • = 0: keine Bedeutung

Bit 3:

  • = 1: FREEZE wird ausgeführt

  • = 0: keine Bedeutung

Bit 4:

  • = 1: UNSYNC wird ausgeführt

  • = 0: keine Bedeutung

Bit 5:

  • = 1: SYNC wird ausgeführt

  • = 0: keine Bedeutung

Bit 6: reserviert (Wert 0)

Bit 7: reserviert (Wert 0)

Mögliche Werte:

  • bei genau einer Kennung pro Auftrag:

    • B#16#04 (UNFREEZE)

    • B#16#08 (FREEZE)

    • B#16#10 (UNSYNC)

    • B#16#20 (SYNC)

  • bei mehreren Kennungen pro Auftrag:

    • B#16#14 (UNSYNC, UNFREEZE)

    • B#16#18 (UNSYNC, FREEZE)

    • B#16#24 (SYNC, UNFREEZE)

    • B#16#28 (SYNC, FREEZE)

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
(W#16#...)

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