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. |