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

Ergebnis 1 bis 9 von 9

Thema: DB auslesen

  1. #1
    Registriert seit
    19.07.2008
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vorab - ich habe rauf und runter gesucht im Forum, aber als absoluter S7 Einsteiger kann ich mit speziellen Lösungen leider (noch) nichts anfangen
    Mein Problem:
    Ich habe einen DB1 mit 23 Werten (eine Erweiterung ist denkbar).
    Alle 2 Sekunden soll nun 1 Wert aus dem DB ausgelesen werden (Word) und an ein Ausgangswort übergeben werden (AW0) und dort 2 Sekunden anliegen, ehe der folgende Wert aus dem DB ausgelesen wird und auf das AW geschrieben wird.
    Wenn alle 23 Werte gelesen und geschrieben wurden, soll der Zyklus wieder von vorne beginnen.

    Also ich bin in meinen Überlegungen bei einem Pointer angekommen, der alle 2 Sekunden weiter rückt auf das nächste Word im DB. Eventuell kriege ich sogar noch eine simple Schleife in AWL zusammengebaut, obwohl AWL so gar nicht mein Ding ist, aber wie realisiere ich die 2 Sekunden Wartezeit ohne großen Aufwand und WIE lese ich die Werte aus dem DB aus??

    Im Prinzip soll ein Bitmuster, welches im DB hinterlegt ist, auf das Ausgangswort übertragen werden.

    In meiner altbewährten OMRON-SPS wäre das für mich jetzt kein so großes Problem, aber da geht das eben VÖLLIG anders...
    Hat jemand eine Idee, oder kann es mir vielleicht sogar nachvollziehbar dokumentiert in AWL zeigen?
    Zitieren Zitieren DB auslesen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Pointeradressierung ist im FAQ des Forums sehr gut beschrieben, schau da mal rein.
    Für Schleifen nutzt man den LOOP-Befehl, das findest du sehr gut in der Step7-Hilfe, also Baustein in Step7 auf, LOOP eingeben, Doppelklick darauf mit der Maus und F1.
    Damit hättest du das Rüstzeug, um erst einmal zu starten.
    Bei Problemen mit der Umsetzung kannst du hier deinen Code posten und Fragen stellen, da wird dir garantiert recht fix geholfen.

    PS: Hier mal eine Anregung aus dem Forum: Programmschleife

    Die Suche mit dem Stichwort "LOOP" ergibt auch so einige Hinweise.
    Geändert von Ralle (26.08.2013 um 12:19 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

  3. #3
    spezies-8472 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ralle - danke für den Tipp, aber - fasse es bitte nicht als frech auf!! - auch für den Mod gilt: wer lesen kann...

    Ich habe ja oben geschrieben, dass ich eben NICHTS mit den Beispielen anfangen kann, ich habe Pointer, Loops usw. und auch Beispiele gefunden, aber ICH VERSTEHE sie nicht, da mir einfach das Verständnis für AWL fehlt und ich begreife diese Erklärungen einfach nicht. Tut mir sehr leid, wenn ich sie verstehen UND noch dazu umsetzen könnte, müsste ich nicht fragen, aber eben DAS ist mein Problem - ich kriege in AWL nichts zusammen und auch die Hilfe von Siemens geht offenbar über meinen Horizont! Ich kann Dir das Problem mit ner OMRON-SPS recht schnell schreiben, aber leider MUSS es diesmal Siemens sein...
    Aber okay, wenn mir nur geholfen werden kann, wenn ich schon was fertiges habe, dann bin ich vielleicht doch falsch hier, dann sorry für die Störung!

  4. #4
    Registriert seit
    04.01.2013
    Ort
    Hessen
    Beiträge
    44
    Danke
    1
    Erhielt 13 Danke für 8 Beiträge

    Standard

    Hallo spezies,

    die zwei Sekunden Wartezeit kannst du mit einem einfachen Timer realisieren der nur jeweils einen Zyklus Highsignal liefert und automatisch neu startet (oder einem Sekundetakt der hochgezählt und verglichen wird). Die Werte aus dem DB kannst du mit einem Lesebefehl bekommen und an das Ausgangswort Transferieren. Wofür du eine Schleife benutzen willst ist mir nicht ganz klar.

    Gruß

    Volker

  5. #5
    spezies-8472 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    HALLO V W,
    na ganz einfach - im DB sind 23 Worte mit verschiedenen Werten belegt. Ich will das 1. Wort auslesen und aufs AW 0 schreiben
    also wenn da im 1. DBW bspw. 10101010 10101010 steht, sollen auch die Ausgänge A0.0-A1.7 mit 10101010 10101010 beschrieben werden...
    nach 2 Sekunden soll das 2. DBW gelesen werden, in dem vielleicht 00110011 00110011 steht und damit die Ausgänge beschrieben werden
    nach weiteren 2 Sekunden das 3. DBW, dann das 4. und so fort und nach Wort 23 startet alles wieder bei DBW1...
    Das Programm soll möglichst kurz und kompakt werden.
    Natürlich kann ich jedes einzelne Wort im DB mit nem MOVE auslesen, keine Frage, aber dann habe ich 23x MOVE, was ich vermeiden möchte.
    Wenn der DB demnächst auf 123 Werte vergrößert wird, ändere ich in der Schleife den Zähler und gut - in FUP muss ich 100 neue MOVE zufügen.

    Wenn es natürlich eine andere Lösung der indirekten Programmierung zum Auslesen des DB gibt, so würde die mich auch interessieren, nur weiß ich nicht, ob das in S7 überhaupt geht!?
    Und wie ich mir nen 2-Sekundentakt in FUP realisiere ist schon klar, sorry, habe ich oben nicht dazu geschrieben.
    Da ich davon ausgehe, dass so eine Pointerprogrammierung nur in AWL möglich ist, sollte die Datenausgabe, also das Schreiben aufs AW0 und auch die Wartezeit für den nächsten Schleifendurchlauf in AWL erfolgen - würde zumindest Sinn machen.

    Leider komme ich mit "Probiere mal nen Loop, hier sind sehr gute allgemeine Beispiele im Forum zu finden..." nicht weiter, denn das habe ich schon versucht. Mir fehlen da offenbar grundlegende Kenntnisse in der AWL Programmierung und ich kriege kein halbwegs laufendes Programm zusammen. Ich kann mir ein Beispiel kopieren und das wars dann schon... wenn es nicht läuft, kann ich bisher nicht nachvollziehen, was ich falsch mache.

    Trotzdem Danke für Deine Infos!

  6. #6
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Code:
          UN    M      2.1
          UN    M      2.0                  // Neustartmerker
          L     S5T#2S
          SE    T      1
    
          U     T      1
          =     M      2.1
    
          SPBN  _101
          L     MW   100
          L     1
          +I    
          T     MW   100
    
          L     23                          // deine Länge
          >=I   
          SPBN  _101
          L     0
          T     MW   100
    _101: NOP   0
    
          L     MW   100
    
          SLD   4
          LAR1  
    
          AUF   DB     1                    // dein DB
          L     DBW [AR1,P#0.0]
          T     AW     0                    // dein Ausgangswort

  7. Folgender Benutzer sagt Danke zu Dotzi für den nützlichen Beitrag:

    spezies-8472 (26.08.2013)

  8. #7
    spezies-8472 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Dotzi - das ist schon alles? Wow, das muss ich mir mal in Ruhe zu Gemüte führen! Auf jeden Fall vielen Dank für Deine Mühe. Irgendwie ist es echt hilfreich, wenn man in AWL denken kann
    So wirklich verstehen tue ich es nicht, aber es funktioniert. Dankeschön!

  9. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von spezies-8472 Beitrag anzeigen
    Hallo Ralle - danke für den Tipp, aber - fasse es bitte nicht als frech auf!! - auch für den Mod gilt: wer lesen kann...
    Aber nein, ich bin halt nur zu dumm zum lesen, dafür bist du gerade auf meiner Ignorierliste gelandet!
    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

  10. #9
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    der verständlichkeit halber für einen laien sollte man das besser anders schreiben

    Code:
          L     MW   100
          SLD   4
          LAR1  
          AUF   DB     1                    // dein DB
    Code:
    L MW 100
    L 2 //da wortzugriff
    *I //akku enthält nun die adresse
    SLD3 //pointer erzeugen
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. DB auslesen
    Von User1974 im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 29.07.2010, 23:59
  2. Datenbausteine auslesen
    Von poppypraun im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 05.02.2009, 17:39
  3. Daten auslesen
    Von SSX im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 05.12.2006, 08:47
  4. OP 37 auslesen!
    Von RobRoy94 im Forum HMI
    Antworten: 4
    Letzter Beitrag: 16.03.2006, 18:28
  5. IP Adressen auslesen
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 13.10.2005, 09:00

Stichworte

Lesezeichen

Berechtigungen

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