Einführung in die Erzeugung von PLC-Meldungen mit Anweisungen (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
Einführung in die Erzeugung von PLC-Meldungen mit Anweisungen

Anweisungen zur Erzeugung bausteinbezogener Meldungen

Sie erzeugen eine PLC-Meldung, indem Sie in Ihrem Programm eine der folgenden Anweisungen aufrufen:

Diese Anweisungen haben folgende Eigenschaften:

  • Bei "NOTIFY" und "NOTIFY_8P" führt jeder beim Aufruf erkannte Signalwechsel 0 -> 1 oder 1  > 0 zum Senden einer Meldung.

  • Auch bei "ALARM", "ALARM_8" und "ALARM_8P" führt bei inaktivem Quittierungsgetriggerten Melden jeder beim Aufruf erkannte Signalwechsel zum Senden einer Meldung.
    Falls Sie hingegen das Quittierungsgetriggerte Melden aktiviert haben, führt nicht jeder erkannte Signalwechsel zum Senden einer Meldung (genaueres siehe unten). In diesem Fall wird eine gesendete Meldung in der Meldungsanzeige nicht angezeigt.

  • Nach dem Bausteindurchlauf sind die Begleitwerte (Eingänge SD_i) vollständig erfasst und der Meldung zugeordnet (siehe "Sende- und Empfangsparameter" in Gemeinsame Parameter der Anweisungen zur S7-Kommunikation.)
    Bezüglich der Konsistenz gegenüber höherprioren Prioritätsklassen gilt für die Begleitwerte: Jeder Begleitwert SD_i ist in sich konsistent.

  • Mit den Zustandsparametern DONE, ERROR und STATUS überwachen Sie den Bearbeitungszustand des Bausteins (siehe "Zustandsparameter" in Gemeinsame Parameter der Anweisungen zur S7-Kommunikation).

    Hinweis

    Die Parameter ID und EV_ID werden nur beim Erstaufruf des Bausteins ausgewertet (die Aktualparameter oder die vordefinierten Werte aus der Instanz).

Anmeldungen von Anzeigegeräten

Voraussetzung dafür, dass die Anweisungen zur Erzeugung von PLC-Meldungen bei einem erkannten Signalwechsel eine Meldung senden, ist, dass sich mindestens ein Anzeigegerät für PLC-Meldungen angemeldet hat. Liegt keine Anmeldung vor, liefert der Parameter STATUS den Wert "1".

Signalwechselerfassung

Pro Instanz einer Meldeanweisung steht ein Meldespeicher mit 2 Speicherplätzen zur Verfügung.
Zunächst ist dieser Meldespeicher leer. Sobald die Anweisung einen Signalwechsel am Eingang SIG bzw. an einem der Eingänge SIG_1, ... SIG_8 erkennt, wird dieser in den ersten Speicherplatz eingetragen. Er bleibt so lange belegt, bis die zugehörige Meldung versendet wird.
Der nächste erkannte Signalwechsel am Eingang SIG bzw. an einem der Eingänge SIG_1, ... SIG_8 wird dann in den zweiten Speicherplatz eingetragen. Falls der erste Speicherplatz noch belegt ist und weitere Signalwechsel folgen, wird stets der zweite Speicherplatz im Meldespeicher überschrieben.
Dieser Meldungsverlust wird Ihnen über die Ausgangsparameter ERROR und STATUS (ERROR=0, STATUS=11) angezeigt. Außerdem erhalten die angemeldeten Anzeigegeräte mit der nächsten Meldung, die gesendet werden kann, darüber eine Mitteilung.
Falls der erste Speicherplatz frei wird, wird der zweite Speicherplatz in den ersten übertragen. Dadurch wird der zweite Speicherplatz wieder frei.

Quittierungsgetriggertes Melden

Um das Meldeaufkommen in Ihrer Anlage zu reduzieren, können Sie bei den Anweisungen "ALARM", "ALARM_8" und "ALARM_8P" das Verfahren des Quittierungsgetriggerten Meldens einsetzen.

Es beruht darauf, dass nach dem Erzeugen einer Kommend-Meldung (Signalwechsel von 0 nach 1) für ein Signal so lange keine weiteren Meldungen für dieses Signal erzeugt werden, bis Sie es an einem Anzeigegerät quittiert haben. Die nächste Meldung, die nach dem Quittieren auf dem Anzeigegerät angezeigt wird, ist eine Gehend-Meldung (Signalwechsel von 1 nach 0). Anschließend beginnt der Meldezyklus mit einer Kommend-Meldung (Signalwechsel von 0 nach 1), die quittiert werden muss, erneut. Auf diese Weise können Sie über das Anzeigegerät das Melden von Signalwechseln (bis auf die Gehend-Meldung) kontrollieren.

Das Meldeverfahren (Quittierungsgetriggertes Melden aktiv oder inaktiv) für die Anweisungen "ALARM", "ALARM_8" und "ALARM_8P" legen Sie bei der Projektierung CPU-weit fest.

Damit die Meldungsauswertung innerhalb Ihrer Anlage einheitlich ist, sollten Sie darauf achten, dass beim Einsatz des Quittierungsgetriggerten Meldens alle Anzeigegeräte dieses Verfahren beherrschen.

Hinweis

(Zum Einsatz von Anzeigegeräten, die das Quittierungsgetriggerte Melden nicht beherrschen.)

Falls Sie in Ihrer CPU das Quittierungsgetriggerte Melden aktiviert haben, schickt die CPU die Meldungen nur an diejenigen Anzeigegeräte, die dieses Meldeverfahren beherrschen. Falls keine Anzeigegeräte das Quittierungsgetriggerte Melden beherrschen, sendet die CPU also auch keine Meldungen. Dies wird Ihnen mit ERROR=1 und STATUS=1 einmalig angezeigt.

Meldungsquittierung bei den Anweisungen "ALARM", "ALARM_8" und "ALARM_8P"

Es wird das zentrale Quittierkonzept eingesetzt. D. h., wenn Sie an einem Anzeigegerät eine Meldung quittiert haben, wird diese Quittierinformation zunächst an die meldungserzeugende CPU geschickt. Von dort wird die Quittierinformation an alle dafür angemeldeten Teilnehmer verteilt.

Sie quittieren stets ein Signal und nicht eine einzelne Meldung. Falls z. B. mehrere steigende Flanken eines Signals gemeldet wurden und Sie das gekommene Ereignis quittieren, so gelten alle vorangegangenen gekommenen Ereignisse mit gleicher Meldungsnummer als quittiert.

Quittierungsanzeige

Die Anweisungen "NOTIFY" und "NOTIFY_8P" besitzen keine Quittierungsanzeige. Bei "ALARM" können Sie den Quittierungszustand den Ausgangsparametern ACK_UP und ACK_DN, bei "ALARM_8P" und "ALARM_8" dem Ausgangsparameter ACK_STATE entnehmen. Diese Ausgänge werden zum Zeitpunkt des Bausteinaufrufs aktualisiert, falls der Steuerparameter EN_R den Wert "1" hat.

Meldungen per Anweisung oder Anzeigegerät sperren und freigeben

Es kann sinnvoll sein, Meldungen zu unterdrücken, z. B. bei Umbaumaßnahmen in Ihrer Anlage. Sie haben daher die Möglichkeit, Meldungen von einem Anzeigegerät oder von Ihrem Programm aus zu sperren und wieder freizugeben. Die Sperre / Freigabe gilt für alle Teilnehmer, die sich für die zugehörige Meldung angemeldet haben. Sie bleibt so lange bestehen, bis Sie die zugehörige Meldung wieder freigeben.

Falls Sie Meldungen gesperrt haben, so wird Ihnen das über die Ausgangsparameter ERROR und STATUS mitgeteilt (ERROR = 1, STATUS = 21).

Arbeitsspeicherbedarf der Anweisungen zur Erzeugung bausteinbezogener Meldungen

Die Anweisungen zur Erzeugung von PLC-Meldungen benötigen zu ihrer reibungslosen Funktion einen i. A. begleitwertabhängigen Kommunikationsdatenpuffer im Arbeitsspeicher der CPU (Codebereich). Die Größe des belegten Speichers entnehmen Sie der folgenden Tabelle.

Anweisung

Benötigter Speicherbedarf im Arbeitsspeicher der CPU in Byte

NOTIFY

200 + 2 * Länge der beim Erstaufruf an SD_1,...SD_10 angegebenen Begleitwerte

NOTIFY_8P

200 + 2 * Länge der beim Erstaufruf an SD_1,...SD_10 angegebenen Begleitwerte

ALARM

200 + 2 * Länge der beim Erstaufruf an SD_1,...SD_10 angegebenen Begleitwerte

ALARM_8

100

ALARM_8P

200 + 2 * Länge der beim Erstaufruf an SD_1,...SD_10 angegebenen Begleitwerte

AR_SEND

54

Anzahl übertragbarer Daten

Die Anzahl der über die Begleitwerte SD_i der Anweisungen "NOTIFY", "NOTIFY_8P", "ALARM" und "ALARM_8P" übertragbaren Daten darf eine maximale Länge nicht überschreiten. Diese maximale Datenlänge berechnet sich wie folgt:

maxleng =

min (pdu_lokal, pdu_remote) - diff - 4 * Anzahl benutzter SD_i-Parameter

Dabei ist:

  • min (pdu_lokal, pdu_remote) der kleinste Wert der Zahlen pdu_lokal und pdu_remote

  • pdu_lokal die maximale Länge der Datenblöcke der eigenen CPU (siehe Technische Daten Ihrer CPU)

  • pdu_remote die maximale Länge der Datenblöcke der Anzeigegeräte

  • diff = 48, falls das Quittierungsgetriggerte Melden aktiv ist, und 44, falls es inaktiv ist

Beispiel

Eine CPU 414-2 sende Meldungen über Industrial Ethernet an HMI. Das Quittierungsgetriggerte Melden sei inaktiv.

Es werden die Begleitwerte SD_1, SD_2 und SD_3 verwendet.

pdu_lokal = 480 Byte, pdu_remote = 480 Byte,

Anzahl benutzter SD_i-Parameter: 3

Damit gilt:

maxleng = min (480, 480) - 44 - 4 * 3 = 480 - 44 - 12 = 424

Die maximal übertragbare Datenlänge beträgt pro Anweisung also 424 Byte.