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

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

Thema: AWL-Code Interpretaion

  1. #1
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Ich habe folgenden Code gefunden.
    Leider kann ich ihn NICHT Interpretieren.
    (Hat das was mit Multi-Instanz-Fähigkeiten zu tun ?)


    Kann mir jemand den Code verständlich machen.
    (Bin SCL verwöhnt )


    Code:
     
    A7d3: L     P##Achse         ; Lade Pointer #Achse in AKKU 1
             LAR1                       ; Lade Adr.register 1 mit Inhalt von AKKU1
             L     W [AR1,P#0.0]
             T     LW    14           ; Tranf. AKKU 1 in Lokaldatenwort 14
             AUF   DB [LW 14]      ; Oeffne DB[Inhalt von LW14]
             L     D [AR1,P#2.0]
             LAR1                       ; Lade Adr.register 1 mit Inhalt von AKKU1
             L     D [AR1,P#34.0]   ;Range
             T     D [AR1,P#150.0] ;Templ
    P.S. Die Kommentare im Code sind alle von mir.
    Beinhalten nur Befehlsbeschreibung.
    Geändert von gravieren (08.05.2008 um 09:46 Uhr)
    Karl
    Zitieren Zitieren AWL-Code Interpretaion  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von gravieren Beitrag anzeigen
    Hi

    Ich habe folgenden Code gefunden.
    Leider kann ich ihn NICHT Interpretieren.
    (Hat das was mit Multi-Instanz-Fähigkeiten zu tun ?)
    ..
    Mit Multiinstanz hat das nichts zu tun.
    Eigentlich ist es doch schon "fast "gut kommentiert
    Was für dich hilfreich sein könnte:
    Im ersten Befehl lädst du die Adresse von #Achse, da steht dann z.B. 2 drin.
    Diese 2 lädt dann der Befehl LAR1 ins Adressregister AR1.
    Wenn du jetzt einen Befehl wie z.B.
    L W [AR1,P#0.0] hast dann lädst du das Wort 2.0 (AR1=2, P#0.0 -> 2 + 0.0)
    oder
    L D [AR1,P#2.0] hast dann lädst du das DoppelWort 4.0 ( AR1=2, P#2.0 -> 2 + 2.0)
    Geändert von marlob (08.05.2008 um 09:59 Uhr)

  3. #3
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Hi


    Könnte das heissen:


    Code:
     
     
    ; LW14 ist z.b.  6
     
    AUF   DB [LW 14]      ;  Öffne DB[6]
     
     
     ; imDoppelwort könnte ein Offset geladen sein ? z.b.100
    ; 
    L     D [AR1,P#2.0]     ;  L DB6.DD2   ?
    
    LAR1                      
     
     
    Dann erfolgt der eigentliche Zugriff aud  DD134 und DD250   ?
    L     D [AR1,P#34.0]   ;Range    L db6.dd134  ???
    T     D [AR1,P#150.0] ;Templ    T db6.dd250  ???
    Karl

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Ich muß nochmal nachhaken. Welches Format hat die Variable #Achse. Die müßte selbst eigentlich das Format Pointer (oder ein Input per Pointer) haben, denn sonst ergibt das m.E. nicht wirklich Sinn.

    Ein Pointer besteht aus 3 Word.

    1 Word DB, 2 Word Adresse.

    Deswegen lädt er zuerst den DB mit Versatz 0.0, dann die Adresse mit Versatz 2.0

    Mit dieser Adresse und dem feöffneten DB kann dann das DW aus dem DB geladen werden.

    Wenn man mit P##Irgendwas z.Bsp eine Temp-DWord adressiert und dies in AR1 lädt, kann man direkt diese Temp mit L LD[AR1, P#0.0] ansprechen. In diesem Falle ist nur ein DWord mit Versatz 0.0 also die Adresse vorhanden.

    Liege ich damit richtig?
    Gravieren, kannst du bitte mal mitteilen, was #Achse ist (Input, Format etc.), ist das ein FB oder FC?
    Geändert von Ralle (08.05.2008 um 10:21 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von gravieren Beitrag anzeigen
    Hi


    Könnte das heissen:


    Code:
     
     
    ; LW14 ist z.b.  6
     
    AUF   DB [LW 14]      ;  Öffne DB[6]
     
     
     ; imDoppelwort könnte ein Offset geladen sein ? z.b.100
    ; 
    L     D [AR1,P#2.0]     ;  L DB6.DD2   ?
    
    LAR1                      
     
     
    Dann erfolgt der eigentliche Zugriff aud  DD134 und DD250   ?
    L     D [AR1,P#34.0]   ;Range    L db6.dd134  ???
    T     D [AR1,P#150.0] ;Templ    T db6.dd250  ???
    Wenn in D [AR1,P#2.0] 100 steht, dann stimmt das so wie du das denkst
    P.S.Man schreibt DB6.DBD134 und nicht DB6.DD134

  6. #6
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Wie Ralle schon sagte ist der Typ von #Achse interessant. Ich bin mal davon ausgegangen das er vom Typ Any ist, da ich mal davon ausgehe, das der Code schon existiert und von jemand anderes geschreiben wurde.
    Zitat Zitat von gravieren Beitrag anzeigen
    Hi

    Ich habe folgenden Code gefunden.
    Leider kann ich ihn NICHT Interpretieren.
    ...
    Vielleicht gibts du uns noch ein paar Infos dazu
    Geändert von marlob (08.05.2008 um 10:33 Uhr)

  7. #7
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Code:
    VAR_IN_OUT 
       Axis : STRUCT
    Karl

  8. #8
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von gravieren Beitrag anzeigen
    Code:
    VAR_IN_OUT 
       Axis : STRUCT
    Einmal Achse und einmal Axis, ich denke nicht das Simatic selber Variablen übersetzt

  9. Folgender Benutzer sagt Danke zu marlob für den nützlichen Beitrag:

    vierlagig (08.05.2008)

  10. #9
    Registriert seit
    10.05.2005
    Beiträge
    1.996
    Danke
    220
    Erhielt 233 Danke für 204 Beiträge

    Standard

    Stimmt


    VAR_IN_OUT
    Achse : STRUCT



    Achse := "DB_M_Axis".Ax

    Bei Maus oberhalb wird aus "DB_M_Axis".Ax --> P#DB1.DBX0.0
    Karl

  11. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok ist klar, da wird ein Pointer übergeben das Format ist dann so, wie von mir oben beschrieben. Aber Achtung, das ist kein Any sondern ein Pointer, die sind Pointer ist kürzer. Das ist etwas problematisch bei Siemens, man muß wissen, was da übergeben wird, um das dann richtig auseinander zu legen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. C++ Code
    Von rabit im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 03.01.2010, 10:42
  2. SCL code
    Von awl-scl im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 14.01.2008, 17:02
  3. Code erklären
    Von ottopaul im Forum HMI
    Antworten: 1
    Letzter Beitrag: 04.04.2007, 15:28
  4. AWL-code
    Von Anonymous im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 09.11.2005, 16:48
  5. SMD Code Tabelle
    Von Josef Scholz im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 23.06.2003, 20:53

Lesezeichen

Berechtigungen

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