Beschreibung
Die Anweisung "ASi_3422" wird zur Verwendung der Betriebsart "Erweiterter Betrieb" bei dem CP 342-2 benötigt. Der erweiterte Betrieb ermöglicht die vollständige Steuerung des Masterverhaltens über das Anwenderprogramm. Der Zugriff auf die Ein- und Ausgänge erfolgt nach wie vor wie im Standardbetrieb des CP 342-2.
Kommandoaufrufe an den CP342-2 erfolgen aus dem Anwenderprogramm über die Anweisung. Hierfür spezifizieren Sie in einem Sendepuffer einen Kommandoaufruf und starten den Auftrag.
Die Anweisung "ASi_3422" übergibt den Kommandoaufruf an den CP342-2 weiter. Mit Abschluss des Auftrags wird der Auftragsstatus übergeben und mögliche Antwortdaten in einem Empfangspuffer zur Verfügung gestellt.
Aufruf
Die Anweisung muss für jeden vorhandenen CP342-2 zyklisch aufgerufen werden. Zu einem Zeitpunkt kann je CP342-2 immer nur ein Auftrag bearbeitet werden. Ein laufender Auftrag ist nicht unterbrechbar und wird von der Anweisung zeitlich nicht überwacht. Die Anweisung "ASi_3422" 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).
Gestalten Sie im Anwenderprogramm die Kommandobearbeitung wie folgt:
-
Bei Neustart des S7−Anwenderprogrammes rufen Sie "ASi_3422" einmalig mit dem Parameterwert STARTUP = TRUE auf.
-
Im Anwenderprogramm spezifizieren Sie in einem Sendepuffer den Kommandoaufruf. Diesen Sendepuffer übergeben Sie mit dem Aufrufparameter SEND.
Weitere Informationen zu der Kommandoschnittstelle des CPs und den ASi-Slave-Kommandos finden Sie in der Hardwaredokumentation des Kommunikationsprozessors.
-
Je nach Kommandotyp benötigen Sie einen Antwortpuffer. Diesen Antwortpuffer übergeben Sie mit dem Aufrufparameter RECV. Für Statusinformationen wird der Antwortpuffer bei dieser Schnittstelle nicht benötigt.
-
Aktivieren Sie den Auftrag über den Parameter ACT=1.
-
Anschließend fragen Sie die Parameter DONE, ERROR und STATUS ab.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "ASi_3422":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
ACT |
Input |
BOOL |
E, A, M, D, L |
Die Kommandobearbeitung durch die Funktion erfolgt pegelgetriggert, d.h., solange ACT = 1 ist, wird eine Kommandobearbeitung gestartet, falls nicht bereits ein Aufruf in Bearbeitung ist. |
|
STARTUP |
Input |
BOOL |
E, A, M, D, L |
Ein CPU-Anlauf wird der Anweisung durch STARTUP = 1 mitgeteilt. Nach dem ersten Durchlauf der Funktion muss STARTUP vom Anwender rückgesetzt werden. |
|
LADDR |
Input |
WORD |
E, A, M, D, L oder Konstante |
Baugruppen-Anfangsadresse Die Baugruppen-Anfangsadresse ist gemäß den Angaben über die steckplatzorientierte Adressvergabe bei Signalbaugruppen zu ermitteln. |
|
SEND |
Input |
ANY |
E, A, M, D, L |
Sendepuffer Der Parameter verweist auf einen Speicherbereich, in dem das Kommando vom Anwender zu spezifizieren ist. z.B.: P#DB20.DBX 20.0 Byte 10. |
|
RECV |
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. Die Länge des hier parametrierten Datenbereiches ist irrelevant. z.B.: P#DB30.DBX 20.0 Byte 1 |
|
DONE |
Output |
BOOL |
A, M, D, L |
Mit DONE = 1 wird ‘Auftrag fertig ohne Fehler’ signalisiert. |
|
ERROR |
Output |
BOOL |
A, M, D, L |
Mit ERROR = 1 wird 'Auftrag fertig mit Fehler' signalisiert. |
|
STATUS |
InOut |
DWORD |
M, D |
1. Wort: Auftragsstatus / Fehlercode (siehe nachfolgende Tabelle); Bei ‘Auftrag fertig mit Fehler’ wird zur näheren Fehlerbeschreibung ein Fehlercode generiert. 2. Wort: Wird von der Anweisung für interne Zwecke benötigt und darf nicht verändert werden. Für Anweisungs−Aufrufe an unterschiedlichen logischen Adressen (LADDR) müssen unterschiedliche Doppelworte für den Parameter STATUS vergeben werden! |
Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".
Parameter LADDR
Die Anfangsadresse dieses Adressbereiches ist durch den Steckplatz des CP 342-2 bestimmt.
Der CP 342-2 belegt 16 Eingangsbyte und 16 Ausgangsbyte im E/A-Adressraum des S7-Automatisierungsgerätes (Analogbereich des AS). Von den 16 Byte Adressbereich des CP 342-2 werden 31 x 4 Bit für die AS-i-Slave-Daten belegt. Die restlichen 4 Bit sind für spätere Anwendungen reserviert.
Parameter DONE, ERROR und STATUS
Tritt während der Bearbeitung der Funktion ein Fehler auf, dann steht zusätzlich zu den o.g. Informationen in ERROR und STATUS im BIE-Bit eine "0". Die Abfrage des BIE-Bits erfolgt unterschiedlich bei KOP- und AWL Anwenderprogrammen:
-
KOP: Abfrage über Ausgangsparameter ENO
-
AWL: Direktabfrage des BIE-Bits
Die folgende Tabelle enthält die möglichen Anzeigen im 1. Wort von STATUS in Abhängigkeit von DONE und ERROR.
|
DONE |
ERROR |
STATUS |
Bedeutung |
|---|---|---|---|
|
0 |
0 |
8181 |
Auftrag läuft. |
|
1 |
0 |
0000 |
Auftrag fertig ohne Fehler. |
|
0 |
1 |
8090 |
Adresse am Parameter LADDR ungültig. |
|
0 |
1 |
80A0 |
Negative Quittung beim Lesen von Baugruppe. |
|
0 |
1 |
80A1 |
Negative Quittung beim Schreiben zur Baugruppe. |
|
0 |
1 |
80B0 |
Baugruppe kennt den Datensatz nicht. |
|
0 |
1 |
80B1 |
Angegebene Datensatzlänge ist falsch. |
|
0 |
1 |
80C0 |
Datensatz kann nicht gelesen werden. |
|
0 |
1 |
80C1 |
Der angegebene Datensatz ist gerade in Bearbeitung. |
|
0 |
1 |
80C2 |
Es liegt ein Auftragstau vor. |
|
0 |
1 |
80C3 |
Betriebsmittel (Speicher) belegt. |
|
0 |
1 |
80C4 |
Kommunikationsfehler |
|
0 |
1 |
8182 |
Bedeutung: Kennung nach Neustart mit STARTUP=TRUE (kein Fehler). |
|
0 |
1 |
8184 |
Datentyp des Formaloperanden RECV unzulässig. |
|
0 |
1 |
8381 |
Slave-Adresse falsch |
|
0 |
1 |
8382 |
Slave ist nicht aktiviert (nicht in LAS). |
|
0 |
1 |
8383 |
Fehler am AS-Interface |
|
0 |
1 |
8384 |
Kommando (im Zustand des CPs) nicht zulässig. |
|
0 |
1 |
8385 |
Slave 0 existiert. |
|
0 |
1 |
83A1 |
Slave mit zu ändernder Adresse nicht an AS-Interface gefunden. |
|
0 |
1 |
83A2 |
Slave 0 vorhanden. |
|
0 |
1 |
83A3 |
Slave mit neuer Adresse bereits am AS-Interface vorhanden. |
|
0 |
1 |
83A4 |
Slave-Adresse lässt sich nicht löschen. |
|
0 |
1 |
83A5 |
Slave-Adresse lässt sich nicht setzen. |
|
0 |
1 |
83A6 |
Slave-Adresse lässt sich nicht permanent speichern. |
|
0 |
1 |
83F8 |
Auftragsnummer unbekannt. |
|
0 |
1 |
83F9 |
EEPROM-Fehler |
|
0 |
1 |
8F22 |
Bereichslängenfehler beim Lesen eines Parameters. |
|
8F23 |
Bereichslängenfehler beim Schreiben eines Parameters. Dieser Fehlercode zeigt an, dass sich ein Parameter vollständig oder teilweise außerhalb des Operandenbereichs befindet oder die Länge eines Bitfelds bei einem ANY-Parameter nicht durch 8 teilbar ist. |
||
|
0 |
1 |
8F24 |
Bereichsfehler beim Lesen eines Parameters. |
|
8F25 |
Bereichsfehler beim Schreiben eines Parameters. Dieser Fehlercode zeigt an, dass sich ein Parameter in einem Bereich befindet, der für eine Systemfunktion unzulässig ist. |
||
|
0 |
1 |
8F28 |
Ausrichtungsfehler beim Lesen eines Parameters. |
|
8F29 |
Ausrichtungsfehler beim Schreiben eines Parameters. Dieser Fehlercode zeigt an, dass der Verweis auf einen Parameter ein Operand ist, dessen Bitadresse ungleich "0" ist. |
||
|
0 |
1 |
8F30 |
Parameter liegt im schreibgeschützten Global-DB. |
|
8F31 |
Parameter liegt im schreibgeschützten Instanz-DB. Dieser Fehlercode zeigt an, dass ein Parameter sich in einem schreibgeschützten Datenbaustein befindet. |
||
|
0 |
1 |
8F32 |
Parameter enthält zu große DB-Nummer |
|
0 |
1 |
8F3A |
Der Parameter enthält die Nummer eines DB, der nicht geladen ist. |
|
0 |
1 |
8F42 |
Es ist ein Zugriffsfehler aufgetreten, während das System einen Parameter aus dem Peripheriebereich der Eingänge auslesen wollte. |
|
8F43 |
Es ist ein Zugriffsfehler aufgetreten, während das System einen Parameter in den Peripheriebereich der Ausgänge schreiben wollte. |
||
|
0 |
1 |
8F44 |
Dieser Fehlercode zeigt an, dass der lesende Zugriff auf einen Parameter verweigert wurde. |
|
8F45 |
Dieser Fehlercode zeigt an, dass der schreibende Zugriff auf einen Parameter verweigert wurde. |
||
|
0 |
1 |
8F7F |
Interner Fehler |