Beschreibung ASI_CTRL (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
Beschreibung ASI_CTRL

Beschreibung

Mit der Anweisung "ASI_CTRL" kann das Verhalten des AS-i-Masters über das Anwenderprogramm der PLC gesteuert werden. Die Anweisung bearbeitet das Kommandoprotokoll selbstständig und ermöglicht auch die Parametrierungen an SIMATIC AS-i-Mastern sowie das Auslesen von Informationsdaten. Die Möglichkeiten und die Arbeitsweise der Kommandoschnittstelle sind im Handbuch des AS-i-Masters beschrieben.

Unterstützt werden sowohl zentral steckende AS-i-Master als auch dezentrale AS-i-Master über PROFIBUS DP. Auch Kombinationen mit PROFINET IO (Beispiel: IE/PB Link PN IO) sind möglich.

Die folgende Abbildung zeigt schematisch die Funktionalität der Anweisung "ASI_CTRL":

Start der Bearbeitung am Parameter REQ.

Das Programm setzt das gewünschte Kommando über die Anweisung "RDREC" an den AS-i-Master ab.

Der AS-i-Master bearbeitet das Kommando.

Der aktuelle Status des AS-i-Master wird im Eingangsbereich der Binärdaten (logische Basisadresse) abgelegt.

Die Anweisung "ASI_CTRL" fragt zyklisch die 4 Statusbits ab und wertet diese aus.

Ist die Kommandobearbeitung beendet, wird der Kommandoauftrag über "RDREC" abgeschlossen. Im Datenfeld von "RDREC" befinden sich je nach Kommando die Antwortdaten des Kommandos oder weitere Statusinformationen.

Abhängigkeiten zwischen Anweisungs-Versionen

Die Version V1.3 der Anweisung "ASI_CTRL" erfordert die Version V1.1 der Anweisung "WRREC".

Die Version V1.2 der Anweisung "ASI_CTRL" erfordert die Version V1.1 der Anweisung "WRREC".

Unterschiede im Kommandoaufruf bei IE/ AS-i Link und CPs bzw. DP/AS-i Links

Für den Kommandoaustausch einer Steuerung mit einem AS-i Master gibt es wesentliche Unterschiede in der Vorgehensweise.

  • Beim IE/AS-i Link (PROFINET) wird die Datensatzschnittstelle verwendet. Die verschiedenen Kommandos werden entweder durch "Datensatz schreiben" (Anweisung "WRREC") oder durch "Datensatz lesen" ("Anweisung "RDREC") von verschiedenen Datensatznummern aufgerufen.

  • S7-300-CPs und DP/AS-i Links (PROFIBUS) verwenden die Kommandoschnittstelle. Alle Kommandos werden durch ein paarweises "Datensatz schreiben" ("Anweisung "WRREC") und "Datensatz lesen" ("Anweisung "RDREC") von Datensatznummer 2 aufgerufen. Der Typ des Kommandos wird durch den Dateninhalt beim Schreibauftrag definiert.

Änderungen gegenüber der Anweisung "ASi_3422"

Die Anweisung "ASI_CTRL" ist eine Überarbeitung der Anweisung "ASi_3422" und weist Verbesserungen hinsichtlich Funktionalität und Kompatibilität auf. Im Detail wurden folgende Änderungen durchgeführt:

  • Zum Schreiben und Lesen von Diagnosedatensätze wurden die Anweisungen "WR_REC" und "RD_REC" durch die Anweisungen "RDREC" und "WRREC" ersetzt. Sie sind in der Funktion identisch, unterstützen jedoch die Datenübertragung über PROFINET IO.

  • Der Bausteintyp der Anweisung wurde von einer Funktion (FC) in einen Funktionsbaustein (FB) gewandelt. "ASI_CTRL" verfügt über einen Instanzdatenbaustein und ist multiinstanzfähig.

  • Die Benennung der Formalparameter von "ASI_CTRL" ist konform zu den SIMATIC Systembausteinen. Der Eingangsparameter STARTUP entfällt. Die Definition des Parameters STATUS wurde angelehnt an die Anweisungen "RDREC" und "WRREC". Zusätzlich wurden die Statuskennungen für den Parameter DONE und den neu eingeführten Parameter BUSY angepasst.

Arbeitsweise der Anweisung "ASI_CTRL"

Die Anweisung "ASI_CTRL" ist ein asynchron arbeitender Funktionsbaustein, das bedeutet die Bearbeitung erstreckt sich über mehrere Aufrufe.

  • Gestartet wird ein Auftrag mit REQ = TRUE.

  • Über die Ausgangsparameter BUSY und die mittleren zwei Bytes des Ausgangsparameters STATUS wird der Zustand des Auftrags angezeigt.

  • Während einer Auftragsbearbeitung ist der Parameter BUSY gesetzt. Bei Erstaufruf enthält STATUS dabei den Wert 00700100H. Bei allen Folgeaufrufen, welche zu diesem Auftrag gehören, den Wert 00700200H. Mit Abschluss des Auftrages wird das Ergebnis an den Parametern DONE bzw. ERROR ausgegeben.

    • Ist kein Fehler aufgetreten, wird DONE gesetzt. Bei Aufträgen mit Antwortdaten vom AS-i-Master werden diese im angegebenen Empfangspuffer zur Verfügung gestellt. In diesem Fall wird im Parameter STATUS zusätzlich die Menge der gelieferten Daten in Bytes angezeigt. Bei Aufträgen ohne Antwortdaten wird in STATUS der Wert 00000000H eingetragen.

    • Tritt während der Auftragsbearbeitung ein Fehler auf, wird ERROR gesetzt. In diesem Fall ist der Inhalt des Empfangspuffers ungültig. Zur näheren Beschreibung des aufgetretenen Fehlers wird im Parameter STATUS ein Fehlercode eingetragen.

Anzahl Kommandoaufrufe

Wenn Sie die Anweisung "ASI_CTRL" zur Kommandobeauftragung nutzen, dürfen Sie nicht gleichzeitig weitere Kommandos über "RDREC" und "WRREC" an denselben AS-i-Master absetzen. Dies gilt auch für Mehrfachaufrufe der Anweisung an denselben AS-i-Master.

Die Anweisung "ASI_CTRL" ist nicht unterbrechbar ablauffähig. Aufrufe dürfen daher nicht in Programmablaufebenen programmiert werden, die sich gegenseitig unterbrechen (z.B. durch Aufruf in OB 1 und in OB 35).

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "ASI_CTRL":

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

REQ

Input

BOOL

E, A, M, D, L

Mit REQ = TRUE wird ein neuer Auftrag gestartet, falls nicht bereits ein Auftrag in Bearbeitung ist. Es findet keine Flankenauswertung statt.

LADDR

Input

WORD

E, A, M, D, L oder Konstante

Anfangsadresse des AS-i-Masters im S7−Adressraum (logische Basisadresse). Die Anfangsadresse wird beim Projektieren des Masters in der Hardware-Konfiguration festgelegt.

SD

Input

ANY

E, A, M, D, L

Sendepuffer

Der Parameter verweist auf einen Speicherbereich, in dem das Kommando zu spezifizieren ist (siehe "ASi-Kommandos").

Beispiel: P#DB101.DBX 0.0 BYTE 223

RD

Input

ANY

E, A, M, D, L

Empfangspuffer

Dieser Puffer ist nur bei Kommandos relevant, die Antwortdaten liefern. Der Parameter verweist auf einen Speicherbereich, in dem eine Kommandoantwort abgelegt wird (siehe "ASi-Kommandos").

Beispiel: P#DB102.DBX 224.0 BYTE 221

DONE

Output

BOOL

A, M, D, L

DONE = TRUE: Auftrag ohne Fehler beendet.

BUSY

Output

BOOL

A, M, D, L

BUSY = TRUE: Auftrag in Bearbeitung.

ERROR

Output

BOOL

A, M, D, L

ERROR = TRUE: Auftrag mit Fehler abgebrochen.

STATUS

Output

DWORD

M, D

Auftragsstatus / Fehlercode

Siehe Beschreibung "Parameter STATUS".

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".

Hinweis

Parameter LADDR, SD und RD

Die Parameter LADDR, SD und RD dürfen während einer Auftragsbearbeitung in keinem Bausteindurchlauf verändert werden, sondern müssen konstant bleiben.

Parameter STATUS

Die folgende Tabelle enthält die möglichen Anzeigen von STATUS in Abhängigkeit von DONE und ERROR.

DONE

BUSY

ERROR

STATUS

Bedeutung

0

0

0

00700000H

Erstaufruf mit REQ = FALSE; keine Auftrag aktiv.

0

1

0

00700100H

Erstaufruf mit REQ = TRUE; Auftrag angestoßen.

0

1

0

00700200H

Folgeaufruf (REQ irrelevant); Auftrag wird derzeit noch bearbeitet.

1

0

0

00000000H

Auftrag ohne Fehler abgeschlossen. Keine Antwortdaten.

1

0

0

0000xx00H

Auftrag ohne Fehler abgeschlossen. Anzahl xx-Bytes Antwortdaten.

0

0

1

C0818400H

Datentyp des Formaloperanden RD unzulässig.

0

0

1

C0818500H

Kommunikationsfehler mit AS-i-Master (falsche Adresse am Parameter LADDR projektiert).

0

0

1

C0838100H

Falsche AS-i-Slave-Adresse.

0

0

1

C0838200H

Der AS-i-Slave ist nicht aktiviert (nicht in LAS).

0

0

1

C0838300H

Fehler am AS−Interface (der Parameter SD ist eventuell zu klein eingestellt).

0

0

1

C0838400H

Das Kommando ist im aktuellen Zustand des AS-i-Masters nicht zulässig.

0

0

1

C0838500H

Ein AS-i-Slave mit Adresse "0" existiert.

0

0

1

C0838600H

Der AS-i-Slave hat unzulässige Konfigurationsdaten (E/A bzw. ID−Codes).

0

0

1

C083A100H

Der angesprochene AS-i-Slave wurde am AS−Interface nicht gefunden.

0

0

1

C083A200H

Ein AS-i-Slave mit Adresse "0" existiert.

0

0

1

C083A300H

Ein AS-i-Slave mit der neuen Adresse ist bereits am AS−Interface vorhanden.

0

0

1

C083A400H

Die AS-i-Slave-Adresse lässt sich nicht löschen.

0

0

1

C083A500H

Die AS-i-Slave-Adresse lässt sich nicht setzen.

0

0

1

C083A600H

Die AS-i-Slave-Adresse lässt sich nicht permanent speichern.

0

0

1

C083A700H

Fehler beim Lesen des Extended ID1−Codes.

0

0

1

C083A800H

Die Zieladresse ist nicht plausibel (z. B. wird eine B-Slave-Adresse für einen Standard−Slave verwendet).

0

0

1

C083B100H

Es ist ein Längenfehler beim Stringtransfer aufgetreten.

0

0

1

C083B200H

Es ist ein Protokollfehler beim Stringtransfer aufgetreten.

0

0

1

C083F800H

Die Auftragsnummer oder der Auftragsparameter sind unbekannt.

0

0

1

C083F900H

Der AS-i-Master hat einen EEPROM-Fehler festgestellt.