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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Puffer beschreiben

  1. #11
    Registriert seit
    12.04.2008
    Beiträge
    30
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Okay, dann sieht der Code nun so aus:
    Code:
           L    #Ptr
           SLD            3
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    P#        2.0
           +D
           T    #Ptr
    
           L    #Ptr
           L    #Pufferlaenge
           >=I
           SPB  VOLL
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Muss das SLD 3 nun stehenbleiben oder muss es weggenommen werden?

    Da hast du recht, ich vergleiche hier ja Äpfel mit Birnen. Also was ich machen würde bzw. was ich mir denke, wobei ich nicht weiß wie man das in AWL macht:
    Pufferlaenge ist 5, das ist im Prinzip eine Konstante. Ich müsste 5*MW (also 5*2 Byte) nehmen und das in eine Hilfs-Variable des Typs DWORD speichern und dann vergleichen, oder?

    Gruß -PHANTOMIAS-

  2. #12
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Als erstes ... den SLD-Befehl benötigst du in diesem Fall natürlich nicht, da du den Wert ja schon im Pointer-Format übergibst ...

    Zitat Zitat von PHANTOMIAS Beitrag anzeigen
    Da hast du recht, ich vergleiche hier ja Äpfel mit Birnen. Also was ich machen würde bzw. was ich mir denke, wobei ich nicht weiß wie man das in AWL macht:
    Pufferlaenge ist 5, das ist im Prinzip eine Konstante. Ich müsste 5*MW (also 5*2 Byte) nehmen und das in eine Hilfs-Variable des Typs DWORD speichern und dann vergleichen, oder?
    Mein Ansatz wäre hier so ähnlich ...
    Du müßtest einen Ende-Pointer berechnen ... also Start-Pointer + Länge als Pointer.

  3. #13
    Registriert seit
    12.04.2008
    Beiträge
    30
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hmm, ich habe es nun mal fest gemacht, wobei ich dann auch keine #Pufferlaenge benötigen würde. Und eigentlich kann ich mir dann auch #EndePtr schenken und es ist recht sinnlos. Habe alles durchwälzt, weiß nicht wie ich das mittels AWL umsetzen soll.
    Code:
           L    #Ptr
           SLD            3
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    P#        2.0
           +D
           T    #Ptr
    
           L    P#       40.0
           L    P#       10.0
           +D
           T    #EndePtr
    
           L    #Ptr
           L    #EndePtr
           >=I
           SPB  VOLL
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Gruß -PHANTOMIAS-

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Ich verstehe deinen letzten Beitrag nicht ...
    auf jeden Fall hast du darin noch einen Fehler :
    Code:
           L    #Ptr
           L    #EndePtr
           >=I
           SPB  VOLL
    // hier fehlt noch die Alternativ-Behandlung !!! Sonst ist IMMER voll ...
    VOLL  :NOP  1
    Gruß
    LL

  5. #15
    Registriert seit
    12.04.2008
    Beiträge
    30
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo!

    Zu meinem letzten Beitrag:
    "Mein Ansatz wäre hier so ähnlich ...
    Du müßtest einen Ende-Pointer berechnen ... also Start-Pointer + Länge als Pointer."
    -> Ich weiß nicht wie ich das in AWL umsetzen soll.

    Okay, dann mache ich ein BE hin, denn das Rücksetzen des PufferVoll wird in einem anderen FC gemacht (Initialisierung)

    Code:
           L    #Ptr
           SLD            3
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    P#        2.0
           +D
           T    #Ptr
    
           L    P#       40.0
           L    P#       10.0
           +D
           T    #EndePtr
    
           L    #Ptr
           L    #EndePtr
           >=D
           SPB  VOLL
           BE
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Gruß -PHANTOMIAS-
    Geändert von PHANTOMIAS (14.04.2008 um 15:04 Uhr)

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    warum nicht so :
    Code:
           L    #Ptr
           SLD            3  // wird NICHT benötigt !!!
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    P#        2.0
           +D
           T    #Ptr
    
           L    P#       40.0
           L    P#       10.0
           +D
           T    #EndePtr
    
           L    #Ptr
           L    #EndePtr
           >=D
           SPB  VOLL
           SPA Ende
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
     
    Ende: Nop 0

  7. #17
    Registriert seit
    12.04.2008
    Beiträge
    30
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hmm, warum ein absoluter Sprung auf Ende, statt ein BE zu machen?
    Worin besteht der Vorteil?

    Hmm, aber mein eigentliches Problem ist immer noch dieser Teil:
    Code:
           L    P#       40.0
           L    P#       10.0
           +D
    Den habe ich so notiert, da ich nicht weiß wie man das "dynamisch" lösen kann. In #Pufferlaenge, welches ein int-Wert aufnehmen kann, steht die max. Anzahl der möglichen Werte, die aufgenommen werden sollen.
    Und #Pufferlaenge sollte ich ja irgendwie unterkriegen.

    Gruß -PHANTOMIAS-

  8. #18
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Dazu folgender Vorschlag :
    Code:
    L #Pufferlaenge
    L 2
    * I
    SLD 3
    L #Anfang_Pointer  // P#40.0
    +D
    T #EndePtr
    wie gefällt dir das ...?

  9. #19
    Registriert seit
    12.04.2008
    Beiträge
    30
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo.

    Vielen Dank für die Antwort.
    Hier muss dann das SLD 3 mit rein? Und der #EndePtr hätte bei Pufferlaenge 5 den Wert P #50.0 ?
    Ich dachte nämlich wenn ich auf P #40.0 10 addiere, dann würde der Zeiger P #41.2 sein, also 10 Bits aufaddiert und nicht Bytes. Zumindest habe ich das so in meinen Vorlesungsunterlagen stehen mit dem Beispiel:

    Code:
    L P #10.0
    L 5
    +I
    T #Zeiger // -> #10.5
    Kann aber gut sein, dass das so nicht stimmt, da man alle Vorlesungsinhalte mit Vorsicht genießen sollte

    Gruß -PHANTOMIAS-

  10. #20
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.719
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PHANTOMIAS Beitrag anzeigen
    Hallo.

    Vielen Dank für die Antwort.
    Hier muss dann das SLD 3 mit rein? Und der #EndePtr hätte bei Pufferlaenge 5 den Wert P #50.0 ?
    Ich dachte nämlich wenn ich auf P #40.0 10 addiere, dann würde der Zeiger P #41.2 sein, also 10 Bits aufaddiert und nicht Bytes. ...
    Durch das SLD 3 verschiebst du ja deinen Wert aus #Pufferlänge ja um 3 Stellen nach links. Und ein Pointer setzt sich so zusammen
    Byteadresse(16 Bit).Bitadresse(3Bit). Also steht nach dem schieben eine Null an der Bitadresse und du addierst Bytes.
    Ansonsten einfach noch mal hier lesen
    http://www.sps-forum.de/showthread.php?t=8887

Ähnliche Themen

  1. FIFO Puffer mit 32Bit
    Von Anonymous im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 22.06.2011, 18:58
  2. OP 177B Kurvenanzeige Puffer bitgetriggert
    Von The Dude im Forum HMI
    Antworten: 7
    Letzter Beitrag: 12.11.2010, 10:42
  3. E/A Puffer DB oder Merker
    Von Robot-Sun im Forum Programmierstrategien
    Antworten: 28
    Letzter Beitrag: 02.11.2008, 18:12
  4. Puffer Initialisierung
    Von PHANTOMIAS im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.04.2008, 22:14
  5. CP343-1 Advance / Libnodave Puffer voll?
    Von Hand im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 29.03.2007, 11:22

Lesezeichen

Berechtigungen

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