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

Ergebnis 1 bis 10 von 10

Thema: Temporäre Variable in FC absolut adressieren

  1. #1
    Registriert seit
    09.02.2011
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    kann mir jemand sagen ob es möglich ist eine Temporäre Variable im einem FC auch über eine absolute Adresse anzusprechen?

    Vielen Dank schon mal für die Antworten

    Tim
    Zitieren Zitieren Temporäre Variable in FC absolut adressieren  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Naja, über Lokaldaten.
    Sinnvollerweise sollte Du aber zuerst einen Pointer bilden.

    L P##temp_variabel
    LAR1

    ...
    ...
    ...
    T LD [AR1, P#0.0]

    Edit:
    Was willst Du eigentlich machen?

  3. #3
    rightsaidtim ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.02.2011
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    leider verstehe ich nicht den Zusammenhang von dem was du mir geschreiben hast. Vielleicht kannst du mir die einzelnen Punkte Erklären?

    Ich bin über die S7 Hilfe auf die Lösung gestoßen. Ohne das ich Pointer benutzen muss. Über den Operandenbereich Lokaldaten.

    Hier ein Beispiel falls noch jemand auf der Suche ist:

    S L 0.0 // Bit
    T LB 10 // Byte
    L LW 20 // Wort
    T LD 30 // Doppelwort

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    S L 0.0 // Bit
    T LB 10 // Byte
    L LW 20 // Wort
    T LD 30 // Doppelwort

    was soll das sein,
    nochmal: was willst Du eigentlich machen?

  5. #5
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Zitat Zitat von rightsaidtim Beitrag anzeigen
    Ich bin über die S7 Hilfe auf die Lösung gestoßen. Ohne das ich Pointer benutzen muss. Über den Operandenbereich Lokaldaten.

    Hier ein Beispiel falls noch jemand auf der Suche ist:

    S L 0.0 // Bit
    T LB 10 // Byte
    L LW 20 // Wort
    T LD 30 // Doppelwort
    Das funktioniert aber nur, wenn die tmp-Variablen nicht verändert werden. Eine eingeschobene oder gelöschte Variable kann den ganzen Code versauen. Bei der Adressierung über das AR1 passiert das nicht.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  6. #6
    rightsaidtim ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.02.2011
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich wollte das letzte Bit einer temporären Wort Variable in einem FC abfragen. Das kann man meines Wissens nur in dem man es mit seiner Absoluten adresse anspricht. Z.B.:

    Meine Variable "Temp0 INT 0.0"

    U L 1.7
    = M 100.0

    Wie die Adressiereung über das AR1 funktioniert lese ich mich gerade ein.

    Gibt es noch eine andere Möglichkeit als meine jetzige Variante?

  7. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    L P##Temp0
    LAR1
    U L [AR1, P#1.7]
    =M100.0

    Edit: das macht man aus dem Grund wie auch schon Tigerente beschreibt.
    Würdest Du in Deinen Lokaldaten in der Deklaration eine Zeile einfügen hat Temp0 nicht mehr zB L0.0 als Adresse sondern L4.0
    Und dann stimmt Dein Code nicht mehr.
    Darum über das AR1. Dann stimmt es immer!
    Geändert von borromeus (27.11.2012 um 08:57 Uhr)

  8. #8
    rightsaidtim ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.02.2011
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super,
    vielen Dank für die Antwort. Auf diese Art der Abfrage wäre ich nicht gekommen.

    Jetzt habe ich verstanden warum ich es so anwenden sollte und wie es funktioniert.

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von rightsaidtim Beitrag anzeigen
    Ich wollte das letzte Bit einer temporären Wort Variable in einem FC abfragen. Das kann man meines Wissens nur in dem man es mit seiner Absoluten adresse anspricht. Z.B.:

    Meine Variable "Temp0 INT 0.0"

    U L 1.7
    = M 100.0
    Es geht auch ohne absolute Adressierung und es geht auch ohne indirekte Adressierung. Welche der vielen möglichen Varianten man benutzt, sucht man sich anhand seiner Aufgabe heraus - das was halt verständlicher ist.

    borromeus hat Dich zweimal gefragt, was Du eigentlich machen willst. Ich präzisiere die Frage:

    Was verstehst Du unter "das letzte Bit einer Wort Variable"?
    Warum deklarierst Du die Wort-Variable als INT?
    Warum willst Du in einer INT-Variable "das letzte Bit" abfragen?
    Diese Operation passt nicht zum Datentyp INT.

    Bist Du sicher, daß Du mit "das letzte Bit" das Bit.7 der WORD-/INT-Variable meinst oder meinst Du vielleicht das Bit.15 - das INT-Vorzeichen?
    Wenn Dein Temp0 an Adresse LW 0 liegt, dann ist L 1.7 das Bit.7 und L 0.7 das Bit.15

    Zitat Zitat von rightsaidtim Beitrag anzeigen
    Gibt es noch eine andere Möglichkeit als meine jetzige Variante?
    Symbolisch saubere Möglichkeiten der Abfrage Bit.15 (INT-Vorzeichen) von INT- oder WORD-Variablen ohne indirekte Adressierung:
    Code:
          L     #Temp0
          SLW   1
          U     >0
          =     M    100.1
    
          L     #Temp0
          UW    W#16#8000
          U     >0
          =     M    100.2
    
          L     #Temp0
          L     0
          <I    
          =     M    100.3
    Abfrage Bit.7 ohne indirekte Adressierung:
    Code:
          L     #Temp0
          SRW   8
          U     >0
          =     M    100.5
    
          L     #Temp0
          UW    W#16#80
          U     >0
          =     M    100.6
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgende 3 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    hucki (28.11.2012),Perfektionist (28.11.2012),Thinfilm (30.11.2012)

  11. #10
    rightsaidtim ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.02.2011
    Beiträge
    12
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe da leider etwas total durcheinander geschmissen. Ich wollte bei diesem Beispiel das INT Vorzeichen Bit abfragen. Also war deine Vermutung richtig.

    Danke für die Beispiele. Sie haben mir gut weiter geholfen.

Ähnliche Themen

  1. Temporäre Variable anlegen
    Von MrChiliCheese im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.07.2012, 17:35
  2. Variable indirekt adressieren -CoDeSys-
    Von olb im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 16.01.2011, 09:18
  3. Temporäre Variable Laden
    Von Bensen83 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.01.2010, 08:51
  4. Statische Variablen absolut Adressieren
    Von dpd80 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.01.2008, 13:16
  5. Bausteinordner symbolisch/absolut
    Von kiestumpe im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.08.2007, 10:45

Lesezeichen

Berechtigungen

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