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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: S7 315DP2 Daten durchleiten

  1. #21
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    L L#4 lädt eine DINT 4.
    L P#4.0 ist ja nicht verkehrt, das Ganze war für dich als Erklärung gedacht.
    Wie lange steht denn der "Trigger Keyence" an? Solange der da ist, wackelt dein Programm immer durch die Schleife. Das führt u.U. zu einer Zykluszeitüberschreitung, falls der Trigger länger ansteht, als die max. Zykluszeitüberwachung (siehe Hardwarekonfig) dies erlaubt. Daher schau doch mal in den Diagnosepuffer der SPS, was die genaue Stopursache ist, dazu ist der ja prima geeignet. Die Stelle der zuletzt geschriebenen Daten mußt du dir schon selber merken. Daher rechne ich im allgemeinen nicht mit den Pointern direkt, sondern zähle einen Index hoch, aus welchem ich dann jeweils den Pointer berechne. Mit dem Index kann man sich ganz gut merken wo der letzte Schreibzugriff stattgefunden hat. Geht auch mit dem Pointer, dieser ist aber nicht so anschaulich, wie ein Index aus einer Int.
    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

  2. #22
    Jetfix ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.08.2008
    Beiträge
    20
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Ralle,

    Ja klar, aber funktioniert ja beides, ob Pointer direkt laden oder so...
    und auf diesem Wege präge ich mir das besser ein und kann dann wenn erforderlich den flexibleren Weg gehen (Volker`s Fred)

    Danke dann ist klar warum die SPS abgekraxelt ist...
    Die Zykluszeitüberwachung stand auf 150ms...

    Habe das jetzt Zyklusunabhängig aufgebaut und der Hinweg funktioniert einwandfrei!
    Code:
      U     "Trigger Keyence"
          SPBN  LOW                         //Wenn VKE = 0 ->Sprungbefehl
    
          L     MW    38                    //Vergleicher um im ARRAY of REAL fortlaufend zu pointen
          L     0
          >I    
          SPB   JUMP                        //Überspringt den Pointer auf REAL Adresse 0-3Byte im DB[X]
    
          L     L#0                         //Läd eine DINT 0
          SLD   3                           //Verschieben um 3 Bit nach links erzeugt Pointer
          T     MD    40                    // Transferiere Pointer in MD 40
    
    
    JUMP: L     1                           //Läd Integere Ganzzahl 1 für DB
          T     MW    24                    //und transferiert sie in MW 24
    
          U     M      6.6
          SPBN  TIME                        //Wenn Trigger Meßwert nicht kommt überspringe Transfer
          AUF   DB [MW 24]                  //DB Nummer 1 (Integere aus MW24), für Programmerweiterung - flexibel
    
    
          L     MD    34                    // Ergebnis aus Berechnung NW1
          T     DBD [MD 40]                 //ARRAY of REAL, Anfang bei Byte 0
    
          L     L#4                         //Läd eine DINT 4
          SLD   3                           //Verschieben um 3 Bit nach links erzeugt Pointer
          L     MD    40                    //Transferiert Pointer in MD
          +D                                //addiert die Bytes auf MD 40 (eine REAL Adresse rauf)
          T     MD    40                    //transferiert die neue Adresse in MD 40
    
          L     MW    38                    //Schleifenzähler mit MW
          L     1
          +I    
          T     MW    38
    
    
    
    TIME: NOP   0                           //Verschleifen mit Kette / TIME abwarte bis Impuls Messwert kommt
    LOW:  NOP   0                           //Überspringen des Ablaufes
    Und das ist mein Rücksetzweg, sprich ich überschreibe das MW für den Schleifenzähler und das MD sprich den Pointer einfach mit 0 aus einem nicht benutzten MW bzw. MD.
    Weiß nicht ob man das so macht und ob es da elegantere Wege gibt aber es funtioniert...
    Code:
      U     "Trigger Keyence"
          FN    M      6.7
          SPBNB _003
          L     MW    45
          T     MW    38
    _003: NOP   0
    
    neues NW
      U     "Trigger Keyence"
          FN    M      6.7
          SPBNB _005
          L     MD    47
          T     MD    40
    _005: NOP   0
    Geändert von Jetfix (04.10.2008 um 14:44 Uhr) Grund: er sah das Licht und es hatte 100W

  3. #23
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Sieht ja gleich viel besser aus und funktioniert offensichtlich auch.

    Und das ist mein Rücksetzweg, sprich ich überschreibe das MW für den Schleifenzähler und das MD sprich den Pointer einfach mit 0 aus einem nicht benutzten MW bzw. MD.
    Weiß nicht ob man das so macht und ob es da elegantere Wege gibt aber es funtioniert...
    Warum aus einem nicht benutztem Merkerwort? Du kannst doch auch einfach 0 laden und in das MD transferrieren.

    Code:
    L L#0
    T MW 38
    T MD 40
    Und für den Flankenmerker nicht 2x M6.7 verwenden.
    Ok, mit dem Code oben brauchst du nur noch einen Flankenmerker, aber trotzdem.

    PS: Ich glaube, das wurde ja gerade in einem anderen Thread geklärt.
    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

  4. #24
    Jetfix ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.08.2008
    Beiträge
    20
    Danke
    19
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hast recht Ralle!

    Ist viel einfacher...
    Dank dir!
    Habe es jetzt abgeändert:
    Code:
     U     "Trigger Keyence"
          FN    M      6.7
          SPBNB Rev1
          L     L#0
          T     "Pointer"
          T     "Loop counter"
    Rev1: NOP   0
    Ich möchte jetzt noch eine Überwachung der Schrittkette Auto basteln, bei der die Anzahl der Fehler die am Tag auftreten in einen DB gespeichert werden. Mit MW hier reicht ja Intere... hoffe ich doch mal schwer *g*
    Wollte mit dem OB 35? agieren... jeden Tag einen Alarm der mir den Pointer einen rauf setzt und in die nächste Zeile des Arrays die Fehleranzahl schreibt... Kann dann auch von der IT ausgelesen werden...
    Werd das jetzt mal probieren..

    Ich habe für die Schrittkette, Hand und für OB1 einen Grafcet erstellt.
    Aber was mache ich für meinen FC mit Datenhandling? Einen PAP?
    Darf man das? Macht man das so?

    Ich bin zwar ein paar mal kurzzeitig verzweifelt aber das macht richtig Spass

Ähnliche Themen

  1. CAD Daten auf das HMI
    Von teddy im Forum HMI
    Antworten: 2
    Letzter Beitrag: 16.11.2010, 05:12
  2. Daten aus PC in SPS
    Von Outrider im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.06.2010, 13:45
  3. CNC Daten in SPS
    Von Fluffi im Forum Programmierstrategien
    Antworten: 11
    Letzter Beitrag: 27.03.2008, 21:44
  4. Daten zur TP
    Von Anonymous im Forum HMI
    Antworten: 5
    Letzter Beitrag: 26.07.2005, 21:54

Lesezeichen

Berechtigungen

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