CALL BLKMOV
Any
SRCBLK :="Messages".Reply_Message[1]
RET_VAL :=#RetVal
DSTBLK :="Messages".Reply_Message[2]
"Messages".Reply_Message[1] := #MyMessage;
"Messages".Reply_Message[My_Int] := #MyMessage;
Beschreibung zu ATTR_DB
Achtung Asynchrone Bearbeitung
Die neuen Anweisungen arbeiten in S7-1500 asynchron, d. h. ihre Ausführung erstreckt sich über mehrere Programmzyklen.
Mit der Anweisung "ATTR_DB" erhalten Sie Informationen über einen im Arbeitsspeicher der CPU liegenden Datenbaustein (DB). Die Anweisung ermittelt für den ausgewählten DB die gesetzten Attribute am Parameter ATTRIB.
Für Datenbausteine mit optimiertem Zugriff kann die Länge nicht ausgelesen werden, der Parameter DB_LENGH enthält für DBs mit optimiertem Zugriff die Länge "0".
Datenbausteine für Motion Control können mit der Anweisung "ATTR_DB" nicht ausgelesen werden. Für diese wird der Fehlercode 80B2 ausgegeben.
Für Datenbausteine mit optimiertem Zugriff kann die Länge nicht ausgelesen werden, der Parameter DB_LENGH enthält für DBs mit optimiertem Zugriff die Länge "0".
Ja, Test_DB gibt es noch:
Anweisung in S7-300/400:
TEST_DB
Anweisung in S7-1500
ATTR_DB ..
// DB-Länge ermitteln
#TEMP_INT:=TEST_DB(DB_NUMBER := BLOCK_DB_TO_WORD(#DB_IN),
DB_LENGTH => #TEMP_WORD,
WRITE_PROT => #TEMP);
#DB_IN_LAENGE := WORD_TO_INT(#TEMP_WORD);
#TEMP_INT:=TEST_DB(DB_NUMBER := BLOCK_DB_TO_WORD(#DB_OUT),
DB_LENGTH => #TEMP_WORD,
WRITE_PROT => #TEMP);
#DB_OUT_LAENGE := WORD_TO_INT(#TEMP_WORD);
// Parameter prüfen
IF #DB_IN_LAENGE <> #DB_OUT_LAENGE
OR #DB_IN_LAENGE MOD 4 <> 0
THEN RETURN;
END_IF;
// Adresse berechnen
#ADRESSE := 4 * #AUFRUF_NUMMER;
IF #ADRESSE > #DB_IN_LAENGE-4
THEN RETURN;
END_IF;
// Messwert "Aufrufnummer" bearbeiten
#x := DWORD_TO_REAL(#DB_IN.DD(#ADRESSE));
#y := DWORD_TO_REAL(#DB_OUT.DD(#ADRESSE));
// usw.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?