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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Puffer beschreiben

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

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo an alle!

    Dies ist nun mein letzter Teil der Aufgabe und er beschäftigt sich mit dem Schreiben von Messwerten in den Puffer:


    So sieht mein OB1 aus, wobei dieser Fehler meldet:
    Code:
           U    "PufferFrei"                 // Puffer ist freigegeben
           UN   "PufferVoll"                 // Puffer ist nicht voll
           U    "NeuerMW"                    // Neuer Messwert
           FP   "FlankeNeuerMW"              // liegt als positive Flanke an
           CC   "SchreibePuffer"
             NeuerWert:="AblNeuMW"
             Pufferlaenge:="AnzahlWerte"
             PufferVoll:="PufferVoll"
             PufferFrei:="PufferFrei"
             Ptr:="Pointer"
    Er nimmt die "Parameter" nicht an, die ich "SchreibePuffer" mitgeben will. Ändere ich CC in CALL, so wird es fehlerfrei übernommen.
    Das Programm (WinSPS) meldet: "Fehler:Befehl ist nicht bekannt" in der Zeile mit NeuerWert:="AblNeuMW". Wenn ich die Zeile lösche, so folgt die nächste Zeile mit gleichem Fehler.
    Zudem erscheint wenn ich in der Zeile bin: "Der FB/FC "?? 637" ist nicht mehr vorhanden!" -> Ich habe keine Ahnung was der FB/FC ?? 637 sein soll. Ich arbeite nur mit 43-49.

    Was mache ich denn da falsch? -> Somit kann ich auch nicht den FC testen.

    FC:
    Code:
           L    #Ptr
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    16
           +I
           T    #Ptr
    
           L    #Ptr
           L    #Pufferlaenge
           >=I
           SPB  VOLL
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Stimmt zumindest der FC theoretisch oder sind da Fehler oder Unschönheiten enthalten?

    Gruß -PHANTOMIAS-
    Zitieren Zitieren Puffer beschreiben  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.866
    Danke
    78
    Erhielt 806 Danke für 549 Beiträge

    Standard

    da fehlt ein sld3

    guckst du hier
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

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

    Standard

    Vielen Dank für deine Antwort.
    Ich habe mir deinen Link nun ein paarmal durchgelesen, jedoch muss ich sagen, dass ich es nicht verstehe was hier gemacht wird.
    Soll ich bei mir schreiben:
    Code:
           L    #Ptr
           SLD            3
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    16
           +I
           T    #Ptr
    
           L    #Ptr
           L    #Pufferlaenge
           >=I
           SPB  VOLL
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Aber wie gesagt, verstehen tue ich es nicht. Ist das ein Muss oder nur eine Verschönerung?

    Gruß -PHANTOMIAS-

  4. #4
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.728
    Danke
    729
    Erhielt 1.161 Danke für 972 Beiträge

    Standard

    Zitat Zitat von PHANTOMIAS Beitrag anzeigen
    ...
    [/code]Aber wie gesagt, verstehen tue ich es nicht. Ist das ein Muss oder nur eine Verschönerung?

    Gruß -PHANTOMIAS-
    Das muss schon so. Lese mal den Link von Volker durch. Vor allem diesen Absatz

    Zitat Zitat von plc_tippser Beitrag anzeigen
    ...
    Schon besser. Aber warum schieben wir 3 nach links?
    Das liegt am Aufbau des Pointer. vereinfacht: Byteadress(16Bit).Bitadress(3Bit). (genauerers im Bild im Anhang)
    Die 30 liegt also durch das schieben in der Byteadresse. die Bitadresse ist 0.
    ...

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

    Standard

    Okay, habe nochmal die Dokumentation durchwälzt, das SLD 3 ist klar, das schiebt den Inhalt von Akku1 3 Stellen nach links.
    Und es hat irgendwas mit dem Verschub zu tun, dass ich korrekt darauf zugreife.

    Stimmt das so wie es oben im Code-teil notiert habe?

    Würde das so laufen wie in der Aufgabenstellung gefordert falls mein OB1 mitspielen würde?

    Gruß -PHANTOMIAS-

  6. #6
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.728
    Danke
    729
    Erhielt 1.161 Danke für 972 Beiträge

    Standard

    Zitat Zitat von PHANTOMIAS Beitrag anzeigen
    ...
    Code:
           U    "PufferFrei"                 // Puffer ist freigegeben
           UN   "PufferVoll"                 // Puffer ist nicht voll
           U    "NeuerMW"                    // Neuer Messwert
           FP   "FlankeNeuerMW"              // liegt als positive Flanke an
           CC   "SchreibePuffer"
             NeuerWert:="AblNeuMW"
             Pufferlaenge:="AnzahlWerte"
             PufferVoll:="PufferVoll"
             PufferFrei:="PufferFrei"
             Ptr:="Pointer"
    ...
    Also, um dir helfen zu können, solltest du schon angeben wie deine Variablen und Eingänge parametriert sind bzw. von welchem Typ sie sind

    Zitat Zitat von PHANTOMIAS Beitrag anzeigen
    FC:
    Code:
          
           L    #Ptr
           LAR1
           L    #NeuerWert
           T    MW [AR1,P#0.0]
    
           L    #Ptr
           L    16
           +I
           T    #Ptr
    
           L    #Ptr
           L    #Pufferlaenge
           >=I
           SPB  VOLL
    
    VOLL  :NOP  1
           S    #PufferVoll
           R    #PufferFrei
    Stimmt zumindest der FC theoretisch oder sind da Fehler oder Unschönheiten enthalten?
    Das rote wird zwar funktionieren, ist aber ziemlich wertfrei

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

    Standard

    Stimmt!

    Der Fehler:


    FC:


    Symboltabelle:



    Wertfrei? Hmm, ich sollte vielleicht nach SPB VOLL in der nächsten Zeile ein BE notieren?

    Gruß -PHANTOMIAS-

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Um beurteilen zu können, was an deiner Routine läuft und korrekt ist und was nicht würde ich gerne wissen (sorry Volker), welchen Wert du in Pointer übergibst ... also, was steht als Startwert da drin ?
    Ist der Inhalt P#40.0 um MW40 zu adressieren ? Dann wäre das mit SLD3 falsch ...

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

    Standard

    Du meinst was L #Ptr hat?

    Das habe ich im anderen Forums-Beitrag mit Aufgabenstellung (http://www.sps-forum.de/showthread.php?t=19247).
    Hier nochmal der Aufgabentext zum Initialisieren:


    Und das mache ich beim Initialisieren:
    Code:
            L    P#       40.0
           T    "Pointer"
           S    "PufferFrei"
           R    "PufferVoll"
    Brauche ich dann das SLD 3 nicht bei mir zu integrieren?

    Gruß -PHANTOMIAS-

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... genau das war die Frage ...
    Dann sehe ich an folgender Stelle ein Problem :
    Code:
          L    #Ptr
           L    16  // hier könntest du auch L P#2.0 schreiben - ist schöner
           +I  // <- hier sollte +D stehen
           T    #Ptr
    Code:
           L    #Ptr    // keine Format-Übereinstimmung
           L    #Pufferlaenge
           >=I
           SPB  VOLL
    Im 2. Block vergleichst du einen Pointer (DWORD) mit einem INT-Wert. Hier muss natürlich das Format passen. Pufferlänge ist ja warscheinlich 5 (aber bestimmt nicht P#50).

    Gruß
    LL

Ä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
  •