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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Adressregister direkt beschreiben?

  1. #1
    Registriert seit
    09.08.2004
    Beiträge
    101
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Habe hier ein kleines Problem, ich möchte innerhalb eines FC´s auf Adressen von verschiedenen DB´s zugreifen.
    Nun langt es mir ja nicht ein 32 Bit Doppelwort im Format "84000024" ins Adressregister zu laden, weil damit die DB Nr noch nicht festgelegt ist.
    Ich müsste also einen pointer erstellen (6Bytes) und ins Adressregister laden um auch die DBNr übergeben zu können.

    Jetzt gibts aber ein Problem:
    1. In FC´s gibt es keine pointer als TempVariable
    2. Ich weiß nicht wie ich das Adressregister direkt beschreiben kann

    Vielen Dank schonmal, mfg Thorsten
    Zitieren Zitieren Adressregister direkt beschreiben?  

  2. #2
    Registriert seit
    04.10.2006
    Beiträge
    22
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Halllo warum nutzt du nicht einfach "AUF DBXXX" und springst zu den verschiedenen DB's ueber einen Sprungverteiler?

    Mathias

  3. #3
    Registriert seit
    19.09.2006
    Beiträge
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    such mal in der Hilfe von S7 nach Anypointer da ist das schön beschrieben wie das geht... und du kannst sie auch in temporäre Variablen schreiben



    ansonsten:

    auf db[mwxxx]

    und dein AR nur mit dem Offset belegen
    Kaum macht mans richtig, schon funktionierts...

  4. #4
    thorsten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2004
    Beiträge
    101
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Zum 1. Einwand: Es ist nicht immer eine Stelle im bereich der Datenbausteine auf die ich verweisen möchte, deshalb geht der "Auf" Befehl nicht.

    Zum 2.
    Ja bei den Anypointer bin ich auch schon angekommen,
    nur wie lade ich einen solchen pointer ins Adressregister?
    Auch möchte ich für Wiederholfaktor bzw Datentyp eigentlich nichts angeben, weil ich eben nur auf eine bestimmte Adresse im Db zeigen möchte.
    Also keinen Bereich markieren oder einen bestimmten Variablentyp habe.

    Danke, mfg Thorsten

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Such im Forum nach "ANY" ud nach "indirekte Adressierung". Dazu hatte wir schon einige Themen.
    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

  6. #6
    thorsten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2004
    Beiträge
    101
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hab jetzt ein paar dinge ausprobiert,

    und mein problem ist, daß ich den Inhalt des Anypointers nicht ins Adressregister bekomme:

    Ich habe ne Adresse im Anypointer zb: 10_01_0001_0005_84_000007
    (für S7_Bit_1X_DB5_DB_DBX1.1), die möchte ich jetzt ins Adressregisterladen, also in etwa so:

    L #Anypointer
    Lar1

    das akzeptiert der kompiler nicht, ich kann nur nen pointer auf any laden:

    L p##Anypointer
    Lar1

    damit habe ich aber die Adresse des Anypointers im Adress-Speicher (irgendwas in den Lokaldaten mit 87.... als Adresse) und nicht die im Anypointer gespeicherte Adresse!

    Jetzt kann ich mir zwar den Innhalt aus dem Anypointer in Lokalvariablen schreiben und diese dann ins Adressregister laden, aber dann hab ich das Problem daß ich nur Variablem bis DWord dafür zur Verfügung habe und damit immer die DB NR verliere!

    Also so:
    L p##Anypointer
    Lar1
    L D[6.0,p#0.0]
    t #TempVariable_Typ_Dword <-- Nur Dword also kann ich info für DB Nr aus w [4.0,p#0.0] des anypointers nicht mit abspeichern!

    .
    .
    .

    L #TempVariable_Typ_Dword
    Lar1 <-- weil die TempVariable nur Dword ist verliere ich die Information für die DB Nr
    Wie lade ich diese?

    mfg Thorsten
    Geändert von thorsten (10.11.2006 um 12:00 Uhr)

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ich denke, da wirst du die doch die DB-Nummer extra "mitführen" müssen.
    Speichern kannst das nur in einem Typ Any, das stimmt. Um dann deine Daten zu laden, mußt du dir die DB-Nummer aus dem ANY auslesen und diesen über AUF DB [...] öffnen. Was Besseres fällt mit dazu auch gerade nicht ein.
    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

  8. #8
    Registriert seit
    28.06.2006
    Ort
    Königreich Neuseeland
    Beiträge
    2.027
    Danke
    133
    Erhielt 96 Danke für 76 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich denke, da wirst du die doch die DB-Nummer extra "mitführen" müssen.
    Speichern kannst das nur in einem Typ Any, das stimmt. Um dann deine Daten zu laden, mußt du dir die DB-Nummer aus dem ANY auslesen und diesen über AUF DB [...] öffnen. Was Besseres fällt mit dazu auch gerade nicht ein.
    Das sehe ich auch so, zumindest habe ich das bei ähnlichen Fällen auch so gemacht.

  9. #9
    thorsten ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2004
    Beiträge
    101
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Ja da haste recht, damit versuche ichs auch gerade, klappt auch ist nur nicht besonders elegant. Außerdem muss ich jetzt ne extra Fallunterscheidung machen ob ich Bereiche im Datenbausteinbereich oder im Merker bzw. Peripheriebereich ansprechen mächte, da ich bei denen den DB eben nicht öffnen darf!

    Naja, vieleicht fällt einem hier ja noch was ein, ansonsten Danke für eure Hilfe!

    mfg Thorsten

  10. #10
    Registriert seit
    28.06.2006
    Ort
    Königreich Neuseeland
    Beiträge
    2.027
    Danke
    133
    Erhielt 96 Danke für 76 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von thorsten Beitrag anzeigen
    Hallo,

    Ja da haste recht, damit versuche ichs auch gerade, klappt auch ist nur nicht besonders elegant. Außerdem muss ich jetzt ne extra Fallunterscheidung machen ob ich Bereiche im Datenbausteinbereich oder im Merker bzw. Peripheriebereich ansprechen mächte, da ich bei denen den DB eben nicht öffnen darf!

    Naja, vieleicht fällt einem hier ja noch was ein, ansonsten Danke für eure Hilfe!

    mfg Thorsten
    Es wurde hier im Forum mal behauptet, das ein DB "0" geöffnet werden darf...
    Wenn das so ist (IMHO ist es NICHT so), dann brauchst du keine Fallunterscheidung, da, wenn kein DB, der entsprechende Eintrag im Pointer eben "0" ist.

Ähnliche Themen

  1. Adressregister mit Doppelwort beschreiben
    Von Alex S. im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 03.03.2011, 16:51
  2. Adressregister im FB
    Von moggi im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 02.03.2011, 09:58
  3. Adressregister u Pointer in FB
    Von Gerri im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 30.09.2009, 18:17
  4. Adressregister und Pointer
    Von jan820813 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.03.2008, 18:54
  5. Adressregister
    Von Ralle im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 31.08.2004, 10:46

Lesezeichen

Berechtigungen

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