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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Arrays in S7 schreiben

  1. #11
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wie würde mann so was in fup machen?

  2. #12
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Gar nicht!
    Zitat Zitat von paule Beitrag anzeigen
    indirekte adressierung geht nur mit awl oder scl
    Gruß
    Michael

  3. #13
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Hi,wenn ich diese Schleife benutzen will bekomme ich immer Syntax Error, was mache ich falsch?
    // Schleifen Voreinstellung
    L L#0 // Schleifen anfangswert laden
    T #DIT_Schleifenwert // Schleifenanfangswert laden
    L L#1234 // Letzte Adresse zum bearbeiten
    T #DIT_Schleifenende // Schleifenende speichern// Schleifenausführung
    RS50: L DBD [#DIT_Schleifenwert] // DB-Bytewert zurücksetzen// --- Aktion mit den geladenen Wert ---// --- Ende ---// Kontrolle auf Schleifenende SET // VKE-1 laden L #DIT_Schleifenwert // Schleifenanfangswert laden L L#32 // Wert für Adressanpassung laden +D // Adresse anpassen T #DIT_Schleifenwert // Schleifenanfangswert speichern SRD 3 // Adresse für Schleifenende Kontrolle anpassen L #DIT_Schleifenende // Schleifenende laden <D // Wenn noch nicht alle Werte bearbeitet, dann
    SPB RS50 // Sprung für erneuten Schleifendurchlauf
    Der Fehler tritt bei "RS50: L DBD" auf
    Geändert von dentech (29.06.2012 um 08:58 Uhr)

  4. #14
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von dentech Beitrag anzeigen
    Hi,wenn ich diese Schleife benutzen will bekomme ich immer Syntax Error, was mache ich falsch?

    Der Fehler tritt bei "RS50: L DBD" auf
    Wie bzw als was ist die Variable #DIT_Schleifenwert deklariert?


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  5. #15
    Registriert seit
    29.10.2010
    Beiträge
    553
    Danke
    57
    Erhielt 39 Danke für 37 Beiträge

    Standard

    Die ist als int deklariert

  6. #16
    Registriert seit
    02.02.2012
    Ort
    Kaarst
    Beiträge
    126
    Danke
    10
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Ein Pointer ist aber grundsätzlich 32bit lang und zeigt die Startadresse in Bit an ...

  7. #17
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Zitat Zitat von dentech Beitrag anzeigen
    Die ist als int deklariert
    Code:
    RS50: L     DBD [#DIT_Schleifenwert]
    W=Word / Int
    D = Doppel Word / Int

  8. #18
    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

    Du mußt die Variable #DIT_Schleifenwert als Temp deklarieren und besser als DWord.

    Code:
    // Schleifen Voreinstellung
          L     L#0                         // Schleifen anfangswert laden
          T     #DIT_Schleifenwert          // Schleifenanfangswert laden
          L     L#1234                      // Letzte Adresse zum bearbeiten
          T     #DIT_Schleifenende          // Schleifenende speichern// Schleifenausführung
    RS50: L     DBD [#DIT_Schleifenwert]    // DB-Bytewert zurücksetzen
    // --- Aktion mit den geladenen Wert ---
    // --- Ende ---
    // Kontrolle auf Schleifenende
          SET                               // VKE-1 laden 
          L     #DIT_Schleifenwert          // Schleifenanfangswert laden 
          L     L#32                        // Wert für Adressanpassung laden 
          +D                                // Adresse anpassen 
          T     #DIT_Schleifenwert          // Schleifenanfangswert speichern 
          SRD   3                           // Adresse für Schleifenende Kontrolle anpassen
          L     #DIT_Schleifenende          // Schleifenende laden
          <D                                // Wenn noch nicht alle Werte bearbeitet, dann
          SPB   RS50                        // Sprung für erneuten Schleifendurchlauf
    Code stellst du bitte mit den Code-Tags dar, wer soll das sonst lesen können?
    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

  9. #19
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.184
    Danke
    923
    Erhielt 3.290 Danke für 2.659 Beiträge

    Standard

    Was sagt die Step7-Hilfe zu AWL beim Thema "Speicherindirekte Adressierung"? (praktischerweise mit F1 aufrufbar)

    Pointer im Wordformat können nur für die speicherindirekte Adressierung von T, Z, DB, DI, FB, FC benutzt werden.
    Für die speicherindirekte Adressierung von E, A, M, L, DIx, DBx, PEx, PAx müssen Pointer im Doppelwortformat verwendet werden, welche die genaue Adresse eines Bits, Bytes, Worts oder Doppelworts angeben: P#Byte.Bit . Bei Pointern auf Byte, Word oder Doppelword muß die Bitadresse 0 sein.

    #DIT_Schleifenwert muß also ein DWORD oder DINT sein.

    Wenn man versucht, das originale Programmbeispiel zu verstehen, dann sieht man höchstwahrscheinlich auch, daß das Programmbeispiel mit +D und >D arbeitet ...


    Zitat Zitat von Verpolt Beitrag anzeigen
    Code:
    RS50: L     DBD [#DIT_Schleifenwert]
    W=Word / Int
    D = Doppel Word / Int
    Der Datentyp von #DIT_Schleifenwert hat nichts mit dem DBD zu tun, auch DBW[#DIT_Schleifenwert] erfordert einen Pointer im Doppelwortformat ...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #20
    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
    Auch wenn ich es schon geschrieben habe: In einem FB muss #DIT_Schleifenwert als Temp deklariert werden. Eine STAT führt ebenfalls zu einer Fehlermeldung!
    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. Arrays in PC Worx
    Von Daywalker im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 13.08.2010, 15:01
  2. 2 Arrays aus 2 DBs vergleichen
    Von Günni1977 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.12.2008, 17:14
  3. dynamische Arrays?
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.05.2008, 16:06
  4. Pointer und Arrays
    Von SolSna im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.02.2008, 20:16
  5. arrays mit udt...
    Von Jochen Kühner im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 01.12.2005, 14:27

Lesezeichen

Berechtigungen

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