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

Ergebnis 1 bis 7 von 7

Thema: FB mit variablem Adresszugriff

  1. #1
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen,
    ich habe ein kleines Problem, welches ich nicht selbst gelöst bekomme.

    Ich möchte einen Funktionsbaustein erstellen, dem ich einen Wert übergebe, der für ein AnfangsByte einer Bytereihe (z.B AB0 bis AB4) steht.
    Intern des FBs will ich anhand dieser Zahl nachfolgende Adressierungen beziehen.

    Das heißt ich übergebe ihm eine "5" und will dann zugreifen auf AB5, AB6, usw.

    mein Lösungsansatz wäre gewesen, dass ich ein DWord übergebe
    dann wie folgt:
    Code:
     L     #AdressLow_OUT // übergabewert
     T     #temp_AdressLow_OUT
    
     L     B#16#1   // wert den ich schreiben will
     T     AB [#temp_AdressLow_OUT]
    
    ////// Hochzählen des "Pointers"
          L     #temp_AdressLow_OUT
          L     DW#16#1
          +D    
          T     #temp_AdressLow_OUT // müsste ja eins höher sein jetzt
    //////
    
     L     B#16#2 // wert den ich schreiben will
     T     AB [#temp_AdressLow_OUT] // ****1****
    Doch leider bekomm ich immer einen Fehler, der in der Zeile entsteht, die mit "****1****" gekennzeichnet ist.
    Also muss ihrgendwas mit dem Hochzählen schief gelaufen sein.

    Kann mir da jemand weiter helfen??

    Gruß
    FinalMistery
    Zitieren Zitieren FB mit variablem Adresszugriff  

  2. #2
    Registriert seit
    17.03.2008
    Beiträge
    103
    Danke
    4
    Erhielt 24 Danke für 23 Beiträge

    Standard

    Mit Addition von DW#16#1 hast Du nur die Bitadresse um 1 erhöht. Der folgende Zugriff auf ein Byte führt dann zum Fehler, weil die Bitadresse jetzt nicht mehr 0 ist. Wenn Dein Code so aussieht funktionierts:
    l DW#16#1
    sld 3
    +D

    oder so:
    l p#1.0
    +D

    Gruss
    HPE

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von HPE Beitrag anzeigen
    Mit Addition von DW#16#1 hast Du nur die Bitadresse um 1 erhöht. Der folgende Zugriff auf ein Byte führt dann zum Fehler, weil die Bitadresse jetzt nicht mehr 0 ist. Wenn Dein Code so aussieht funktionierts:
    l DW#16#1
    sld 3
    +D

    oder so:
    l p#1.0
    +D

    Gruss
    HPE
    Er sollte aber auch gleich die Adresse die in seinen FB reinkommt mit SLD 3 verschieben!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  4. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    HPE (08.07.2011)

  5. #4
    Registriert seit
    17.03.2008
    Beiträge
    103
    Danke
    4
    Erhielt 24 Danke für 23 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Er sollte aber auch gleich die Adresse die in seinen FB reinkommt mit SLD 3 verschieben!
    Da hast Du natürlich vollkommen recht! Das hatte ich übersehen.

    Gruss HPE

  6. #5
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    schnell, schneller, "Ihr beiden"

    Ja super Danke.

    Wenn man zu viel C programmiert vergisst man solche wichtigen Einzelheiten ab und zu

  7. #6
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke nochmal Jungs. Wie Ihr es beschrieben habt, funktioniert es jetzt super.

    Nur wie geh ich die ganze Sache an, wenn mein anzusprechender Adressbereich größer EB512 ist?
    Gibts da eine Möglichkeit wie ich auf diese Adressen schreiben kann?

    Gruß
    FinalMistery

  8. #7
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    L PEW

    T PAW

    oder mit SFC14/15 konsistent lesen/schreiben

Ähnliche Themen

  1. Schieberegister mit Array und Variablem Index
    Von bluebird277 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.03.2011, 12:05
  2. Fehler in variablem ANY-Pointer
    Von Astralavista im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 10.02.2010, 12:02
  3. SFC20 BlockMove mit variablem Quell DB
    Von t-poke im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.09.2009, 05:12

Lesezeichen

Berechtigungen

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