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

Ergebnis 1 bis 8 von 8

Thema: Indirekter Zugriff auf DB und DB-Inhalt

  1. #1
    Registriert seit
    29.08.2007
    Ort
    Köln
    Beiträge
    22
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte folgendes ohne Merker oder statische Variablen realisieren:
    In: DB-Nummer, Adresse in diesem DB.
    Out: Wert aus diesem DB und dieser Adresse.
    Der Bausteinaufruf klappt ja noch, mit Auf[DB-Nummer], aber ich weiss nicht, wie ich auf den Parameter an der Adresse zugreifen kann.
    Weiss da jemand weiter, Sprache ist egal (AWL,KOP,FUP,SCL) ?
    Zitieren Zitieren Indirekter Zugriff auf DB und DB-Inhalt  

  2. #2
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Guckst Du mal hier : http://www.sps-forum.de/showthread.php?t=12923

    Oder suchen nach Pointer

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

    Standard

    Moin,

    denke, so könnte es klappen

    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1


    VAR_INPUT
    DB_Nr : BLOCK_DB ;
    Addr : INT ;
    END_VAR
    VAR_OUTPUT
    Wert : INT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =

    AUF #DB_Nr;
    L #Addr;
    ITD ;
    L P#1.0;
    *D ;
    TAR1 ;

    L DBW [AR1,P#0.0];
    T #Wert;



    // oder etwas kürzer

    AUF #DB_Nr;
    L #Addr;
    SLW 3;
    L DBW [AR1,P#0.0];
    T #Wert;

    END_FUNCTION

  4. #4
    KingShango ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    29.08.2007
    Ort
    Köln
    Beiträge
    22
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die super Hilfe
    Geändert von KingShango (27.11.2007 um 07:43 Uhr)

  5. #5
    Registriert seit
    24.05.2006
    Beiträge
    234
    Danke
    14
    Erhielt 77 Danke für 57 Beiträge

    Standard

    VORSICHT!!!
    Da ist mal wieder dieser böse SLW 3 aufgetaucht. Es muss ein SLD 3 sein:
    // oder etwas kürzer

    AUF #DB_Nr;
    L #Addr;
    //SLW 3; // NEIN, es muss
    SLD 3; // heißen
    L DBW [AR1,P#0.0];
    T #Wert;

    END_FUNCTION
    Mit dem SLW sind nur Zugriffe bis maximal Byte 8191 im DB möglich, danach wird falsch adressiert, nämlich Adresse MODULO 8192

  6. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Es ist immer noch nicht ganz richtig, es muss folgendermaßen heißen:

    // oder etwas kürzer

    AUF #DB_Nr;
    L #Addr;
    SLD 3;
    LAR1;
    L DBW [AR1,P#0.0];
    T #Wert;
    Siehe auch hier:

    http://www.sps-forum.de/showthread.php?t=8887

    Gruß Kai

  7. #7
    Registriert seit
    31.10.2007
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das stimmt natürlich.
    Sind die verteufelten Flüchtigkeitsfehler.

  8. #8
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier noch eine SCL Funktion:
    Code:
    FUNCTION FC24 : WORD
    VAR_INPUT
      DB_No     :WORD;           (* Nummer des Datenbausteins *)
      Byte_Adr  :INT;            (* Byte Adresse *)
    END_VAR  
      FC24 := WORD_TO_BLOCK_DB(DB_No).DW[Byte_Adr];
    END_FUNCTION
    Um welchen Datentyp geht es denn überhaupt?

    Also hier noch für Integer:
    Code:
    FUNCTION FC24 : INT
    
    VAR_INPUT
      DB_No     :WORD;           (* Nummer des Datenbausteins *)
      Byte_Adr  :INT;            (* Byte Adresse *)
    END_VAR  
      FC24 := WORD_TO_INT(WORD_TO_BLOCK_DB(DB_No).DW[Byte_Adr]);
    END_FUNCTION
    If you open your Mind too much, your Brain will fall out.

Ähnliche Themen

  1. Indirekter Zugriff auf Lokaldaten des Vorgänger
    Von Senator42 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.03.2007, 14:17
  2. SCL - Indirekter Zugriff auf DB/AR1,2
    Von Floh im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.06.2006, 10:32
  3. Antworten: 7
    Letzter Beitrag: 13.10.2005, 22:49
  4. indirekter DB zugriff
    Von bassknecht im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 20.08.2005, 12:44
  5. Antworten: 0
    Letzter Beitrag: 07.12.2004, 15:23

Lesezeichen

Berechtigungen

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