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

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

Thema: Flankenauswertung eines Analogsignals

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

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich brauche hilfe um den Nullduchgang, bei steigender Flanke eines 50Hz analog Signals, zu detektieren.

    Nach der Erfassung sollen eine bestimmte Anzahl an Messwerten aufgenommen und gespeichert werden bis eine neue Flanke kommt.

    Zur Verfügung habe ich eine CPU 314-6CF02 von Vipa und damit über den Speedbus verbunden die Analogebaugruppe SM331-7BF70.

    Ich habe erst vor kurzen mit Step7 angefangen daher wäre es gut wenn mögliche Lsg. etwas ausführlicher beschrieben werden.

    Danke für die Hilfe.
    Zitieren Zitieren Flankenauswertung eines Analogsignals  

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

    Standard

    Programm für dich schreiben ist nicht ...

    Aber ein Ratschlag ... kein Problem :
    Du überprüfst, ob der aktuelle Eingangswert größer als "0" ist und ob der vorherige Eingangswert <= "0" ist. Dann hast du dein Flanken-Bit. Nach jeder Auswertung (ob erfolgreich oder nicht) liest du den aktuellen Eingangswert in den Hilfsspeicher für den vorherigen Eingangswert ein ...

    Gruß
    LL

  3. #3
    Avatar von Homer1290
    Homer1290 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.04.2008
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für den Tipp Larry.

    So war das auch nicht gemeint, ich schreib schon das Programm selber!!

    Mir geht es auch in erster Linie um Anregungen und Ansätze.


    Gibt es so eine Art Interrupteingang oder -fkt. wie z.B. bei einen µcontroller? Nach der Flanken Erkennung soll möglichst schnell der erste Messwert aufgenommen werden und innerhalb von 20ms ca. 10-15 weitere Werte bevor die nächste Flanke kommt. Mein Programmteil soll in ein bestehendes Progamm eingebunden werden was eine Zykluszeit von ca. 4ms hat. Dieses Programm sollte nur kurzzeitig für die Messung unterbrochen werden oder wenn möglich zwischen zwei Messungen weiter bearbeitet werden.
    Für Tipps bin ich wieder sehr Dankbar.

  4. #4
    Registriert seit
    08.09.2006
    Beiträge
    170
    Danke
    4
    Erhielt 26 Danke für 16 Beiträge

    Standard

    Hallo,

    diese CPU-Analog-Modul Kombination hat die Fähigkeit einen
    Interrupt bei Überschreiten eines Grenzwertes zu generieren oder
    aber eine Aufzeichnung der Analogwerte innerhalb des Analogmoduls bei Überschreiten eines Grenzwertes mit bis zu 40 kHz für bis zu 64000 Werte durchzuführen (alles parametrierbar). Bei Bedarf können auch alle 8 Kanäle gespeichert werden!


    Grüße

    Longbow

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

    Standard

    Du kannst einen Zeit-Interrupt programmieren. Dafür ist der OB35 da, dessen Intervall du in der HW-Config - CPU festlegen kannst. Ich würde dir bei der CPU aber nicht empfehlen mit dem Intervall unter 4ms zu gehen (es geht aber auch 1 ms). Entscheidend hier ist, dass die Abarbeitung des OB nicht länger dauern darf, wie sein Intervall. Bei einem schnellen OB geht deine Zykluszeit aber ggf. hoch.

    Ich würde die Funktion entweder bei Bedarf freigeben oder grundsätzlich im Hintergrund mitlaufen lassen ...

    Gruß
    LL

  6. #6
    Registriert seit
    08.09.2006
    Beiträge
    170
    Danke
    4
    Erhielt 26 Danke für 16 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Du kannst einen Zeit-Interrupt programmieren. Dafür ist der OB35 da, dessen Intervall du in der HW-Config - CPU festlegen kannst. Ich würde dir bei der CPU aber nicht empfehlen mit dem Intervall unter 4ms zu gehen (es geht aber auch 1 ms). Entscheidend hier ist, dass die Abarbeitung des OB nicht länger dauern darf, wie sein Intervall. Bei einem schnellen OB geht deine Zykluszeit aber ggf. hoch.

    Ich würde die Funktion entweder bei Bedarf freigeben oder grundsätzlich im Hintergrund mitlaufen lassen ...

    Gruß
    LL
    Bei dieser CPU gehen bei aufmerksamer Programmierung auch 250 µs! (500µs realistisch wenn keine aufwendigen SFCs laufen)

    Man kann aber auch den FIFO-Mode in dem Analog Modul benutzen:
    z.B. Analogmodul zeichnet alle 100µs für alle Kanäle einen Wert auf und man fragt dann im OB35 alle 10ms alle bis dahin aufgesammelten Werte in einem Aufruf ab.
    Geändert von Longbow (04.06.2008 um 09:54 Uhr)

  7. #7
    Avatar von Homer1290
    Homer1290 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.04.2008
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Longbow Beitrag anzeigen

    diese CPU-Analog-Modul Kombination hat die Fähigkeit einen
    Interrupt bei Überschreiten eines Grenzwertes zu generieren oder
    aber eine Aufzeichnung der Analogwerte innerhalb des Analogmoduls bei Überschreiten eines Grenzwertes mit bis zu 40 kHz für bis zu 64000 Werte durchzuführen (alles parametrierbar). Bei Bedarf können auch alle 8 Kanäle gespeichert werden!


    Longbow

    Hallo Longbow,

    verstehe ich das richtig, dass ich nach einen Grenzwertalarm die letzten 10 Werte vor dem Alarm aus den internen Speicher lesen kann?
    Hast du Unterlagen wo beschrieben wird wie man das Modul parametrien muß damit es intern die Werte speichert? Im Handbuch zum Modul wird nur beschrieben das bei Grenzwertüberschreitung der OB40 aufgerufen wird und wenn ich dort den Programmcode für das messen der Werte reinschreibe wird das Hauptprogramm zu lange Unterbrochen.

    mfg Homer J.

  8. #8
    Registriert seit
    08.09.2006
    Beiträge
    170
    Danke
    4
    Erhielt 26 Danke für 16 Beiträge

    Standard

    Zitat Zitat von Homer1290 Beitrag anzeigen
    Hallo Longbow,

    verstehe ich das richtig, dass ich nach einen Grenzwertalarm die letzten 10 Werte vor dem Alarm aus den internen Speicher lesen kann?
    Hast du Unterlagen wo beschrieben wird wie man das Modul parametrien muß damit es intern die Werte speichert? Im Handbuch zum Modul wird nur beschrieben das bei Grenzwertüberschreitung der OB40 aufgerufen wird und wenn ich dort den Programmcode für das messen der Werte reinschreibe wird das Hauptprogramm zu lange Unterbrochen.

    mfg Homer J.
    Ich muss zugeben, dass ich das nicht in den beiden vorherigen Beiträgen geschrieben habe, weil ich es vergessen hatte.
    Es so etws in der Art geht aber auch:
    Es ist die sogenannte "Pretriggerung"

    Einschränkung:
    -Aufgzeichnet wird immer bis der Speicher voll ist, bei 8 Kanälen 8000 Werte pro Kanal.
    -Wenn die Aufzeichnungsfunktion aktiv ist, gibt es keinen OB40 Alarm.
    -Es gibt einen SFC, mit dem ermittelt werden kann, ob eine Flanke erkannt wurde und mann dann eine gewünschte Anzahl an Werten in die SPS holen kann.
    Als Parameter gibt es steigende/fallende Flanke, Aufzeichnungsintervall und
    Pretriggeranteil in Prozent (z.B. 10% Pretrigger bei 100µs Abtastzeit bei 8 Kanälen sind 80ms mit 800 Werten VOR dem Triggerereignis) Wenn man sich jetzt nur 10 Werte aus dem Speicher holt ist es auch ok!

    Handbuch:
    www.vipa.de
    Service, Handbücher, System 300S, SM - SPEED-Bus Signalmodule


    Bitte darauf achten, dass das Analog-Modul noch nicht zu alt ist, sonst ist ein Update notwendig.

  9. #9
    Avatar von Homer1290
    Homer1290 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.04.2008
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Oszilloskopfkt. habe ich schon ausprobiert und dort stört mich gerade die Eigenschaft das man den Speicher erst auslesen kann wenn er voll ist.
    Dazu kommt das man den Pretrigger nur ganzzahlig angeben kann,das heißt min. 1%. Bei 8 Überwachten Kanälen sind das also 80Werte. Da ich nur etwa 10-15 Werte über 20ms verteilt brauche habe ich die Zykluszeit des Moduls auf 1000µs gestellt. Dadurch ist der Speicher also erst nach 80ms voll und dann kann ich erst auslesen.Das ist einfach zu lange.
    Ich habe auch schonmal die Zykluszeit auf 25µs gestellt daduch brauche ich aber, um die 20ms ab zudecken, 400Wert. Die auszulesen hat auch zu lange gedauert und meine anschließende Effektivwertberechnug aus den Werten dauert ebenfalls länger.

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... du hast ja immer noch die Möglichkeit, dir entsprechend deiner ursprünglich formulierten Aufgabenstellung selber etwas zu erstellen ...
    Das hätte dann auch den Vorteil, dass es (irgendwann) genau das tut, was du willst ...

Ähnliche Themen

  1. Direkte Flankenauswertung eines Eingangs
    Von Paule im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 11.10.2011, 00:12
  2. Spitzenwerte eines Analogsignals herausfiltern
    Von Alex vs. SPS im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 17.01.2010, 17:18
  3. Flankenauswertung in AWL
    Von NW-Trader im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 06.10.2008, 13:33
  4. Flankenauswertung mit Graph
    Von Mujo im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.09.2007, 18:57
  5. PNOZmulti - Flankenauswertung
    Von Onkel Dagobert im Forum Sonstige Steuerungen
    Antworten: 18
    Letzter Beitrag: 29.03.2006, 21:54

Lesezeichen

Berechtigungen

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