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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Messwerte einlesen und abspeichern.

  1. #1
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo erstmal,

    ich hab folgendes Problem:

    Ich möchte Messwerte, welche mir ein PEW 528 liefert abspeichern und dies ca. alle 3 Sekunden. Grund dafür ist die Aufnahme einer Temperaturkurve. Mit einem Thermistor wird die Temperatur des Wassers gemessen und über Profibus an die S7-400 als ADC 13-Bit Wert weitergegeben. Bei einem vorher eingestellten Wasserpegel wird die Heizung per E0.0 eingeschaltet. Nachdem die Heizung eingeschaltet wurde sollen alle 3Sekunden das PEW 528 eingelesen werden und der Messwert z.B. in einem Datenbaustein nacheinander hinterlegt werden.

    Wie kann ich das am besten realisieren?

    mfg Tino
    Zitieren Zitieren Messwerte einlesen und abspeichern.  

  2. #2
    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

    Willst du das in AWl oder SCL machen?

    Such bei AWL auf jeden Fall mal hier im Forum zuerst unter "indirekter Adressierung" um dich mal grundlegend damit vertraut zu machen.

    Hier mal ein kleiner Vorgeschmack:

    http://www.sps-forum.de/showpost.php...89&postcount=3

    läuft nur andersherum !

    PS: Und schau mal in die FAQ unter "Pointer Zeiger FIFO LIFO" und "Index in S7 AWL"

    Einfacher geht das in SCL, da legst du ein Array an und kannst auf die ArrayElemente mit einem einfachen Index zugreifen, in etwa, wie man das aus VB und Delphi kennt.
    Geändert von Ralle (29.05.2007 um 18:18 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
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Ein weiterer Ansatz wäre auch : http://www.sps-forum.de/showthread.php?t=13485

  4. #4
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Willst du das in AWl oder SCL machen?

    Such bei AWL auf jeden Fall mal hier im Forum zuerst unter "indirekter Adressierung" um dich mal grundlegend damit vertraut zu machen.

    Hier mal ein kleiner Vorgeschmack:

    http://www.sps-forum.de/showpost.php...89&postcount=3

    läuft nur andersherum !
    indirekte Adressierung ist mir schon ein Begriff. Ich möchte es in AWL programmieren. Nur funktioniert es so wie ich es habe nicht. Darum wollte ich mir hier Anregungen holen oder Ratschläge was ich wohl falsch gemacht habe.

    Ich rufe meinen FB1 im OB1 auf. Mein FB1 beinhaltet folgendes:

    Code:
    U M 0.0 // nach 3 Sek wird das Merkerbit gesetzt
    SPBN M001
    CLR 
    L PEW 528 // PEW gibt Werte zwischen 7677 und 880 als 13 Bit wieder
     
    T MD 20
    R M 0.0
    CALL FC 1
    Messwerte:=MD20
    M001: NOP 0
    Im FC 1 steht folgendes:

    Code:
    AUF DB 10
    L MW 42
    T #n
    L 1600
    L #n
    >I 
    SPB m1
    L 0
    T #n
    m1: T MW 42
    SLD 3
    T MD 24
    L MD 20
    T DBD [MD 24]
    L #n
    + 4
    T #n
    T MW 42

    Auf den Bildern sieht man nochmal alle Einstellungen
    Angehängte Grafiken Angehängte Grafiken
    Geändert von tino2512 (29.05.2007 um 20:15 Uhr)

  5. #5
    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

    Wo hast du den Code her?
    Sieht ein wenig aus, als ob ein Teil davon aus einem S5-Programm stammt.
    Hab leider im Moment kein Step7 zur Hand, also mal in aller Kürze und ungetestet :

    U M 0.0 // nach 3 Sek wird das Merkerbit gesetzt
    SPBN M001

    L PEW 528 // PEW gibt Werte zwischen 7677 und 880 als 13 Bit wieder
    T MD 20 //warum eigentlich in ein MD, ein 13-Bit-Wert wird dadurch nicht genauer, soll es ein Real sein, dann wandeln!
    //Also besser
    ITD
    DTR
    T MD20 //nun ist es eine Real

    SET //Sicher ist Sicher, damit M0.0 auch zurückgesetzt wird, was sollte das CLR bei dir???
    R M 0.0
    CALL FC 1
    Messwerte:=MD20
    M001: NOP 0

    Im FC 1:

    AUF DB 10
    L 400
    L MW 42 //hier merkst du dir die Position, besser als INOUT im FC1 definieren und dann dort ranschreiben
    >I
    SPB m1
    L 0
    m1: NOP 0
    T MW 42
    ITD //der Vollständigkeit halber
    L 4 //1 Real ist 4 Byte lang
    * D
    SLD 3 //in das Pointerformat überführen
    //statt dem Roten könnte man auch einfach
    //SLD 5
    //schreiben, erfüllt den gleichen Zweck
    LAR 1 //ins Adressregister 1 laden
    L Messwerte
    T DBD [AR1, P#0.0]
    L MW42
    L 1
    +I
    T MW 42

    Du solltest also statt MW42 eine INOUT-Variable Zaehler als INT im FC1 definieren und diese statt MW42 nehmen, Außen an den FC 1 schreibst du dann dein MW42 an den Parameter Zaehler ran.

    PS: Kai kann das sicher noch optimieren !
    Geändert von Ralle (29.05.2007 um 22:06 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

  6. #6
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Wo hast du den Code her?
    Also erstmal vielen vielen Dank für deine Hilfe. Ich hab den Code mal aus einer früheren Übungsaufgabe angepasst. Ich bin noch nicht ganz so geübt mit den Umgang mit Step7, da ich nicht jeden Tag damit arbeite sondern nur gelegentlich. Das wird sich hoffentlich bald ändern wenn ich meine Diplomarbeit schreibe. Leide bekommt man in der Hochschule nicht viel praktisches beigebracht, was ich sehr schade finde, da dies doch das Handwerkszeug sein sollte.
    Ich hab mal das Programm nach deinen Vorschlägen verbessert.

    FB1:
    Code:
             U     M      0.0                  // Merker 0.0 wird gesetzt wenn z.B. 3 Sekunden abgelaufen sind
          SPBN  M001
          L     PEW  528                    // PEW gibt Werte zwischen 7677 und 880 als 13 Bit wieder
          ITD   
          DTR   
          T     MD    20
          SET   
          R     M      0.0
          CALL  FC     1
           Messwerte:=MD20
           Zaehler  :=MW42
    M001: NOP   0
    FC1:
    Code:
          AUF   DB    10
          L     #Zaehler
          T     #n
          L     400
          <I    
          SPB   m1
          L     0
    m1:   NOP   0
          T     #Zaehler
          ITD   
          SLD   5
          LAR1  
          L     #Messwerte
          T     DBD [AR1, #P0.0]        //hier wird noch ein Fehler angezeigt
          L     #Zaehler
          L     1
          +I    
          T     #Zaehler
    Bei T DBD [AR1, #P0.0] wird mir ein Fehler angezeigt. Messwerte hab ich auch als in_out Variable im FC1 deklariert.
    Testen kann ich das Programm erst am Donnerstag in der Hochschule.
    Ausserdem hätte ich gerne gewußt, mit welchem Programm ich daheim auch Ein- und Ausgänge simulieren kann. Und woher ich das bekomme.

    mfg Tino
    Geändert von tino2512 (29.05.2007 um 21:58 Uhr)

  7. #7
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hier noch ein Bild vom FC1
    Angehängte Grafiken Angehängte Grafiken

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

    #Zaehler als INOUT im FC 1 deklarieren und im OB1 am FC1 dann an den Parameter Zaehler MW42 ranschreiben. --> Quatsch, hast du ja gemacht

    T #n kannst du weglassen

    Ich hab noch einen Feholer drin:

    Richtig:

    Code:
     
          AUF   DB    10
          L     400              //Reihenfolge geändert
          L     #Zaehler
          >I                      //Abfrage geändert
          SPB   m1
          L     0
    m1:   NOP   0
          T     #Zaehler
          ITD   
          SLD   5
          LAR1  
          L     #Messwerte
          T     DBD [AR1, P#0.0]        //war #P0.0, was falsch ist!!!
          L     #Zaehler
          L     1
          +I    
          T     #Zaehler
    Geändert von Ralle (29.05.2007 um 22:10 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

  9. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    tino2512 (29.05.2007)

  10. #9
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von tino2512 Beitrag anzeigen
    Bei T DBD [AR1, #P0.0] wird mir ein Fehler angezeigt.
    Ich denke ich hab den Fehler selber erkannt.

    Müsste heißen

    T DBD [AR1, P#0.0]

    oder doch besser? P#4.0
    Da doch der Zähler in der Deklarationsansich die Adresse 4.0 hat?????

  11. #10
    Registriert seit
    16.08.2006
    Beiträge
    86
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    sorry du warst doch schneller im Fehler finden

Ähnliche Themen

  1. Werte Abspeichern
    Von mfg_mr.e im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 17.06.2011, 20:57
  2. Version im DB abspeichern (CPU S7)
    Von Promoter im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.01.2009, 00:13
  3. Fehler beim Abspeichern CPU 312
    Von 1schilcher im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.05.2007, 09:47
  4. Rezepte von OP7 in CPU abspeichern
    Von Bengel im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 25.08.2006, 18:03
  5. messwerte in db
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.09.2005, 14:17

Lesezeichen

Berechtigungen

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