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

Ergebnis 1 bis 4 von 4

Thema: Adresse in DB Schreiben

  1. #1
    Registriert seit
    15.10.2005
    Ort
    49586 Neuenkirchen
    Beiträge
    329
    Danke
    30
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich suche eine Möglichkeit eine logischen Adresse (z.B. E 4.0) so in einem DB zuschreiben, so dass eine weiterer FB diese Adresse auslesen und damit in einer Schleife gewisse Operation ausführen kann.

    Sprich in dem DB steht das "Wo" und gewisse "Wie" Dinge. Geht das mittels Pointer?
    SG Farinin
    Zitieren Zitieren Adresse in DB Schreiben  

  2. #2
    Registriert seit
    11.12.2008
    Beiträge
    73
    Danke
    39
    Erhielt 9 Danke für 8 Beiträge

    Standard

    kommt drauf an, ob du auch adressen innerhalb eines DB/DIs speihern willst, oder nur E,A, L, M

    in letzterem fall kannst du dir einen pointer selbst zusammenbauen un als DWORD speichern

    es gib im handbuch/der hilfe eine seite namens "Format des Parametertyps Any" wo beschrieben wird, wie man einen Anypointer selbst zusammenstellt.

    bytes 6-9 davon sind das, was du haben willst. alsodas DWORD, war man ins AR1 laden kann und dann darauf zugreift.

    das zusammenbauen geht folgendermaßen:

    Code:
     
    //Speicherbereich:
    //DW#16#81000000 bei E (Eingaenge)
    //DW#16#82000000 bei A (Ausgaenge)
    //DW#16#83000000 bei M (Merker)
    //DW#16#84000000 bei DB
    //DW#16#85000000 bei DI
    //DW#16#86000000 bei L  (Lokaldaten)
    //DW#16#87000000 bei V  (vorherige Lokaldaten)

    erst lädtst du den speicherbereich wie oben angegeben in ein Temp-DWORD, dann lädst du die byteadresse in den akku, verschiebst diese mit SLD 3 3 mal nach links, dann addierst du das auf dein Tepm-DWORD auf und dann addierste da noch die bitadresse auf...

    für E 2.0 also folgendes:


    Code:
    L Speicherbereich //DW#16#81000000
    T TempDW
    L Byteadresse  //=2
    SLD 3
    L TempDW
    +D
    L Bitadresse // = 0
    +D
    T DB1.DBD 0 //Speicherort im DB
    bzw kürzer, aber weniger anschaulich:
    Code:
    L Byteadresse  //=2
    SLD 3
    L Bitadresse // = 0
    +D
    L Speicherbereich //DW#16#81000000
    +D
    T DB1.DBD 0 //Speicherort im DB
    dummerweise klappt das wie oben beschrieben nur für E, A, M, L, V

    DB und DI erwarten die richtige DB-Nummer in DB-Register1 bzw DB-Register2

    wobei ich DI garncht verwenden würde

    jedenfalls musst du die DB-Nummer auch in deinem DB speichern (als Integer) und mit

    Code:
    L DB1.DBNummer
    T TempDBNummer
    AUF DB[TempDBNummer]
    das DB-register setzen
    Geändert von Mangokind (18.03.2009 um 07:46 Uhr)
    Tolle Wurst...

  3. #3
    Avatar von Farinin
    Farinin ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    15.10.2005
    Ort
    49586 Neuenkirchen
    Beiträge
    329
    Danke
    30
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Kann ich dann nicht am besten sofort das DWORD komplett in den DB schreiben?
    SG Farinin

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie kommt denn dein Pointer (also die Adresse, auf die du verweisen willst) zustande ?
    Wenn du sie ausrechnen willst, dann siehe Beitrag Mangokind ...

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 09.09.2011, 10:56
  2. Antworten: 2
    Letzter Beitrag: 15.10.2009, 13:04
  3. MPI-Adresse
    Von IceBear im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 13.03.2008, 22:41
  4. Antworten: 2
    Letzter Beitrag: 10.10.2007, 17:59
  5. PEW Adresse aus DB
    Von skyracer im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.05.2007, 18:53

Lesezeichen

Berechtigungen

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