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

Ergebnis 1 bis 7 von 7

Thema: DBW ermitteln

  1. #1
    Registriert seit
    16.02.2007
    Beiträge
    149
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich übe immer noch mit dem Thema FBs herum. Jetzt hatte ich gerade mal eine konkrete Anwendungsmöglichkeit und komme nicht auf die Lösung.

    Also: Ich habe ein OP-Bild. In diesem gibt es ein E/A Feld mit einer Textliste mit 100 Einträgen, die für 100 verschiedene Timer stehen, also Timer 000 bis Timer 100.

    Diesen Wert speichere ich im z.B DBx.DBW500 ( da steht dann also ein INTwert zwischen 0 und 100.

    Darunter habe ich ein Eingabefeld für einen Zeitwert. Diesen Wert speichere ich z.B. im DBx.DBW502 als S5Time.

    Dazu habe ich im DBx. noch 100 Worte für die aktuelle Timerzeit angelegt, für Timer_0 also DBW0, für Timer_1 also DBW2 für Timer_3 also DBW6 usw.

    Jetzt wollte ich in einem FB oder FC folgendes machen:

    L#DBxDBW500 (Timernummer aus DBW500 holen (int))
    L 2
    *I
    T#TEMP ( damit hätte ich ja den passenden Wert als INT, um in diesem DBword den passenden Zeitwert aus dem OP abzulegen)

    Danach nur noch :
    L DBx.DBW502 ( also den Timerwert (S5Time) aus dem OP )

    und jetzt kommt mein Problem :

    T DBx ??? (hier müsste #TEMP hin)

    Kann mir mal bitte jemand sagen, wie ich das #TEMP ( ich kann es nicht anders ausdrücken ) programmieren muss, falls ich mich verständlich ausgedrückt habe?

    Danke im voraus
    Gruß Wilhelm
    Zitieren Zitieren DBW ermitteln  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    das hier sind die beiden FAQ´s die dir weiterhelfen sollten:

    Pointer Zeiger FIFO LIFO

    Any-Zeiger für Datentypen

    ...darüber hinaus: suche nach indirekter adressierung
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    WL7001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.02.2007
    Beiträge
    149
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Standard

    [quote=vierlagig;129416]d

    Any-Zeiger für Datentypen
    /quote]

    Demnach könnte es so vielleicht aussehen ?

    /// WERT des ZielDBW ermitteln ///

    L#DB15DBW500 (Timernummer aus DBW500 holen (int))
    L 2
    *I
    T#TEMP

    // POINTER herstellen ///

    L B#16#10 //10h für s7
    T LB 0
    L B#16#02 //Typ BYTE
    T LB 1

    L 4 //4 Byte, da ich ja S5Time Werte kopieren will
    T LW 2

    L 15 //Datenbausteinnummer
    T LW 4

    L #TEMP //Anfangsadresse
    SLD 3 //Pointer bauen
    T LD 6

    L B#16#84 //Speicherbereich (hier DB)
    T LB 6

    ( der Pointer hiesse dann P#DB15.DBX(""#TEMP"") BYTE4

    // Jetzt will ich den OP-Zeitwert umkopieren //
    L DB15.DBW502 ( Zeitwert aus OP )
    T

    Weiter weiss ich nicht, ich verstehe nicht, wie ich diesen "Zielpointer" mit dem Wert #TEMP formulieren muss.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hast du daran gedacht, dass du (je nach Bediengerät) auch innerhalb des Bediengerätes eine Variable indirekt adressieren kannst ? Du mußt dir hierfür nur den Pointer selbst erstellen (Nr. des DW) und den dann anstelle der direkten Adresse der Variablen in der Visu eintragen ...

  5. #5
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    für deine anwendung benötigst du keinen any-zeiger.
    ein pointer reicht völlig aus.
    siehe link von vierlagig

    dein anyzeiger ist nicht ganz richtig. s5time = 1 word = 2 byte
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  6. #6
    WL7001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.02.2007
    Beiträge
    149
    Danke
    33
    Erhielt 17 Danke für 15 Beiträge

    Standard

    Zitat Zitat von volker Beitrag anzeigen
    für deine anwendung benötigst du keinen any-zeiger.
    ein pointer reicht völlig aus.
    siehe link von vierlagig

    dein anyzeiger ist nicht ganz richtig. s5time = 1 word = 2 byte
    Dann vielleicht so?

    // WERT des ZielDBW ermitteln ///

    L#DB15DBW500 (Timernummer aus OP) (Bsp. hier :33)
    L 2
    *I
    T#TEMP (Bsp. hier :66)

    // POINTER herstellen ///

    L #TEMP
    SLD 3
    L AR1

    AUF DB15
    L DBW 500 ( Zeitwert aus OP )
    T DBW [AR1, P#0.0] ( hier sollte jetzt 66 stehen, dann wäre ich fertig )

    Gruß Wilhelm

  7. #7
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von WL7001 Beitrag anzeigen
    Dann vielleicht so?
    Code:
    // WERT des ZielDBW ermitteln ///
    
    L#DB15DBW500  (Timernummer aus OP) (Bsp. hier :33)
    L 2 
    *I
    T#TEMP (Bsp. hier :66)
    
    // POINTER herstellen ///
    
    L #TEMP
    SLD 3
    L AR1
    
    AUF DB15
    L DBW 500 ( Zeitwert aus OP )
    T DBW [AR1, P#0.0] ( hier sollte jetzt 66 stehen, dann wäre ich fertig )
    wenn beides im selben DB ist funktioniert das so ... kannst auch verschiedene DBs anspringen:

    Code:
          U     E      0.0
          SPBN  end
          L     DB10.DBW  500
          L     2
          *I    
          SLD   3
          LAR1  
          L     DB10.DBW  502
          AUF   DB    15
          T     DBW [AR1,P#0.0]
    end:  NOP   0
    OT: und immer schön die [code ] - [/code ] - Tags nutzen (ohne space)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    WL7001 (07.04.2008)

Ähnliche Themen

  1. Sollwert ermitteln
    Von M.R. im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.04.2009, 18:42
  2. Skript um das OS zu ermitteln
    Von Black_Eagle im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 22.10.2008, 15:30
  3. cpu ressourcen ermitteln
    Von Gerri im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.10.2008, 18:05
  4. B&R Programmgröße ermitteln
    Von kiestumpe im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 13.05.2008, 22:42
  5. DB-Länge ermitteln
    Von Fliegertiger im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 18.12.2007, 15:39

Lesezeichen

Berechtigungen

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