Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: PED einlesen

  1. #1
    Registriert seit
    20.05.2007
    Beiträge
    47
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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
    Zitieren Zitieren PED einlesen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    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
    Geändert von Ralle (09.10.2014 um 16:30 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Tommy1981 (10.10.2014)

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.792
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... oder :
    Code:
    L p#428.0   // dann ist es auch ohne den SLD passend
    T #TEMP_PED
    
    usw.
    Gruß
    Larry

  5. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Tommy1981 (10.10.2014)

Ähnliche Themen

  1. PAD PAW PED PEW DB Variabel machen
    Von chickmc im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.01.2012, 15:36
  2. Temperatur einlesen
    Von chipset im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.04.2011, 07:11
  3. Maskierung PED PAD
    Von wee im Forum Programmierstrategien
    Antworten: 16
    Letzter Beitrag: 12.01.2011, 15:25
  4. Wie oft PED im Programm auslesen?
    Von Krumnix im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.09.2006, 10:01
  5. Antworten: 3
    Letzter Beitrag: 28.02.2005, 09:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •