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

Ergebnis 1 bis 3 von 3

Thema: indirekte Adressierung Byteadresse Pointer

  1. #1
    Registriert seit
    14.04.2012
    Beiträge
    81
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin Moin!

    ich habe einen DB mit einem array [1..13] ab der adresse 210. jedes element des arrays ist 1142 Byte lang. Bei 13 Elementen ist der DB 15056 Bytes lang.
    ich lade ein element des arrays zum editieren in einen anderen baustein und transferiere ihn nach dem editieren wieder zurück. das funktioniert bei meiner CPU 313 C 6ES7 313-5BF03-0AB0 nur bis zum 7ten Element. wenn ich das 8te element editieren will lädt die cpu zwar daten aber wenn ich sie wegspeicher kann ich sie im array nicht wiederfinden. als ob die indirekte adressierung ab dem 8ten Element in meinem array nicht mehr funktioniert.

    nun habe ich in folgendem PDF auf seite 4 gelesen dass die maximale Byte-Adresse im Pointer CPU-abhängig ist.
    kann mir jemand sagen ob das stimmt und wenn ja weiß jemand wo ich eine tabelle mit den CPUs und der max Byte-Adresse finde?

    oder woran könnte mein fehler sonst liegen?

    mein code für die adressierung:

    // adresse berechnen
    L element-Nr
    L 1
    -I
    L 1142
    *I
    L 210
    +I
    T #Adresse

    //Zeiger der Quelle bilden
    L W#16#300
    T LW 0
    L 1142
    T LW 2
    L DB-Nr
    T LW4
    L #Adresse
    SLW 3
    L P#DBX0.0
    +D
    T LD 6 // Quell-Zeiger

    // Ziel-Adresse und Ziel-Zeiger berechne ich nach dem gleichen Muster

    call BLKMOV
    mit Quell-Zeiger
    mit Ziel-Zeiger

    danke für die hilfe!
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren indirekte Adressierung Byteadresse Pointer  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard

    Nimm mal SLD statt SLW:
    Code:
    L #Adresse
    SLD 3
    L P#DBX0.0
    +D
    T LD 6  // Quell-Zeiger
    Außerdem würde ich mit Hilfe von AR1 indirekt in die ANY-Variable schreiben, statt die Absolutadresse in TEMP abzuzählen:
    Code:
    LAR1 P##Zielzeiger
    ...
    L #Adresse
    SLD 3
    L P#DBX0.0
    +D
    T D [AR1, P#6.0]  // Quell-Zeiger
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Tom... (23.04.2015)

  4. #3
    Registriert seit
    14.04.2012
    Beiträge
    81
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    jetzt ist alles klar! weil ich mit SLW nur im wort schiebe gehen die drei linken bits meiner berechneten adresse verloren und der rest ergibt dann irgendeine andere adresse. deswegen schreibt der die daten in einen anderen bereich und macht mir die anderen daten kaputt.

    Vielen Dank für die schnelle Hilfe

Ähnliche Themen

  1. Indirekte Adressierung Pointer berechnen
    Von Supermario73 im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 07.02.2014, 13:58
  2. Indirekte Adressierung / Pointer ???
    Von max1de im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.02.2012, 18:29
  3. Indirekte Adressierung über einen ANY Pointer
    Von sventek im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.12.2009, 06:33
  4. cpu stop indirekte adressierung pointer
    Von falk.jaeger im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 23.02.2009, 07:22
  5. indirekte Adressierung und Pointer ??????????????
    Von Mathias W. im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 13.10.2003, 20:21

Stichworte

Lesezeichen

Berechtigungen

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