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

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

Thema: Maximalwert eines Analogwertes ermitteln und mitloggen

  1. #1
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    vorab…. danke an all diejenigen, die sich mit meinem Anliegen beschäftigen!!! Tausend DANK!!

    Ich habe bereits nach einer Lösung im Internet, besonders hier in unserem Forum geschaut, allerdings nichts gefunden, was mir direkt weiterhelfen konnte.
    Wie ihr aus dem Betreff entnehmen könnt habe ich ein Problem mit der Ermittlung eines Maximalwertes, der über einen bestimmten Zeitraum bzw innerhalb eines bestimmten Ereignisses ermittelt werden soll. Anschließend soll dieser Max- Wert in einem DB gespeichert werden.
    Diese ganze Prozedur soll sich beliebig oft (zB.: 100 Mal ) wiederholen um eine Optimierung an einer Anlage vornehmen zu können.
    Der Wert kommt von einem Analogsensor, der an einem Linearzylinder den verfahrenen Weg misst.
    Beim Überschreiten eines bestimmten Messwerten ( des Max- Wertes ) weiß die Anlage, dass ein Teil richtig aufgepresst wurde.

    Folgende Überlegung zur Ermittlung und zum Mitloggen des Maximalwertes:

    …. Ich hoffe ihr könnt damit etwas anfangen


    U "Starte_Messung" // Startsignal aus der Schrittkette... dauert nur kurz an
    FP #FP_merker // Flankenimpuls
    SPBN mk1 // Springe bedingt bei VKE=0 nach mk1
    L 0 // lade 0
    T #max_wert_temp // und schreibe diese in #max_wert_temp
    SPB mk2 // springe bedingt bei VKE=1 nach mk2

    mk1: L #PEW_IN // akt. Analogwert laden
    L #max_wert_temp // vorherigen Analogwert laden
    >I // Vergleiche auf >R
    SPBN mk2 // Springe wenn Akt. Wert kleiner // erneut akt. Analogwret laden
    TAK // tausche Akku 2 mit Akku 1 / Wert bereitstellen
    T #max_wert_temp // vorherigen Analogwert mit akt. Wert überschreibn

    mk2: NOP 1

    U "Ende_Messung" // wenn Maximalschwellwertmessung beendet
    SPBN mk3 // springe wenn Messung noch andauert

    L #DBNR_IN // DB- Nummer über INPUT einlesen
    T #Nr_DB // transferieren in TEMP
    AUF DB [#Nr_DB] // Datenbaustein mit DB-Nummer öffnen
    L P#0.0 // Zeigeradresse generieren
    T #zeiger // Adresse in "#zeiger"- transferieren

    L #max_wert_temp // lade den Maximalmesswert
    T DBB [#zeiger] // transferiere Wert in DB an Zeigeradresse
    L #zeiger // lade erneut Zeiger
    L P#2.0 // lade Zeiger mit neuer Adresse
    +D // beide Zeigeradressen addieren
    T #zeiger // und in Zeiger speichern

    L 0 // lade 0
    T #max_wert_temp // und schreibe diese in #max_wert_temp.... wird auch schon im NW1 gemacht

    mk3: NOP 1

    Danke !!!!!

    Gruß
    Rafael
    Zitieren Zitieren Maximalwert eines Analogwertes ermitteln und mitloggen  

  2. #2
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard

    Und wie ist jetzt deine Frage dazu???
    Geht nicht gibt's nicht

  3. #3
    raf77 ist offline Benutzer
    Themenstarter
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    danke für die schnelle Antwort.
    Ist meine Überlegung dahingehend richtig?

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    ich würde es so machen ... sieht doch gut aus ...

    Gruß
    Larry

    Ergänzung dazu :
    Dein Code geht davon aus, dass alle Maximalwerte immer > 0 sind. Ist dies mal nicht der Fall könntest du deine Variable auch mit einem hohen negativen Wert vorbelegen ...

  5. #5
    raf77 ist offline Benutzer
    Themenstarter
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Larry,
    danke für die Antwort!
    Ja du hast recht.... das ist ein sehr guter Tipp!
    Danke!

    Gurß
    Rafael

  6. #6
    raf77 ist offline Benutzer
    Themenstarter
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Guten Morgen zusammen,
    ich konnte nun endlich mein Teil des Programms zu Max_Wertermittlung ausprobieren. Leider funktioniert es noch nicht ganz.
    Der DB wird nur an der ersten Stelle beschrieben P#0.0. Die Zeigeradresse wird demnach nicht hochgezählt.
    Vorab, sorry für die Anfängerfragen !!!

    AWL:
    U "stop_mess_schaltschw"
    FP M610.7
    SPBN mk3

    L #DBNR_IN
    T #Nr_DB
    AUF DB [#Nr_DB]
    L P#0.0
    T #zeiger

    L #max_wert_temp
    T DBD [#zeiger]
    L #zeiger
    L P#4.0
    +D
    T #zeiger

    L 0
    T #max_wert_temp
    mk3: NOP 1

    Gruß
    Rafael
    Geändert von raf77 (29.10.2014 um 09:31 Uhr)

  7. #7
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Das Problem liegt hier

    Code:
    AUF   DB [#Nr_DB]
          L     P#0.0 
          T     #zeiger
    Bei jedem Durchlauf wird der Zeiger initialisiert.
    Das Grauen lauert in der Zwischenablage !!

  8. #8
    raf77 ist offline Benutzer
    Themenstarter
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,
    jap... wie peinlich... manchmal sieht man den Wald vor lauter Bäume nicht !

    Danke schön!!!

  9. #9
    raf77 ist offline Benutzer
    Themenstarter
    Registriert seit
    31.07.2014
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo zusammen,
    ich bin nach wie vor an meinem Problem Maxwerte in ein DB einzutragen....
    leider funtz es nicht so ganz....
    Das ist das Netzwerk in dem der DB beschreiben werden soll:

    L #DBNR_IN
    T #Nr_DB
    AUF DB [#Nr_DB]
    U "stop_mess_schaltschw"
    FP M 610.3
    SPBN mk2
    LAR1 P#0.0
    mk2: L 10
    loop: T #anzahl

    L #max_wert_temp
    T DBD [AR1,P#0.0]
    +AR1 P#4.0

    L #anzahl
    LOOP loop

    Da wie bereits erkannt der DB nur in die erste Adresse einen Wert eingetragen hat, weil das Initialisieren des Zeigers bei jedem Zyklus statt fand, habe ich versucht dieses zu umgehen. Wie im obigen AWL - code.
    Leider steigt die SPS dann mit ienem Fehler aus!
    Die Zeigeradresse soll nicht mit jedem Zyklus erhöt werden, sondern abhängig von einem Ereignis zB. einer Endlage eines Zylinders (bei mir die temp => "stop_mess_schaltschw".


    Danke im Voaus!

  10. #10
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    und für was ist dann die Schleife gut?
    Das Grauen lauert in der Zwischenablage !!

Ähnliche Themen

  1. Glättung eines Analogwertes
    Von hank12 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 27.11.2014, 21:49
  2. Suche Tool zur Darstellung eines Analogwertes
    Von bludie im Forum Suche - Biete
    Antworten: 4
    Letzter Beitrag: 22.08.2012, 15:06
  3. Länge eines UDT ermitteln
    Von Woto im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2009, 08:21
  4. Antworten: 40
    Letzter Beitrag: 08.12.2008, 13:38
  5. Adresse eines Merkers am FB ermitteln
    Von RAN im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.10.2007, 13:48

Lesezeichen

Berechtigungen

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