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

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

Thema: Übertragen von Temporären Variablen des OB86

  1. #1
    Registriert seit
    31.08.2009
    Beiträge
    63
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, kann mir jemand ein Beispiel geben wie ich einen Datenbereich aus den Temporären Variablen des OB86 in einen Datenbereich eines Datenbausteins transfereieren kann.

    mit den Bytes hab ich kein Problem.

    Aber es gibt eine Temporäre Variable mit dem Namen OB86_RACKS_FLTD und dem Datentyp Array(0..31) of Bool

    Die größe entspricht einem Datenwort, aber ich habe keine ahnung wie ich das übertragen soll.


    Danke schon mal für eure Unterstützung

    Mfg
    CZach
    Zitieren Zitieren Übertragen von Temporären Variablen des OB86  

  2. #2
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    ich machs so:
    Code:
          L     LD     8
          T     DB86.DBD    8
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

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

    Standard

    Hallo,
    etwas schöner wäre es so :
    Code:
    LAR1 p#OB86_RACKS_FLTD
    L D [ar1,p#0.0]
    T DB86.dbd 8
    Gruß
    Larry

  4. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Blockmove (18.04.2013)

  5. #4
    Registriert seit
    05.09.2011
    Beiträge
    176
    Danke
    43
    Erhielt 28 Danke für 20 Beiträge

    Standard

    Oder die Variable OB86_RACKS_FLTD umdeklarieren von Array [0..31] of Bool nach DWORD (sollte mMn auch funktionieren!). Dann kannst du auch wieder symbolisch mit
    Code:
    L # OB86_RACKS_FLTD
    T DB86.DBD 8
    arbeiten!

  6. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    etwas schöner wäre es so :
    Code:
    LAR1 p#OB86_RACKS_FLTD
    L D [ar1,p#0.0]
    T DB86.dbd 8
    Gruß
    Larry
    Find ich im OB jetzt nicht unbedingt nötig, da die Daten ja sowieso an einer fixen Adresse in den Lokaldaten stehen, und wenn Ich die Variable verschiebe eh nicht mehr stimmen...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Turi (13.09.2016)

  8. #6
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.486
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    etwas schöner wäre es so :
    Code:
    LAR1 p#OB86_RACKS_FLTD
    L D [ar1,p#0.0]
    T DB86.dbd 8
    Gruß
    Larry
    100%ACK

    Also Zugriffe auf Lokalbyte über Adressen kann ich leiden wie Zahnweh.
    Habs früher auch gemacht und irgendwann genügend Lehrgeld bezahlt.
    Deshalb entweder über AR oder mit Blockmove oder in SCL mit einer View.
    Dem DB86.DBD8 gehört auch noch ein Symbol verpasst.

    Gruß
    Dieter

  9. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Normalerweise greife Ich auch so wie Larry es sagt auf Lokaldaten zu, aber hier würd ichs wahrscheinlich nicht machen, da die Cpu die Daten ja immer an der gleichen Adresse übergibt, auch wenn man das Sybol verschieben würde....
    Aber das ist dann wohl eine philosophiefrage...

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

    Standard

    ... deshalb habe ich ja auch geschrieben : "... etwas schöner ..."

    Dessen ungeachtet erspart es natürlich auch noch unnötige Rückfragen ... (was ist LD 6 ?)

    Gruß
    Larry

  11. #9
    Registriert seit
    31.08.2009
    Beiträge
    63
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, ich hab das Beispiel von Larry verwendet.
    Danke hat super funktioniert.
    Hab aber leider den tieferen sinn nicht verstanden.
    Vielleicht könnte jemand mal versuchen mir diese Funktion zu erklären, ob ichs dann verstehe steht auf einem anderen Blatt.


    In diesem Doppelwort stehen auch unterschiedlich informationen.


    OB86_Z23: Adresse des betroffenen DP-Slaves:
    - Bit 0 bis 7: Nr. der DP-Station
    - Bit 8 bis 15: DP-Mastersystem-ID
    - Bit 16 bis 30: logische Basisadresse bei einemS7-Slave bzw. Diagnoseadresse bei einem DP-Normslave
    - Bit 31: I/O-Kennung

    Währe es auch möglich das Doppelwort in die obigen bereiche aufzusplitten.

    So das ich im DB dann ein Byte mit der Nr. der DP Station ein Byte mit der Nr. der MastersystemID und ein Wort mit der log Basisadresse (wobei ich ja da dann das Bit 31 in diesem Wort nicht brücksichtigen darf.)


    Danke schon mal für euere bemühungen.

    Mfg
    CZach

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von CZach001 Beitrag anzeigen
    OB86_Z23: Adresse des betroffenen DP-Slaves:
    - Bit 0 bis 7: Nr. der DP-Station
    - Bit 8 bis 15: DP-Mastersystem-ID
    - Bit 16 bis 30: logische Basisadresse bei einemS7-Slave bzw. Diagnoseadresse bei einem DP-Normslave
    - Bit 31: I/O-Kennung

    Währe es auch möglich das Doppelwort in die obigen bereiche aufzusplitten.
    Hallo,
    ja das geht auch und das mit der Erklärung versuche ich mal dem Code-Beispiel :
    Code:
    LAR1 p#OB86_Z23   // den Pointer auf die variable in das AR1-Register laden
    
    L B [AR1,p#0.0]    // den Speicherwert, auf den das AR1-Register zeigt, laden
    T DB500.DBB10    // die Nummer der DP-Station
    
    L B [AR1,p#1.0] // den Speicherwert, auf den das AR1-Register zeigt + eine Offset-Verschiebung um 1 Byte, laden
    T DB500.DBB11 // die Mastersystem-ID
    
    L W [AR1,p#2.0] // den Speicherwert, auf den das AR1-Register zeigt + eine Offset-Verschiebung um 2 Byte, laden
    L W#16#7FFF     // Maskierung für das Byte 31
    T DB500.DBW12 // Basis-Adresse ...
    
    U [AR1,p#3.7] // den Speicherwert, auf den das AR1-Register zeigt + eine Offset-Verschiebung um 3 Byte und 7 Bit, laden
    = M 10.0         // IO-Kennung
    Versuch dich mal selbst ...

    Gruß
    Larry

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 18.05.2011, 23:57
  2. ANY-Pointer auf temporären Struct im FB
    Von ChristianPaier im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 21.03.2010, 12:39
  3. OB86 - Erklärungen
    Von Gerri im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 07.07.2008, 16:53
  4. Problem beim Editieren der temporären Lokaldaten
    Von Onkel Dagobert im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 08.11.2004, 18:16
  5. Antworten: 11
    Letzter Beitrag: 19.08.2004, 15:33

Lesezeichen

Berechtigungen

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