Step 7 PED einlesen

Tommy1981

Level-2
Beiträge
76
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hat jemand nen Tipp für mich warum folgende Anweisung nicht funktioniert?

L L#428
T #TEMP_PED

L L#46
T #TEMP_DID



L PED [#TEMP_PED]
T DID [#TEMP_DID]


Also ich möchte das Periepherieeingangsdoppelwort 428 einlesen und in das Instanz DB Doppelwort 46 übertragen. Funktioniert so leider nicht. Lade ich anstelle "PED [#TEMP_PED]" "PED428" (bei DID genauso) klappt es einwandfrei.
Temp_DID und Temp_PED sind Lokalvariablen (DINT). Wenn jemand ein Handbuch von Siemens kennt wo solche Dinge beschrieben sind wäre das auch echt klasse.

Dankee
 
Das steht in der Step7-Hilfe unter "Speicherindirekte Adressierung"

Speicherindirekte Adressierung


Programmanweisungen, die mit der speicherindirekten Adressierung arbeiten, setzen sich zusammen aus einer Operation, einem Operandenkennzeichen und einer [Adresse] (die Adresse muß in eckigen Klammern angegeben werden). Je nach Operandenkennzeichen wertet die Operation die Daten, die an der angegebenen Adresse abgelegt sind, als Pointer im Wort- bzw. im Doppelwortformat aus. Das zu wählende Pointerformat ist abhängig von dem verwendeten Operanden. Der vollständige Operand der Daten besteht aus einem Operandenkennzeichen und einem Pointer (siehe folgende Beispiele). Der Vorteil der indirekten Adressierung ist, daß Sie den Operanden der Anweisung während der Programmbearbeitung dynamisch modifizieren können.


Bei der speicherindirekten Adressierung besteht der Operand aus den beiden folgenden Teilen:


1. Operandenkennzeichen


· Bei Bits, die von Bitverknüpfungsoperationen angesprochen werden, können Sie die Operandenkennzeichen E, A, M, L, DIX oder DBX verwenden.


· Bei Bytes, Wörtern und Doppelwörtern, die von Ladeoperationen angesprochen werden, können Sie die Speicherbereiche E, A, M, L, D und PE verwenden, um die folgenden Operandenkennzeichen anzugeben: EB, EW, ED, DBB, DBW, DBD, DIB, DIW, DID, PEB, PEW, PED, etc.


· Bei Bytes, Wörtern und Doppelwörtern, die von Transferoperationen angesprochen werden, können Sie die Speicherbereiche E, A, M, L, DB, DI und PA verwenden, um die folgenden Operandenkennzeichen anzugeben: EB, EW, ED, DBB, DBW, DBD, DIB, DIW, DID, PAB, PAW, PAD, etc.


· Zum Adressieren von Zeiten, Zählern oder Bausteinen verwenden Sie die Bereichskennungen T, Z, DB, DI, FB, FC.


3. Die Adresse von Pointern im Wort- oder Doppelwortformat wird in eckigen Klammern "[ ]" angegeben:


· Pointer im Wortformat - Ein Wort, das die Nummer einer Zeit (T), eines Zählers (Z), eines Datenbausteins (DB, DI) oder eines Codebausteins (FC, FB) angibt. Bei einem Pointer im Wortformat handelt es sich um eine Dezimalzahl.


· Pointer im Doppelwortformat - Ein Doppelwort, das in diesem Fall die genaue Adresse eines Bits, Bytes, Worts oder Doppelworts angibt. Ein Doppelwort hat folgendes Pointerformat: P#Byte.Bit.


· Der Pointer muß für die speicherindirekte Adressierung in einem der folgenden Bereiche gespeichert werden:


- M - Merker


- L - Lokaldaten


- D - Datenbaustein (DB oder DI)


- STAT - Statische Daten (nicht bei multiinstanzfähigen Bausteinen)


Hinweis


Wenn Sie auf ein Byte, Wort oder Doppelwort zugreifen möchten, das über speicherindirekte Adressierung angesprochen wird, vergewissern Sie sich zunächst, daß die Bitnummer des Pointers im Doppelwortformat 0 ist.


Beispiel für einen Pointer im Wortformat:






L 5 //Lade den Wert des Pointers in AKKU 1.
T MW2 //Transferiere den Pointer nach MW2.
L T [MW2] //Lade den aktuellen Wert der Zeit T5 in AKKU 1.




Beispiel für einen Pointer im Doppelwortformat:






L P#8.7 //Lade den Wert des Pointers in AKKU 1.
T MD2 //Transferiere den Pointer nach MD2.
U E [MD2] //Frage den Signalzustand an Eingang E 8.7 ab
= A [MD2] //und weise den Signalzustand Ausgang A 8.7 zu.




Beispiele für speicherindirekte Adressierung Beschreibung
U E [MD 2] Führe eine UND-Verknüpfung mit dem Eingangsbit aus. Die Adresse befindet sich in Merkerdoppelwort MD2.
= DIX [DBD 2] Weise den Signalzustand des VKE-Bits dem Instanz-Datenbit zu. Die Adresse befindet sich im Datendoppelwort DBD2.
L EB [DID 4] Lade das Eingangsbyte in AKKU 1. Die Adresse befindet sich im Instanzdoppelwort DID4.
AUF DB [LW 2] Öffne den Datenbaustein. Die Nummer des Datenbausteins befindet sich im Lokaldatenwort LW2.

Du mußt also ein Pointerformat in der Klammer haben!

Heißt für sich:

L L#428
SLD 3
T #TEMP_PED

L L#46
SLD 3
T #TEMP_DID

L PED [#TEMP_PED]
T DID [#TEMP_DID]

PS: Das Beispiel mit dem Timer hat Siemens etwas blöd gewählt, das paßt nur für Timer und Zähler im Wortformat.
PED und DID muß man mit dem Doppelwortformat adressieren und eben mit einem Pointer.

L L#428 --> SLD 3 --> P#428.0
 
Zuletzt bearbeitet:
Zurück
Oben